Bases de Datos NoSQL

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 25

BASE DE DATOS NOSQL

INTEGRANTES
Quispe Ticona, Pablo Alexander
Rojas Orihuela, Kevin Gustavo
Sambrano Aranda, Carlos Alfredo
Sanchez Parvina, Kevin Humberto
Santisteban Condori, Susan Karina
Villanueva Fernández, Alejandro Antonio
Yupanqui García, Andy Ander

DOCENTE
Espinoza Domínguez, Robert Elias

CURSO
Base de Datos II

Lima 5 de julio del 2018


1. Reseña de la tecnología:

Cuando hablamos de base de datos NoSQL nos referimos a una amplia


clase de sistemas de gestión de datos que difieren, en aspectos
importantes, del modelo clásico de relaciones entre entidades existentes
en los SGBDR, siendo el más destacado el que no usan SQL como
lenguaje principal de consulta.

El termino NoSQL fue acuñado en 1998 por Carlo Strozzi y retomado en


2009 por Eric Evans quien sugiere mejor referirse a esta familia de base
de datos de nueva generación como “Big Data” mientras que considera
ahora que NoREL es un mejor nombre estas bases de datos.

Aunque son conocidas desde la década de los 60 del pasado siglo, su


auge actual es por el uso que le han dado las principales compañías de
internet como Amazon, Google, Twitter y Facebook.

2. Características:
 Consistencia Eventual:
 Flexibilidad en el esquema
 Escalabilidad horizontal
 Estructura distribuida
o Particionado
o Replica
 Tolerancia a fallos y Redundancia
o Base de datos de Documentos:
CouchDB, MongoDB, Terrastore, ThruDB, OrientDB, RavenDB,
Citrusleaf, SisoDB, CloudKit, Perservere, Jackrabbit
o Almacenamiento Clave-Valor:
Azure Table Storage, MEMBASE, Riak, Redis, Chordless,
GenieDB, Scalaris, Tokyo Cabinet / Tyrant, GT.M, Keyspace,
Berkeley DB, MemcacheDB, HamsterDB, Faircom C-Tree,
Mnesia, LightCloud, Pincaster, Hibari, Scality
o Base de datos Columnar(o Columna ancha)
o Bases de datos de grafos.
En comparación con las bases de datos relacionales, las bases de datos NoSQL
son más escalables y ofrecen un mayor rendimiento, y su modelo de datos
resuelve varios problemas que el modelo relacional no está diseñado para
resolver:

 Grandes volúmenes de datos estructurados, semiestructurados y no


estructurados que cambian rápidamente.
 Programación orientada a objetos que es más fácil de usar y flexible
 Arquitectura de escalamiento geográficamente distribuido en lugar de
arquitectura costosa y monolítica.

3. Descargar, instalación, configuración:


a. Descarga de MongoDB:
i. Ir a la página de MongoDB https://www.mongodb.com/
ii. Seleccionar la opción Get MongoDB

iii. Escoja su Sistema operativo junto a la arquitectura que tiene


y después descargue el ejecutable
Después de haber descargado el ejecutable procedemos a la instalación
b. Instalación de MongoDB:
4. Implementación Interna
5. Aspectos de performance, escalamiento.

Una base de datos relacional focaliza su interés en la fiabilidad de las


transacciones bajo el conocido principio ACID, acrónimo de Atomicity,
Consistency, Isolation and Durability (Atomicidad, Consistencia,
Aislamiento y Durabilidad). Bajo esas propiedades se pretende que una
transacción sobre una base de datos siempre se complete o no
(atomicidad), que los datos se mantengan en estado válido en todo
momento (consistencia), que sea independiente (aislamiento) y que sea
permanente frente a fallos del sistema (durabilidad).

El principio ACID aporta una robustez que colisiona con el rendimiento y


operatividad a medida que los volúmenes de datos crecen.

• Asegurar que la trasacción se realice o no, sin


Atomicity quedar a medias ante fallos.

• Asegurar el estado de validez de los datos en


Consistency todo momento.

Isolation • Asegurar independencia entre transacciones.

• Asegurar la persistencia de la transacción ante


Durability cualquier fallo.

