NOSQL 2.pdf
Document Details
Uploaded by Itan
Universidad Internacional de La Rioja
Tags
Full Transcript
Tema 2 Métodos de Captura y Almacenamiento de los Datos NoSQL © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 2.1. Introducción y objetivos 4 2.2. Descripción y tipos de bases de datos NoSQL 5 2.3. Teorema CAP 8 2.4. Elección de base de datos: NoSQL vs. SQL 10 2.5. Base...
Tema 2 Métodos de Captura y Almacenamiento de los Datos NoSQL © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 2.1. Introducción y objetivos 4 2.2. Descripción y tipos de bases de datos NoSQL 5 2.3. Teorema CAP 8 2.4. Elección de base de datos: NoSQL vs. SQL 10 2.5. Bases de datos NoSQL 13 A fondo 23 Test 27 Se utiliza para tipificar las bases de datos NoSQL También llamado teorema de Brewer, señala que todo sistema distribuido no puede garantizar a la vez que haya consistencia, disponibilidad y tolerancia a particiones (consistency-availabilitypartition tolerance). Teorema CAP Las bases de datos NoSQL pueden categorizarse en cuatro grupos: - Clave-valor simples. - Clave-valor sofisticadas. - Basadas en documentos. - Basadas en grafos. Relaciones que se crean en MongoDB: - Relaciones entre documentos uno a uno. - Relación uno a muchos con documentos embebidos. - Relación uno a muchos con documentos referidos. Patrones de diseño: MongoDB es un buen ejemplo de base de datos NoSQL que aplica relaciones entre documentos para aprovechar la utilidad de los modelos relacionales, sin llegar a ser un relacional en toda regla. Desventajas: - La falta de madurez, en algunos casos, es un problema porque lleva consigo escasa documentación y comunidades de usuarios muy reducidas. - Problemas de compatibilidad con otras herramientas, aunque esto es un problema que tiende a desaparecer debido a la apuesta que hacen las grandes compañías al integrar este tipo de productos en sus servicios. NoSQL: - Es una tecnología que se lleva utilizando desde los años 60, aunque el nombre fue acuñado en 2009. - Las bases de datos NoSQL se caracterizan por su escalabilidad horizontal y sencillez, evitan cuellos de botella, permiten manejar grandes volúmenes de datos y su puesta en funcionamiento es más asequible. El movimiento NoSQL incluye todas las bases de datos con arquitectura distinta a la utilizada en sistemas relacionales tradicionales. Tipos NoSQL vs. SQL NoSQL Definición © Universidad Internacional de La Rioja (UNIR) El formato de almacenamiento es BSON. Es una base de datos basada en documentos, la cual almacena los datos en esta estructura. El conjunto de documentos se denomina colecciones y el conjunto de estos conforman Instalación la base de datos. sobre Linux y Windows MongoDB Es una base de datos basada en grafos, compatible con ACID. Es accesible desde software escrito en otros lenguajes usando Cypher Query Language, a través de un punto HTTP transaccional. Neo4J Es una base de datos distribuida de código abierto escrita en Java. Todos sus nodos actúan por igual, agrupándose en anillos. Permite sistemas de réplicas y el acceso a los datos se hace a través de CQL. Apache Cassandra Cada base de datos siguiente corresponde a un tipo de NoSQL Bases de datos NoSQL Esquema Métodos de Captura y Almacenamiento de los Datos Tema 2. Esquema 3 Ideas clave 2.1. Introducción y objetivos Para estudiar este tema se deben leer las Ideas clave que se encuentran a continuación. La mayoría de la literatura relacionada con este sistema se encuentra en inglés, por lo que no es necesario que leas la bibliografía recogida en la sección A fondo, pero sí se sugiere revisarla. Este tema sirve de introducción a las bases de datos categorizadas como NoSQL. Además de explicar algunos de los conceptos básicos de NoSQL, se introducen algunos de los motores de bases de datos más importantes actualmente. Se recomienda acceder a los enlaces del fabricante si se quiere tener un conocimiento mayor de cada uno de ellos. Como en la mayoría de asignaturas relacionadas con herramientas de desarrollo, la mejor manera de estudiar este tema es mediante la realización de ejercicios. La generación de grandes cantidades de datos en varias industrias se ha manifestado en el movimiento y término big data. Entre las implicaciones de este movimiento se encuentra la creciente demanda de sistemas de gestión de bases de datos, que permita manejar grandes cantidades de datos. Hasta hace algunos años, esta demanda se satisfacía mediante el uso de DBMS © Universidad Internacional de La Rioja (UNIR) relacionales en arquitecturas distribuidas, además de un constante análisis de rendimiento. Esta solución se ha quedado corta en algunos casos, por lo que han empezado a surgir nuevas propuestas que se alejan de los típicos sistemas de bases de datos relacionales. En temas posteriores se estudiará con mayor detalle el uso de diferentes bases de datos comúnmente llamadas NoSQL. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 4 Los objetivos que se cubren con en este tema son los siguientes: Comprender los conceptos que describen las bases de datos NoSQL. Diferenciar una base de datos NoSQL y una SQL. Entender el teorema CAP y usarlo como parte del argumento para elegir una base de datos NoSQL como parte de una solución. Diferenciar las bases de datos NoSQL por su tipología. Conocer las principales bases de datos NoSQL del mercado. 2.2. Descripción y tipos de bases de datos NoSQL El término NoSQL se definió en 2009 con el fin de agrupar todas aquellas bases de datos no relacionales que estaban ganando popularidad en ese momento. El término NoSQL hace alusión a métodos de almacenamiento no necesariamente estructurados, cuyo lenguaje de consulta «no es SQL» o «no solo es SQL», «Not only SQL». Historia del paradigma NoSQL Aunque se habla mucho de NoSQL actualmente, no es una tecnología tan nueva como la gente se piensa. El nombre NoSQL fue utilizado por Carlo Strozzi en 1998 como nombre de la base de datos basada en archivos que estaba desarrollando. Irónicamente, esta base de datos relacional era solo una interfaz SQL, por lo que no © Universidad Internacional de La Rioja (UNIR) forma parte del movimiento NoSQL actual. El término volvió a surgir en 2009, cuando Eric Evans lo utilizo para referirse al continuo aumento de bases de datos no relacionales. Aunque el nombre naciera en 2009, las bases de datos NoSQL se remontan a la época de las bases de datos de red y jerárquicas y una serie de productos no relacionales que resolvían problemas que nada tienen que ver con los de Amazon, YouTube, Facebook, Twitter, Netflix o Yahoo. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 5 Las bases de datos MultiValue fueron desarrolladas por TRW en 1965. En 1966 se desarrolló en el Hospital Mass General un lenguaje de programación que incorpora una base de datos jerárquica con almacenamiento de árbol B+. En ese mismo año, IBM IMS con Rockwell y Caterpillar desarrollaron una base de datos jerárquica para el programa espacial Apolo. A lo largo de los años, son muchas las bases de datos que han ido surgiendo, pero si algo ha contribuido al desarrollo de los productos NoSQL, ha sido la serie de papers publicados por Google entre 2003 y 2006 sobre cómo construir una infraestructura escalable para el procesamiento paralelo de grandes volúmenes de datos, que originó Hadoop (y luego Hadoop MapReduce de Yahoo). Más tarde, en 2007 Amazon liberó su servicio de base de datos NoSQL, DynamoDB, con un modelo de datos clave-valor de alta disponibilidad. En 2012, la cantidad de bases de datos NoSQL ha llegado a ser superior a 120 y cada año están saliendo más y más, con el fin de ocupar su lugar en el mercado o creándose con la necesidad de suplir unas características específicas. Categorías conocidas Las bases de datos NoSQL pueden clasificarse en cuatro grandes categorías: Almacenes de clave-valor simples. Como su nombre indica, utilizan una clave para acceder a un valor en específico. Los valores almacenados se manejan como arrays de bytes, es decir, sin ningún esquema específico asignado. Su aplicación es común © Universidad Internacional de La Rioja (UNIR) en sistemas de caché. Uno de los sistemas más conocidos en esta categoría es memcached, el cual es el sistema de facto para la gestión de caché de datos en aplicaciones web. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 6 Almacenes de clave-valor sofisticados. Estos sistemas son un refinamiento de la categoría anterior con el objetivo de permitir operaciones de lectura y escritura más complejas, así como un modelo de datos ligeramente más elaborado. Ejemplos de sistemas en esta categoría son Cassandra, Dynamo, Voldemort y Riak. Almacenes de documentos. Los sistemas dentro de esta categoría permiten almacenar estructuras de datos relativamente complejas. Las implementaciones más conocidas en este grupo son CouchDB y MongoDB, la cual se estudiará con más detalle. Almacenes de grafos. Las bases de datos que entran en esta categoría son las que almacenan la información en estructuras de grafos, cuyos nodos representan la información y las aristas, sus relaciones. Las bases de datos de grafos brindan la facilidad de consultar su información aplicando teoría de grafos. Dicha teoría comprende un gran número de algoritmos conocidos, que optimizan el recorrido de todos los elementos del grafo (la base de datos), ofreciendo así una navegación mucho más eficiente que las bases de datos relacionales. Algunas implementaciones conocidas son InfoGrid, Virtuoso y Neo4j. Existe otro tipo de bases de datos llamadas multimodelos, las cuales combinan características de los cuatro tipos antes descritos. Esta unión de características les permite ofrecer una variedad de funcionalidades muy útiles de cara a la explotación de la información. © Universidad Internacional de La Rioja (UNIR) El hecho de que soporten varios modelos amplía la forma de interactuar con los datos, independientemente del modelo de datos que se esté utilizando. Esto último brinda a los desarrolladores flexibilidad a la hora de construir sus aplicaciones dentro de la compañía, sin preocuparse de las características del dato. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 7 Dentro de este tipo de bases de datos se encuentra Redis. Redis es una base de datos NoSQL multimodelo que permite búsquedas, mensajería, transmisión, grafos y otras capacidades más allá de las que ofrece un simple almacén de datos. 2.3. Teorema CAP En el apartado anterior se describieron las cuatro grandes categorías que engloban a las bases de datos NoSQL, según la forma de almacenar la información. Existen también otras características que describen aspectos claves del motor de base de datos, tales como que sea escalar (que pueda crecer sin mayores contratiempos) y que además trabaje en entornos distribuidos. Las bases de datos NoSQL fueron diseñadas precisamente para ser escalables y distribuidas, es por ello que al mencionarlas no se debe pasar por alto un teorema importante que las define según sus capacidades y limitaciones. Teorema CAP El teorema CAP, o también llamado teorema Brewer, indica que todos los sistemas distribuidos no pueden garantizar a la vez que haya consistencia, disponibilidad y tolerancia a particiones (consistency-availability-partition tolerance). Estas tres características se definen a continuación: © Universidad Internacional de La Rioja (UNIR) Consistencia: sin importar qué servidor reciba la petición, cuando se realiza una consulta o se hace una inserción, el sistema siempre debe devolver la misma información de respuesta. Disponibilidad: la caída de uno o más nodos no debe ser un impedimento para que los clientes puedan leer y escribir peticiones. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 8 Tolerancia a particiones: hace referencia al hecho de que el sistema tiene que seguir funcionando, aunque existan fallos o caídas parciales que dividan el sistema. La división por particiones es una característica de los sistemas distribuidos que permite canalizar grandes flujos de peticiones. Un ejemplo común de ello son las grandes organizaciones como Netflix, Amazon y Google, entre otras, las cuales crean divisiones geográficas con las que reparten las peticiones de determinas regiones. Si una región de estas cae, el sistema no debe caer en su totalidad. Bases de datos NoSQL según el teorema CAP Las bases de datos NoSQL utilizan diferentes mecanismos para conseguir ser escalables y distribuidas. La variedad de estos mecanismos hace que no todas © Universidad Internacional de La Rioja (UNIR) cumplan los principios del teorema CAP. Figura 1. Las bases de datos NoSQL y su relación con el Teorema CAP. Según sus capacidades, es posible ver cómo las distintas bases de datos cumplen al menos dos de los criterios indicados por el teorema CAP. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 9 CA: garantizan la consistencia y la disponibilidad en la base de datos, pero no suelen ser óptimas al manejar la tolerancia a particiones. Para cubrir esta deficiencia, lo que suelen hacer es replicar los datos. AP: garantizan la disponibilidad y la tolerancia a particiones, pero no suelen ser buenas tratando la consistencia. Determinados motores logran una consistencia parcial mediante técnicas de replicación y verificación. CP: garantizan la consistencia y la tolerancia a particiones, pero sacrifican la disponibilidad al replicar los datos entre los distintos nodos con el fin de asegurar la consistencia. Esta clasificación no siempre será igual para todas las bases de datos NoSQL. Cada cierto tiempo, las actualizaciones de estos productos mejoran las funcionalidades y ofrecen mayores ventajas al usuario con el fin de poder acompañarle en distintas áreas de negocio. 2.4. Elección de base de datos: NoSQL vs. SQL Uso de NoSQL vs. usos de SQL Se puede decir que las bases de datos tradicionales son las bases de datos relacionales, que usan un lenguaje estándar para su manipulación y gestión. Su éxito © Universidad Internacional de La Rioja (UNIR) se basa en que es una solución para los problemas de gestión y estructuración de la información de las organizaciones, con un fundamento matemático muy fuerte, lenguaje estandarizado con metodologías estructuradas para el diseño de los sistemas de información y con principios de diseño como la regla ACID (Atómica Consistente Aislada y Durable). Estas plataformas tienen muchas herramientas desarrolladas. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 10 Las NoSQL son un conjunto de bases de datos que no se ajustan al modelo de base de datos relacional y se caracterizan por no tener esquema, por no utilizar SQL ni permitir joins, por no garantizar la propiedad ACID, por escalar horizontalmente, por hacer uso amplio de la memoria principal del ordenador, por resolver el problema de los altos volúmenes de información y la inmensa cantidad de consultas y transacciones diarias; en resumen, no son relacionales. Una de las características de NoSQL, como ya se ha dicho antes, es la flexibilidad que proporciona para el uso de modelos de datos, la cual permite tener registros con modelos diferentes. Se puede disponer de registro en el que el atributo «color» aparezca o exista y de registros similares que no contengan dicho atributo, y en otros casos que el atributo sea un array o una cadena de caracteres, sin que ocasione ningún tipo de error en base de datos. El gran problema que tiene esta flexibilidad es la capacidad de introducir errores tanto de desarrollo como de insertado, por lo que el programador tiene una alta responsabilidad al lidiar con los datos, ya que de no hacerlo correctamente dará lugar a alteraciones del modelo que generen errores en la aplicación. Como punto a favor de esta y otras características, mejoran mucho el rendimiento, principal característica de las arquitecturas NoSQL, pero esto no significa que los datos no respondan a un modelo fijo si así se quiere. A continuación, se enumeran una serie de ventajas de las bases de datos NoSQL: © Universidad Internacional de La Rioja (UNIR) Responden a la necesidad de escalabilidades horizontal demandada cada vez por más empresas y, además, de manera sencilla. No generan cuellos de botella. Permiten manejar grandes volúmenes de datos. Se pueden tener diferentes bases de datos NoSQL para diferentes proyectos. Equipos económicos para la puesta en marcha. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 11 Por el contrario, tiene una serie de desventajas que según la necesidad hacen de su utilización más o menos conveniente: Aunque esté cambiando esta premisa, no ofrecen tanto soporte y nombre como lo hacen bases de datos como Oracle, IBM o Microsoft. Generalmente un vendedor de código abierto no tiene el alcance global, servicios de soporte y la credibilidad de Oracle o IBM. No están lo suficientemente maduras para algunas empresas. Limitaciones de inteligencia de negocios. Por el momento, las bases de datos NoSQL no tienen buena aceptación con las herramientas de BI, lo que origina que una consulta ad hoc y su análisis implica conocimientos avanzados de programación. Sin embargo, esta tendencia está cambiando, por ejemplo, Quest Software ha creado Toad para bases de datos en la nube, que proporciona capacidades de consulta ad hoc para algunas bases de datos NoSQL. La falta de experiencia. Debido a que NoSQL es una tecnología novedosa, no hay una gran cantidad de desarrolladores y administradores que la dominen. Esto hace difícil a las empresas encontrar personas con los conocimientos técnicos apropiados. Problemas de compatibilidad. A diferencia de las bases de datos relacionales, que comparten ciertos estándares, las bases de datos NoSQL tienen pocas normas en común. Cada base de datos NoSQL tiene su propia API, las interfaces de consultas © Universidad Internacional de La Rioja (UNIR) son únicas y tienen peculiaridades. Esta falta de normas hace difícil el cambio de unos proveedores a otros. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 12 2.5. Bases de datos NoSQL Cassandra Apache Cassandra es una base de datos NoSQL distribuida de código abierto escrita en Java. Está basada en un modelo de almacenamiento clave-valor y se caracteriza en que los nodos que componen el sistema de datos, actúan por igual agrupándose en un anillo o clúster. La escalabilidad es lineal y basta con añadir un nuevo nodo al anillo. Permite configurar un sistema de réplicas creando redundancia en sus nodos. El modelo de datos de Cassandra se compone de: Esquema: se encarga del control de acceso y es equivalente a una base de datos. Tablas: se compone de un mapa de filas. Una primera tabla define los nombres de las columnas y el tipo de datos que almacenan y las aplicaciones cliente proporcionan las filas siguiendo el esquema de la tabla. Tipos de datos: ascii, boolean, blob (contenido de bytes arbitrario), composite, © Universidad Internacional de La Rioja (UNIR) counter, timestamp, decima, double, float, int, variant, bigint, text, carchar, uuid. Filas: la primera columna una clave de partición. Columnas: están compuestas de un timestamp y un par clave-valor. Cassandra Query Language (CQL) es el lenguaje utilizado para proporcionar acceso a datos y es una simplificación del lenguaje SQL. Se puede interactuar con los datos a través de Shell, con herramientas gráficas como devCenter o a través de drivers disponibles para la mayoría de los lenguajes de programación. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 13 A continuación, se detallan algunas características que reporta el fabricante: Probado: Cassandra es utilizado en empresas como Constant Contact, CERN, Comcast, eBay, GitHub, GoDaddy, Hulu, Instagram, Intuit, Netflix, Reddit, The Weather Channel y más de 1500 empresas más que tienen conjuntos de datos grandes y activos. Tolerante a fallo: los datos se replican automáticamente en varios nodos para tolerancia a fallos. Se admite la replicación en varios centros de datos. Los nodos fallidos se pueden reemplazar sin tiempo de inactividad. Rendimiento: una de las principales ventajas son sus resultados en benchmarks y aplicaciones reales, principalmente debido a las opciones arquitectónicas fundamentales. Descentralizado: no hay puntos únicos de fracaso. No hay cuellos de botella en la red. Cada nodo del clúster es idéntico. Escalable: algunos de los mayores despliegues en entornos de producción son el de Apple, con más de 75 000 nodos almacenando más de 10 PB de datos, Netflix (2500 nodos, 420 TB, más de 1 billón de solicitudes por día), Easou (270 nodos, 300 TB, más de 800 millones de solicitudes por día) y eBay (más de 100 nodos, 250 TB). Durable: Cassandra es adecuado para aplicaciones que no pueden darse el lujo de © Universidad Internacional de La Rioja (UNIR) perder datos, incluso cuando se cae un centro de datos entero. Control: se puede elegir entre replicación síncrona o asíncrona para cada actualización. Las operaciones asíncronas altamente asequibles se optimizan con funciones como Hinted Handoff y Read Repair. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 14 Elástico: El rendimiento de lectura y escritura aumenta de forma lineal a medida que se agregan nuevas máquinas, sin interrupciones ni interrupciones en las aplicaciones. Apoyado profesionalmente: los contratos y servicios de soporte de Cassandra están disponibles a través de terceros. Neo4j Es un sistema de gestión de base de datos basada en grafos, desarrollado por Neo Technology, Inc en Java lanzada en febrero del 2010. Descrito por sus desarrolladores como una base de datos transaccional compatible con ACID con almacenamiento y procesamiento de grafos nativos. Un grafo se compone de dos elementos: un nodo y una relación. Cada nodo representa una entidad (una persona, un lugar, una cosa, una categoría u otra pieza de datos) y cada relación representa cómo se asocian dos nodos. Esta estructura de propósito general permite modelar todo tipo de escenarios, desde un sistema de carreteras hasta una red de dispositivos, la historia médica de una población o cualquier otra cosa definida por las relaciones. Una base de datos de grafos es un sistema de gestión de bases de datos en línea con operaciones Create, Read, Update y Delete (CRUD) que trabajan en un modelo de datos de grafos. A diferencia de otras bases de datos, las relaciones tienen prioridad en las bases de datos de grafos. Esto significa que su aplicación no tiene que inferir © Universidad Internacional de La Rioja (UNIR) conexiones de datos usando cosas como claves externas o procesamiento fuera de banda, como MapReduce. El modelo de datos para una base de datos de grafos también es significativamente más simple y más expresivo que los de bases de datos relacionales u otras bases de datos NoSQL. Las bases de datos de grafos están diseñadas para utilizarse con Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 15 sistemas transaccionales (OLTP) y están diseñadas teniendo en cuenta la integridad transaccional y la disponibilidad operativa. Dos de las propiedades más importantes de esta tecnología son: Almacenamiento de grafos: algunas bases de datos de grafos utilizan almacenamiento nativo diseñado específicamente para almacenar y administrar grafos, mientras que otros utilizan bases de datos relacionales u orientados a objetos en su lugar. El almacenamiento no nativo suele ser mucho más latente. Motor de procesamiento de grafos: el procesamiento del grafo nativo (también conocido como «adyacencia libre de índice») es el medio más eficiente de procesar los datos de los grafos, ya que los nodos conectados se «apuntan» físicamente entre sí en la base de datos. El procesamiento de grafos no nativos usa otros medios para procesar operaciones CRUD. Una base de datos de grafos está diseñada específicamente para manejar datos altamente conectados y el aumento en el volumen y la conexión de los datos actuales presenta una tremenda oportunidad para una ventaja competitiva sostenida. Algunas de las principales ventajas de esta base de datos son las siguientes: Actuación: para el manejo intensivo de la relación de datos, las bases de datos de grafos mejoran el rendimiento en varios órdenes de magnitud. Con las bases de datos tradicionales, las consultas relacionadas aumentan el tiempo de búsqueda según aumenta el número y la profundidad de las relaciones. Por el contrario, el © Universidad Internacional de La Rioja (UNIR) rendimiento de la base de datos de grafos permanece constante, a medida que sus datos crecen año tras año. Flexibilidad: con bases de datos de grafos, los equipos de TI y de arquitectos de datos se mueven a la velocidad de los negocios, porque la estructura y el esquema de un modelo de grafos se amolda a medida que cambian las aplicaciones y las industrias. En lugar de tener que modelar un dominio con antelación, los equipos Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 16 de datos se pueden agregar a la estructura de grafos existente, sin poner en peligro la funcionalidad actual. Agilidad: el desarrollo con bases de datos de grafos se alinea perfectamente con las prácticas de desarrollo ágiles y probadas de hoy, permitiendo que su base de datos evolucione de acuerdo con el resto de la aplicación y con cualquier cambio en los requisitos del negocio. Algunas de sus principales aplicaciones son: Detección de fraude. Motores de recomendación en tiempo real. Gestión de datos maestros (MDM). Operaciones de red y de TI. Gestión de identidad y acceso (IAM). Es utilizada en empresas como Walmart, eBay y el Grupo Adidas. Por startups como Cobrain, Zephyr Health y Wanderu e incluso sin fines de lucro como el ICIJ y el Foro Económico Mundial, los estudios de casos con bases de datos de grafos abundan con diversidad y profundidad de uso. Neo4j está disponible en una «edición comunitaria» de código abierto con licencia de GPL3, con copia de seguridad en línea y extensiones de alta disponibilidad con licencia bajo los términos de la Licencia Pública General de Affero. Neo también licencia Neo4j © Universidad Internacional de La Rioja (UNIR) con estas extensiones bajo términos comerciales de código cerrado. MongoDB MongoDB (que proviene de humongous) es una de las bases de datos NoSQL orientada a documentos desarrollada bajo el concepto de código abierto. Es una de las bases de datos NoSQL más utilizadas en todo el mundo. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 17 El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen. Ahora MongoDB es una base de datos lista para su uso en producción y con muchas características. Es una base de datos ágil, que permite a los esquemas cambiar rápidamente cuando las aplicaciones evolucionan, proporcionando siempre la funcionalidad que los desarrolladores esperan de las bases de datos tradicionales, tales como índices secundarios, un lenguaje completo de búsquedas y consistencia estricta. MongoDB ha sido creado para brindar escalabilidad, rendimiento y gran disponibilidad, escalando de una implantación de servidor único a grandes arquitecturas complejas de centros multidatos, mediante la inclusión de más nodos en una red de servidores. Es muy compatible con aplicaciones web. MongoDB proporciona alto rendimiento, tanto para lectura como para escritura, potenciando la computación en memoria. La replicación nativa de MongoDB y la tolerancia a fallos automática ofrece gran fiabilidad y flexibilidad operativa. En MongoDB, los datos se almacenan en forma de un documento, el cual es una estructura con pares clave-valor, muy similares a los objetos JSON, con la salvedad de que MongoDB almacena los datos en formato BSON (representación binaria de JSON). Un documento posee un atributo especial llamado _id, el cual indica el valor que identifica de forma inequívoca al documento. A su vez, los documentos se almacenan en collections, formando así un conjunto de © Universidad Internacional de La Rioja (UNIR) documentos con atributos similares. Podría decirse que una collection equivale a una tabla en una base de datos relacional. Así, se puede definir una base de datos en MongoDB como un conjunto de collections. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 18 Patrones de diseño en MongoDB Los patrones de diseño en MongoDB pueden agruparse en dos categorías. La primera incluye aquellos patrones que soportan relaciones entre documentos: Patrón de relación uno-a-uno con documentos embebidos: en este patrón se embebe un documento dentro de otro con el cual tiene relación. Por ejemplo, se puede contar con un documento de información de un usuario y embeber un subdocumento con información de la dirección del usuario: { _id: “1”, nombre: “Juan”, direccion: { ciudad: “Madrid” } } Patrón de relación uno-a-muchos con documentos embebidos: en este patrón se embebe a varios documentos dentro de otro con el cual tiene relación. Siguiendo con el ejemplo anterior, es probable que el usuario tenga más de una dirección, por lo que se tiene una relación de uno (usuario) a varios (direcciones). { _id: “1”, nombre: “Juan”, direcciones: [ © Universidad Internacional de La Rioja (UNIR) { ciudad: “Madrid” }, { ciudad: “Toledo” } ] } Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 19 Patrón de relación uno-a-muchos con documentos referidos: este patrón se suele utilizar para evitar repetición en aquellos casos en que un mismo documento se desee embeber en otros varios. Un ejemplo de su aplicación es el siguiente: { _id: address1, ciudad: “Madrid” }, { _id: address2 ciudad: “Toledo” }, { _id: “1”, nombre: “Juan”, direcciones: [address1, address2] } Patrón de relación uno-a-un con documentos referidos: igual que el anterior, pero solo a un documento. No es aconsejable su utilización, debido a que es más útil utilizar documentos embebidos. { _id: address ciudad: “Toledo” }, { _id: “1”, nombre: “Juan”, © Universidad Internacional de La Rioja (UNIR) direcciones: address } El siguiente grupo de patrones está relacionado con modelos basados en estructura de árbol. Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 20 Patrón de modelo de estructura de árbol con referencias al nodo padre. Tal como indica el nombre, se mantiene un atributo que almacena el _id del nodo padre. A continuación, se muestra un ejemplo con documentos representando carpetas de un sistema de ficheros. { _id: folder1, nombre: “Raíz”, parent: null }, { _id: folder2, nombre: “Folder 2”, parent: folder1 } { _id: folder3, nombre: “Folder 3”, parent: folder1 } El modelo de estructura de árbol con referencia a nodo hijo. Como indica el nombre, implica una aproximación inversa al caso de referencias al nodo padre. El ejemplo anterior se vería representado de la siguiente manera. { _id: folder1, nombre: “Raíz”, children: [folder2, folder3] © Universidad Internacional de La Rioja (UNIR) }, { _id: folder2, nombre: “Folder 2”, children: [] } { _id: folder3, Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 21 nombre: “Folder 3”, children: [] } Después de leer todo el tema, el reto siguiente es que repases los aspectos más relevantes de las bases de datos NoSQL con el vídeo «Aspectos relevantes de las bases de datos NoSQL». Vídeo 1. Aspectos relevantes de las bases de datos NoSQL. Accede al vídeo a través del aula virtual En esta otra lección, «Documentos de MongoDB y patrones de diseño», se presenta un screencast de la consola de MongoDB, incluyendo ejemplos de documentos y de © Universidad Internacional de La Rioja (UNIR) patrones de diseño. Vídeo 2. Documentos de MongoDB y patrones de diseño. Accede al vídeo a través del aula virtual Métodos de Captura y Almacenamiento de los Datos Tema 2. Ideas clave 22 A fondo Building your first MongoDB application Informática DP. (20 de abril de 2020). 1/3 - MongoDB 2020 - Introducción e Instalación [Archivo de vídeo]. https://www.youtube.com/watch?v=w3UhdQ7jffE Una serie de tres vídeos con una introducción a MongoDB. En el primero se brinda una introducción a los conceptos principales de MongoDB y sus conceptos © Universidad Internacional de La Rioja (UNIR) equivalentes en una base de datos relacional. Métodos de Captura y Almacenamiento de los Datos Tema 2. A fondo 23 Entendiendo MongoDB Kane, F. (28 de mayo de 2020). Understanding MongoDB (2020 Update) [Archivo de vídeo]. https://www.youtube.com/watch?v=HWZRio7ukrk Durante 17 minutos este vídeo te muestra los aspectos más relevantes de MongoDB, así como las características que presenta MongoDB a nivel de arquitectura. También te cuenta dónde está posicionado MongoDB con respecto al teorema CAP. MongoDB.com MongoDB. (2021). Documentation [Página web]. http://docs.mongodb.org/ © Universidad Internacional de La Rioja (UNIR) Sitio oficial del sistema MongoDB. Métodos de Captura y Almacenamiento de los Datos Tema 2. A fondo 24 Introducción a Apache Cassandra jumpstartCS. (29 de diciembre de 2019). Apache Cassandra - Tutorial 1 - Introduction to Apache Cassandra [Archivo de vídeo]. https://www.youtube.com/watch?v=s1xc1HVsRk0 Introducción a la base de datos NoSQL de Apache Cassandra donde se hace una descripción breve de la tecnología y sus características, acompañada con ejemplos básicos de su tecnología de acceso a datos. Introducción a No4j y modelo de datos Neo4j. (22 de junio de 2020). Neo4j Introducción y Modelo de Datos [Archivo de vídeo]. © Universidad Internacional de La Rioja (UNIR) https://www.youtube.com/watch?v=BcgXw06lSIo Introducción a la base de datos NoSQL de Neo4j, donde se hace una descripción amplia de la tecnología y sus características, acompañada con ejemplos básicos del modelado de datos. Métodos de Captura y Almacenamiento de los Datos Tema 2. A fondo 25 Comparativa NoSQL vs. SQL Be A Better Dev. (10 de febrero de 2020). SQL vs NoSQL Explained [Archivo de vídeo]. https://www.youtube.com/watch?v=ruz-vK8IesE Este vídeo oficial de FullStack hace una comparación entre las bases de datos NoSQL y SQL, además de mostrar algunos ejemplos de bases de datos NoSQL. Bibliografía Banker, K. (2012). MongoDB in action (pp. 3-22, 23-28, 76-126, 241-248). Manning Publications. Chodorow, K., y Dirolf, M. (2010). MongoDB: the definitive guide (pp. 23-64, 83-92). O’Reilly. Copeland, R. (2013). MongoDB applied design patterns (pp. 3-15, 37-73). O’Reilly © Universidad Internacional de La Rioja (UNIR) Media. Tiwari, S. (2011). Professional NoSQL (pp. 3-20, 97-135, 217-232). John Wiley & Sons. Métodos de Captura y Almacenamiento de los Datos Tema 2. A fondo 26 Test 1. ¿Qué tipo de base de datos NoSQL se caracteriza por operaciones de lectura y escritura básicas, además de ser apropiados para entornos de gestión de caché? A. Almacén clave-valor simple. B. Almacén clave-valor sofisticado. C. Base de datos relacional. D. Almacén de documentos. 2. ¿En qué categoría de base de datos NoSQL se clasifica a MongoDB? A. Almacén clave-valor simple. B. Almacén clave-valor sofisticado. C. Base de datos relacional. D. Almacén de documentos. 3. ¿Cuál de las siguientes afirmaciones es correcta? A. Cassandra se caracteriza porque todos sus nodos actúan por igual y se agrupan en anillo. B. Cassandra y Neo4j están desarrolladas en Java. C. Neo4j es una base de datos transaccional compatible con ACID y que almacena y procesa grafos nativos. D. Todas las afirmaciones anteriores son correctas. 4. ¿Cuál es el equivalente a un registro en MongoDB? © Universidad Internacional de La Rioja (UNIR) A. Base de datos. B. Collection. C. Tabla. D. Documento. Métodos de Captura y Almacenamiento de los Datos Tema 2. Test 27 5. ¿Cuál es el término equivalente a una tabla en MongoDB? A. Base de datos. B. Collection. C. Registro. D. Documento. 6. ¿Cuándo se detalla el uso de la primera base de datos NoSQL? A. En 2007, cuando Amazon liberó DynamoDB. B. Con Carlo Strozzi en 1998. C. En 1965 con MultiValue. D. Eric Evans en 2009. 7. ¿Cuál de las siguientes es una ventaja de las bases de datos NoSQL? A. No generan cuellos de botella. B. Tecnología madura. C. Responden a la necesidad de escalabilidades horizontal demandada cada vez por más empresas y, además, de manera sencilla. D. Las respuestas A y C son correctas. 8. ¿Cuál de las siguientes afirmaciones es correcta? A. Todo sistema distribuido no puede garantizar a la vez que haya consistencia, disponibilidad y tolerancia a particiones. B. Un sistema distribuido garantiza al menos disponibilidad y consistencia. C. Un sistema distribuido que garantiza la consistencia y la tolerancia a particiones no sacrifica por ello la disponibilidad. © Universidad Internacional de La Rioja (UNIR) D. Todas las afirmaciones anteriores son correctas 9. ¿Qué patrón o modelo de datos de MongoDB permite incluir subdocumentos en un único documento principal? A. Modelos de datos integrados o incrustados. B. Modelos de datos normalizados. C. Modelo de referencia de base de datos. Métodos de Captura y Almacenamiento de los Datos Tema 2. Test 28 D. Las respuestas B y C son correctas. 10. ¿ Qué patrón de diseño en MongoDB soporta la normalización? A. Uno-a-uno con documentos embebidos. B. Uno-a-uno con documentos referidos. C. Uno-a-varios con documentos referidos. © Universidad Internacional de La Rioja (UNIR) D. Las respuestas B y C son correctas. Métodos de Captura y Almacenamiento de los Datos Tema 2. Test 29