No cabe duda de que la forma en que las aplicaciones web tratan los
datos, ha cambiado de forma significativa durante la última década. Cada
vez se recopilan más datos y cada vez son más los usuarios que acceden
a estos datos al mismo tiempo. Esto significa que la escalabilidad y el
rendimiento se han convertido en auténticos retos para las bases de datos
relacionales basadas en esquemas.
El problema de la escalabilidad de SQL fue reconocido por empresas Web
2.0, con grandes necesidades de datos e infraestructura, como Google,
Amazon y Facebook. Ellos solos tuvieron que buscar soluciones propias
a este problema, con tecnologías como BigTable, DynamoDB, y
Cassandra.

Este interés creciente dio lugar a una serie de sistemas de gestión de


base de datos NoSQL (DBMS), con un enfoque en el rendimiento, la
fiabilidad y la coherencia. Se reutilizaron y mejoraron varias estructuras
de indexación existentes con el propósito de mejorar la búsqueda y el
rendimiento de lectura.

En primer lugar, había tipos de bases de datos NoSQL (de origen


cerrado), desarrolladas por grandes empresas para satisfacer sus
necesidades específicas, como BigTable de Google, que se cree es el
primer sistema NoSQL y DynamoDB de Amazon.

El éxito de estos sistemas patentados, inició el desarrollo de varios


sistemas de bases de datos de código abierto y de propietarios similiares
siendo los más populares Hypertable, Cassandra, MongoDB, DynamoDB,
HBase y Redis.

6. Usos de la tecnología.
A día de hoy existen unos 150 sistemas de bases de datos NoSQL. Elegir
uno de ellos puede ser muy difícil, ya que ninguno ha obtenido todavía la
fama que sí han conseguido las bases de datos relacionales.

Aunque hay varias aproximaciones diferentes para clasificar las bases de


datos NoSQL (Teorema CAP, basándonos en el modelo de datos etc.),
en general se considera que existen cuatro tipos diferentes:

 Orientadas a documentos

Son aquellas que gestionan datos semi estructurados, es decir


documentos. Estos datos son almacenados en algún formato estándar
como puede ser XML, JSON o BSON.
Son las bases de datos NoSQL más versátiles. Se pueden utilizar en
gran cantidad de proyectos, incluyendo muchos que tradicionalmente
funcionarían sobre bases de datos relacionales.

o MongoDB: probablemente la base de datos NoSQL más famosa


del momento. Algunas compañías que actualmente utilizan
MongoDB son Foursquare o eBay.
o CouchDB: es la base de datos orientada a documentos de
Apache. Una de sus interesantes características es que los
datos son accesibles a través de una API Rest. Este sistema es
utilizado por compañías como Credit Suisse y la BBC.

 Orientadas a columnas

Este tipo de bases de datos están pensadas para realizar consultas y


agregaciones sobre grandes cantidades de datos. Funcionan de forma
parecida a las bases de datos relacionales, pero almacenando
columnas de datos en lugar de registros.

o Cassandra: incluida en esta sección, aunque en realidad sigue


un modelo híbrido entre orientada a columnas y clave-valor. Es
utilizada por Facebook y Twitter (aunque dejaron de usarla para
almacenar tweets).
o HBase. Escrita en Java y mantenida por el Projecto Hadoop de
Apache, se utiliza para procesar grandes cantidades de datos.
La utilizan Facebook, Twitter o Yahoo.

 De clave valor

Estas son las más sencillas de entender. Simplemente guardan tuplas


que contienen una clave y su valor. Cuándo se quiere recuperar un
dato, simplemente se busca por su clave y se recupera el valor.
o DynamoDB: desarrollada por Amazon, es una opción de
almacenaje que podemos usar desde los Amazon Web
Services. La utilizan el Washington Post y Scopely.
o Redis: desarrollada en C y de código abierto, es utilizada por
Craiglist y Stack Overflow (a modo de caché).

 En grafo

Basadas en la teoría de grafos utilizan nodos y aristas para representar


los datos almacenados. Son muy útiles para guardar información en
modelos con muchas relaciones, como redes y conexiones sociales.

o Infinite Graph: escrita en Java y C++ por la compañía


Objectivity. Tiene dos modelos de licenciamiento: uno gratuito y
otro de pago.
o Neo4j: base de datos de código abierto, escrita en Java por la
compañía Neo Technology. Utilizada por compañías como HP,
Infojobs o Cisco.

7. Empresas y/o Organizaciones que la utilizan:


 Cassandra: Facebook, Twitter.
 HBase: Yahoo, Adobe
 Redis: Flickr, Instagram, Github.Snapchat, Craigslist, Digg,
StackOverflow, Pinterest, Weibo.
 Neo4j: Infojobs, Grapheverywhere, Ebay, Walmart, UBS, Monsanto, IBM,
Volvo, Previa, Die Bayerische, novo nordisk, Fortune 50 Retailer, NASA,
atpco, CISCO, Swiss, Telia, Airbnb, Zurich, StarHub, Medium, Cerved.
 MongoDB: FourSquare, SourceForge, CERN, Sprinklr, Urban Outfitters,
Square Enix, Washington Post, Mintigo, Departamento de asuntos de los
veteranos de EE.UU.

8 Ejemplos de diseño de Esquema

Ejemplo de diseño de esquema:


4.1 Vista general de árbol:
Como muestra la Figura 6, esta vista consiste de un árbol que tiene tres ramas
etiquetadas como Schema, Inverted Index y Entities. Schema lista todas las
entidades raíz con sus esquemas de versión, y para cada uno de ellos se listan
los esquemas agregados o referenciados. En la Figura 6 se muestra que Movie
tiene 5 versiones y para cada una se muestran los esquemas referenciados
desde su esquema versión. Inverted Index contiene un índice inverso de
versiones, de modo que dado un esquema de version raíz o embebido (por
ejemplo, Director_1 ) es posible acceder a todos los esquema de versión raíz
en los que es referenciado (por ejemplo, Movie_1 ); Entities muestra todas las
entidades existentes tanto las raíz como las embebidas, y para cada una de
ellas lista sus versiones, y para cada versión muestra sus propiedades y tipos.
Por tanto esta rama visualiza lo que hemos denominado esquema de versiones
completo de la base de datos. Como representación visual se ha optado por
diseñar un estilo compuesto por una etiqueta descriptiva y un icono distintivo
con el fin de que el usuario pueda, de un vistazo, identificar el elemento que
visualiza.
 Las entidades se representan con un icono púrpura pálido con la letra ‘E’ y
como etiqueta el nombre de la entidad.
 Para las versiones se ha creado un icono amarillo con las iniciales ‘EV’ y
como etiqueta el nombre de la entidad a la que pertenece la versión
seguido del número de versión.
 Para los esquemas de versión se ha creado un icono que simboliza una
raíz y una etiqueta que informa de qué versión es la versión raíz de dicho
esquema.
 Para los agregados y las referencias se han diseñado unos iconos con
forma de flecha y colores azul y púrpura oscuros, con etiquetas que
informan tanto del nombre de la asociación como del destino de la misma.
 Para los atributos primitivos y tuplas se han creado unos iconos rosáceos
de pequeño tamaño y etiquetas que denotan el tipo o tipos primitivos a los
que se hace referencia, y el nombre de los mismos.
La escala cromática y las etiquetas se han conservado en todas las vistas
desarrolladas para facilitar la uniformidad de las mismas y el proceso de
aprendizaje al usuario. A partir de la vista de árbol general se puede acceder al
resto de diagramas a partir de menús contextuales. A continuación
comentaremos cada uno de ellos.
Figura 6: Vista general de árbol sobre Movies.xmi.
4.2 Diagrama del Esquema global
El diagrama del esquema global recoge la información de la rama Entities del
árbol general. Por tanto, este diagrama muestra el esquema de versiones
completo. La forma del diagrama es similar a los diagramas de clases de UML,
como se observa en la Figura 7. Su objetivo es mostrar de un vistazo qué
entidades incluye un esquema, cuántas versiones existen de cada una de estas
entidades, qué atributos tiene cada versión y cómo se relacionan las versiones
a través de las relaciones de referencia y agregación.
Figura 7: Visualización del esquema global de Movies.xmi.
4.3 Diagrama de esquema de versión
Se ofrecen dos tipos de diagramas para mostrar los esquemas de una versión
raíz: plano y anidado. Las dos representaciones difieren en cómo se
representan relaciones entre los esquemas directamente relacionados. En el
diagrama plano (Figura 8) estas relaciones se muestran visualmente como
flechas, de una forma similar al diagrama global del esquema. En el diagrama
anidado (Figura 9), en cambio, los esquemas que corresponden a una relación
de agregación en el esquema raíz se muestran anidados en el interior de éste.
Para el diseño de estos diagramas se ha optado por aplicar muchas decisiones
de diseño del diagrama anterior. Por ejemplo, se ha mantenido la misma
representación para entidades, un color violeta pálido y la etiqueta de cada
entidad se forma con su nombre. Mientras en el diagrama plano las relaciones
se distinguen etiquetando las flechas con references o aggregates, en el
diagrama anidado las relaciones se expresan físicamente en el interior de la
versión raíz que las referencia. Esto hace que la vista anidada resulte más
compacta y muestre más claramente el nivel de anidamiento de los elementos
asociados.

Figura 8: Un diagrama de versión de esquema plano de Movies.xmi.

Figura 9: Un diagrama de versión de esquema con anidación de Movies.xmi.

4.4 Diagrama de entidad:


Un diagrama de entidad muestra visualmente los esquemas versión de una
entidad como rectángulos anidados dentro de un rectángulo que representa la
entidad, como muestra la Figura 10. En ella se observa que la entidad Criticism
tiene dos versiones y se muestran sus esquemas, por ejemplo Criticism_1
agrega un esquema Media. Por tanto, estos diagramas representan lo que
hemos definido como un esquema de entidad.

Figura 10: Un diagrama de entidad de Movies.xmi

9. Manipulación de datos (Insert, update, delete, creación de índices,


etc.)

La manipulación de datos los haremos en la base de datos NoSQL


MongoDB que es una base de datos documental la cual guarda una
colección de documentos en formato BSON.

En MongoDB no existe ningún comando estilo create database, ni


nada así, lo que hace mongodb es crear una colección (base de datos) en
el momento que se le inserta un objeto o documento(registro de una tabla
por llamarlo de alguna forma) a dicha colección.

Previo creamos la bd al en mongo


Creamos el documento alumnos a la vez que insertamos

Insert:
db.alumnos.insertOne() // inserta un solo documento en una colección
El siguiente ejemplo inserta un nuevo documento en la colección persona.
Si el documento no declara un _idcampo, MongoDB agrega el _idcampo
con un valor ObjectId al documento nuevo.

Nos muestra que se insertó satisfactoriamente

Update:

Métodos para actualizar documentos de una colección:

En la inserción creamos un atributo código para poder identificarlo al


momento de actualizar o eliminar

 db.collection.updateMany(<filter>, <update>, <options)


Read:

Usamos el comando find para encontrar en el documento y pretty es para


darle mostrarlo con un formato

Delete:

Usamos el comando remove para eliminar y pasamos como parámetro lo


que identifica en este caso el atributo código

10. Acceso a dato con Java u otro lenguaje de programación


Para conectarnos con Java a mongo db usaremos el IDE Netbeans y después
de crear un proyecto agregamos el jar de mongoDB
Creamos nuestra método static que nos conectara
Creamos un objeto conexión de tipo Mongocliente
Luego un objeto mongoLogger de tipo Logger para usar las clases o métodos
del JAR mongoDB

Método insertarAlumno el cual recibe 4 parámetros para insertar en el


documento de mongoDB creamos un objeto de tipo BasicDBOject y
procedemos a insertar los atributos.
Método ModificarAlumno pasamos dos parámetros
Bibliografía:
https://blogs.oracle.com/spain/qu-es-una-base-de-datos-nosql
https://www.mongodb.com/nosql-explained
https://www.acens.com/wp-content/images/2014/02/bbdd-nosql-wp-acens.pdf
https://www.researchgate.net/publication/304216502_Bases_de_datos_NoSQL
https://blog.pandorafms.org/es/bases-de-datos-nosql/

Por ver
https://blog.pandorafms.org/es/bases-de-datos-nosql/

También podría gustarte