Preview only show first 10 pages with watermark. For full document please download

Bases De Datos Nosql

Descripción: Análisis de las bases NoSQL. Características, proveedores, tipos, etc.

   EMBED


Share

Transcript

UPSAM (FACULTAD DE INFORMÁTICA) BASES NOSQL Trabajo académico II, mes de Abril Rubén Gómez Vallejo 64021 30/04/2013 Desarrollo y Administración de sistemas de información Profesor: Luis Joyanes Aguilar  Grupo de Clase: Mañana Correo electrónico: [email protected] Social Media ÍNDICE 1. ........................................................................................................................... ....................................................... 3 RESUMEN .................................................................... 2. .......................................................................................................... ............................................. 3 PALABRAS CLAVE ............................................................. 3. ......................................................................................................................... ....................................................... 3 ABSTRACT .................................................................. 4. ....................................................................................................................... ........................................................ 3 KEYWORDS ............................................................... 5. ............................................................................................................... ............................................ 4 INTRODUCCIÓN ................................................................... 6. ......................................................................................... ...................... 5 TIPOS DE BASES DE DATOS ................................................................... 7. ...................................................................... ........... 6 ANTECEDENTES A LAS BASES NoSQL ........................................................... 8. .............................................................................................. ................................. 7 ¿QUÉ SIGNIFICA NoSQL? ............................................................. 9. ¿QUÉ SON LAS BASES DE DATOS NoSQL? ............................................................... 8 10. VENTAJAS E INCONVENIENTES DE LAS BASES DE DATOS NoSQL ............. 8 11. CUANDO USAR UNA BASE DE DATOS NoSQL ................................................... 10 12. ...................................................................... ......... 10 TIPOS DE BASES DE DATOS NoSQL ............................................................. 12.1. ORIENTADAS A FAMILIA DE COLUMNAS ................................................. 11 12.2. ORIENTADA A ALMACENAMIENTO DE DOCUMENTOS ....................... 12 12.3. ALMACENAMIENTO CLAVE/VALOR .......................................................... 14 12.4. CLAVE / VALOR EVENTUALMENTE CONSISTENTE .............................. 17 12.5. ................................................................................................................ .......................................... 18 GRAFOS ...................................................................... 12.6. ...................................................................................................................... ..................................................... 20 GRID ................................................................. 12.7. ....................................................................................................................... ..................................................... 21 XML .................................................................. 12.8. .................................................................................... .................... 23 CACHES DE MEMORIA ................................................................ 12.9. ...................................................................................................... ........................................... 24 OTROS TIPOS ........................................................... 13. PLATAFORMAS QUE DAN SERVICIO BASES DE DATOS NoSQL ................. 26 13.1. ........................................................................................................ ........................................... 26 CASSANDRA ............................................................. 13.2. .......................................................................................... ............................... 28 APACHE COUCH DB........................................................... 13.3. ............................................................................................................ .......................................... 30 MANGODB.................................................................. 13.4. .................................................................................................................... ...................................................... 32 NEO4J .............................................................. 12. ......................................................................................................... ........................................... 34 CONCLUSIONES .............................................................. 13. ........................................................................................................... .......................................... 35 BIBLIOGRAFÍA................................................................. 14. ................................................................................................................... ...................................................... 36 GLOSARIO ............................................................. 15. ............................................................................................. ............................... 37 ÍNDICE DE IMÁGENES .............................................................. 16. .............................................................................. .................... 37 BIBLIOGRAFÍA DE IMÁGENES .......................................................... UPSAM Rubén Gómez Vallejo 2 Social Media 1. RESUMEN El siguiente documento es un trabajo de investigación de las llamadas bases de datos  NoSQL, en el que desarrollaremos los conceptos necesarios para poder entender que son y cómo funcionan. A continuación, analizaremos las características de las bases de datos NoSQL, cuando son utilizadas y los tipos que existen. Además analizaremos las distintas soluciones de  bases NoSQL que actualmente existen. Finalmente, analizaremos las desventajas que ofrecen este tipo de bases de datos, así como realizaremos una conclusión de que facilidades nos ofrece y de su progresión en un futuro. 2. PALABRAS CLAVE Bases de datos, clave/valor, columnas, documentos, actualidad, futuro, almacenamiento almacenamiento 3. ABSTRACT The following document is a research-called NoSQL databases, which we will develop the concepts necessary to understand who they are and how they work.  Next, we will analyze the characteristics of NoSQL N oSQL databases, when they are used and their types. Also we analyze the various solutions NoSQL database that currently exist. Finally, we will analyze the disadvantages that offer this type of databases, as well as carry out a conclusion that offers facilities and their progression in the future. 4. KEYWORDS Databases, Databases, Key/value, columns, documents, current, future, storage. UPSAM Rubén Gómez Vallejo 3 Social Media 5. INTRODUCCIÓN A parte de las clásicas bases de datos SQL (RDBMS), aparecen y van tomando fuerza nuevos tipos de bases de datos, como las bases de datos NoSQL. Su mayor ventaja es que están preparadas para ser muy rápidas. Según su tipo, cada una sigue una estrategia completamente diferente para persistir la información y eso es la característica principal que influye en que la rapidez sea mayor. Cabe destacar que normalmente no sustituyen a la base de datos clásica SQL, sino que surgen por otra necesidad. Una necesidad de rendimiento extremo. Si se utilizan de una manera única, o se combinan con una base de datos SQL es una decisión de arquitectura del sistema. A algunas de ellas se puede acceder mediante SQL, pero normalmente no será así,  puesto que cada cada una tendrá una API exclusiva. exclusiva. En definitiva, aunque existan distintos tipos de bases de datos existe la posibilidad de “mezclarlos” para poder tener un sistema más específico que nos ofrezca un mejor  servicio. UPSAM Rubén Gómez Vallejo 4 Social Media 6. TIPOS DE BASES DE DATOS Actualmente existen diversos tipos de bases de datos. La coexistencia de bases de datos no significa la desaparición desaparición de alguna en concreto, sino que pueden pueden coexistir e incluso trabajar juntas. Que existan distintos tipos de bases de datos significa que existe la especialización. Con esto, nos referimos a que existen distintas porque existen distintas necesidades, rapidez de acceso, seguridad de los datos, etc. Algunos de los tipos de bases de datos que existen actualmente, son los siguientes: 1. Bases de datos transaccionales: Son aquellas que sirven para almacenar  información critica de un negocio, con origen en las aplicaciones de siempre( CRM, ERP, sistemas legacy, …) 2. NOSQL: Como veremos a continuación, sirven para capturar de manera segura y escalable, grandes volúmenes de información continua generados por eventos. 3. Analítica: permiten múltiples usuarios contestar rápidamente preguntas de negocio que requieran de grandes volúmenes de información. 4. Hadoop (HDFS1& Hive): Sirven para almacenar y procesar grandes volúmenes de información estructurada o semi-estructurada. 5. BigData: Sirven para almacenar y procesar grandes conjuntos de datos. 1 HDFS: Se trata de un sistema de archivos utilizado por Haddop que replica datos, para intentar  conservar copias diferentes de los datos en racks (soporte metálico donde se guarda información) diferentes. UPSAM Rubén Gómez Vallejo 5 Social Media 7. ANTECEDENTES A LAS BASES NoSQL [6]Las bases NoSQL existen desde hace muchos años (1970), con experimentos en universidades europeas europeas y norteamericanas, norteamericanas, sobre sistemas s istemas de almacenamiento abiertos. Los almacenamientos de par Clave/Valor que veremos a continuación, vieron la luz en 1979 con el proyecto DBM, y más tarde BerkeleyDB (1986). En caso de considerar que LotusDB es una base de datos orientada a documentos las cuales también veremos a continuación, podremos decir que la empresa Lotus dió a luz a otro tipo de base de datos NoSQL con este proyecto en 1989. Si a estos datos agregamos que el término "bases de datos orientadas a objetos" (ODB), fue usado a partir de 1985 (aunque nacieron informalmente una década antes), en  proyectos de investigación investigación tales como los de la Universidad Universidad de Brown, la de WinscosinWinscosinMadison, en IRIS en Hewlett Packard, y en los laboratorios Bell o en los de Texas Instrument, en Alemania, no es extraño pensar que NoSQL existe desde antes que SQL (quién arrancó en 1977 de la mano de IBM, que no lo hizo comercial sino hasta 1983 con DB2 y el ANSI no lo hizo estándar sino hasta 1986). Volviendo a las últimas (las ODB), luego algunos intentos comerciales, con suficiente éxito, se encargaron de difundir el concepto (Gemstone, GBase, VBase, ITASCA, Jasmine de Fujitsu, Matisse, Objectivity/DB, Object Store de Progress Software, O2 adquirida por Informix y luego por IBM, POET, Versant, VOSS y JADE). Algunos de estos pioneros, que agregaron el concepto de "persistencia" al mundo OO, aún siguen en el mercado y muchos de estos proyectos se han convertido en proyectos open source 2. Las ODB adquirieron un gran número de aplicaciones en áreas como la ingeniería y  bases de datos geográficas, geográficas, telecomunicaciones, telecomunicaciones, y áreas científicas como física, biología biología molecular y determinados grupos de servicios financieros, siendo de poco uso generalizado la mayoría de las áreas comerciales. Algunos fabricantes las han utilizado en sistemas embebidos en dispositivos, soluciones "llave-en-mano" y sistemas en tiempo real donde son muy útiles. Hasta aquí, podríamos justificar el movimiento NoSQL desde aproximadamente 1979,  pero las ODB también incorporaron su propio lenguaje de consultas el OQL (Object Query Language). La principal pega de los vendedores de estas bases de datos era que los desarrolladores OO no tenían que aprender SQL para usarlas. 2 Open Source: Término con el que se conoce al software distribuido y desarrollado libremente. UPSAM Rubén Gómez Vallejo 6 Social Media Ilustración 1: Esquema Base de de datos orientada a objetos 8. ¿QUÉ SIGNIFICA NoSQL? [6]La Originalmente el término NoSQL, que fue acuñado en 1998, se refería a una base de datos relacional de código abierto que no usaba un lenguaje de consultas SQL (Structured Query Language). Language). Hasta 2009 estas cinco letras cayeron en el olvido, pero fue Johan Oskarsson, entonces empleado de Last.fm, quien organizó un evento para tratar las bases de datos distribuidas de código abierto no relacionales, llamándolas “NOSQL”, Not -Only SQL. Ilustración 2: NoSQL UPSAM Rubén Gómez Vallejo 7 Social Media 9. ¿QUÉ SON LAS BASES DE DATOS NoSQL? Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad-relación que es el esquema más habitual, siendo también el estudiado por los estudiantes de informática desde que comienzan a estudiar   bases de datos. datos. Mientras que las tradicionales bases de datos relacionales basan su funcionamiento en tablas, joins 3 y transacciones ACID, las bases de datos NoSQL no imponen una estructura de datos en forma de tablas y relaciones entre ellas, no imponen un esquema  pre-fijado de tablas, siendo más flexibles, flexibles, ya que suelen permitir almacenar almacenar información en otros formatos como clave-valor (similar a tablas Hash), mapeo de columnas, documentos o grafos, como veremos a continuación. 10. VENTAJAS E INCONVENIENTES DE LAS BASES DE DATOS NoSQL [7] Algunas de las ventajas de las bases NoSQL son las siguientes: 1. Pueden manejar enormes cantidades de datos 2. Superan los cuellos de botella de rendimiento. Al no tener que realizar la traducción de datos hacia un formato amigable para SQL, las arquitecturas  NoSQL son mucho más rápidas 3. Facilidad de escalonamiento horizontal 4. Excelentes para lecturas masivas de registro tipo clave/valor. 5. Cada tipo de base de dato NoSQL tiene sus propias características. 3 Join: Permite combinar registros de dos o más tablas en una base de datos relacional, en un lenguaje estructurado. UPSAM Rubén Gómez Vallejo 8 Social Media Algunas desventajas de las bases NoSQL son las siguientes: 1. El código abierto puede ser un contra en el soporte para empresas. Mientras los grandes proveedores como Oracle, IBM ofrecen buenos soportes a las empresas, los vendedores de código abierto esperan poder ofrecer un soporte comparable. Generalmente el código abierto no tiene un alcance como lo puede tener uno cerrado. Soporte, servicio, credibilidad, etc., son las diferencias 2. No están lo suficiente elaborados. Es decir no están los suficientemente maduros para algunas empresas, porque a  pesar de sus puestas en prácticas en grandes empresas, aun se enfrentan al  problema de credibilidad credibilidad importante con con muchas empresas. empresas. A diferencia que los distintos servicios que ofrecen madurez, estabilidad, y una gran funcionalidad eso en los sistemas NoSQL, todavía está por ver. 3. Limitaciones de inteligencia de negocios . Las bases de datos NoSQL no tienen mucho atractivo para el uso general de herramientas de BI, mientras que la más simple consulta y análisis implica grandes conocimientos de programación. 4. La falta de experiencia. La novedad de NoSQL es un gran problema y es que no existen desarrolladores y administradores que conocen la tecnología y la pueden gestionar, por lo que en caso de querer implantar un sistema NoSQL será más complicado encontrar   personal cualificado. cualificado. 5. 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 son únicas y tienen peculiaridades. Esta falta de normas significa que es imposible cambiar simplemente de un  proveedor a otro, por si no quedara quedara satisfecho con con el servicio. UPSAM Rubén Gómez Vallejo 9 Social Media 11. CUANDO USAR UNA BASE DE DATOS NoSQL Si pretendemos desarrollar una aplicación que requiera la lectura/escritura de cantidades ingentes de datos y pueda dar servicio a millones de usuarios sin perder rendimiento, entonces debemos plantearnos el uso de una base de datos NoSQL. Las grandes redes sociales como Facebook y Twitter o el propio Google las utilizan como medio fundamental de almacenamiento de información. Se puede utilizar una base de datos NoSQL para almacenar toda la información de una aplicación, aunque en la mayoría de los casos se recurre a sistemas mixtos que combinan los clásicos sistemas relacionales (fácilmente manipulables e interrogables con el lenguaje SQL) con soluciones NoSQL para aquellas funcionalidades que requieren millones de consultas en tiempo real. Las bases de datos relacionales ofrecen bajo rendimiento entre ciertas aplicaciones intensivas de datos, como indexación de un gran número de documentos, servir paginas en sitios de mucho tráfico y envío de datos  streaming . Las RDBMS están optimizadas para pequeñas pero habituales transacciones de tipo lectura y escritura o largas lar gas transacción con pocos accesos de escritura. Por eso NoSQL es una gran ventaja ya que puede dar servicio a grandes cargas de lectura y escritura. Algunas empresas como Ubuntu DesktopCouch, Adobe  –  Mozilla y Twitter usan bases de datos NoSQL. 12. TIPOS DE BASES DE DATOS NoSQL Existen diversos tipos de bases de datos NoSQL. Cada uno tiene sus propias características, siendo estas muy definidas respecto a los otros tipos. A continuación veremos las características más importantes de estos tipos de bases de datos y una tabla diciéndonos que producto nos ofrece este tipo de bases de datos y que empresas lo usan. Más tarde en el siguiente punto analizaremos estas empresas que ofrecen los servicios, como Cassandra, HBase, MongoDB, Couch DB, etc. UPSAM Rubén Gómez Vallejo 10 Social Media 12.1. ORIENTADAS A FAMILIA DE COLUMNAS Las bases de datos NoSQL orientadas orientadas a familia familia de columnas columnas son aquellas aquellas cuyo  precursor es Google Google BigTAble. Su almacenamiento básico es la columna: nombre, valor. Una familia de columna es una clave seguida de un número variable de columnas. Su equivalente relacional seria una tabla. Cassandra y otras incluyes implícitamente el timestamp4 en cada columna para manejar versiones de los datos. Destacan por: - Una buena gestión de tamaño - Cargas de escrituras masivas orientadas al  stream - Alta disponibilidad -  MapReduce5 4 TimeStanm es una secuencia de caracteres, que denotan la hora y la fecha en la que ocurrió un determinado evento. Pudiendo ser operables estos elementos. 5 MapReduce: Modelo de programación utilizado por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en diversos ordenadores. UPSAM Rubén Gómez Vallejo 11 Social Media 12.2. ORIENTADA A ALMACENAMIENTO DE DOCUMENTOS La información se almacena en objetos xml, json, etc. Renuncian a la estructura fija de datos usual en RDBMS. Almacenan información semiestructurada. Documentos con diferentes estructuras pueden ser adicionados sin afectar la estructura de los documentos ya existentes. Los almacenes de documentos guardan la información como un listado de documentos desestructurados. Al acceder a un documento, se puede acceder a un número no especificado de campos con sus respectivos valores. Son muy rápidos para recuperar  toda la información asociada al documento junto, y tienen un esquema de datos muy flexible. Sin embargo, suelen ser lentos para hacer consultas donde se buscan todos los documentos con un determinado campo, ya que estos no suelen tener índices. í ndices. Su precursora fue Lotus Notes y son buenas en: - UPSAM Modelado de datos natural Fácilmente programables Desarrollo rápido Orientadas a la web Rubén Gómez Vallejo 12 Social Media UPSAM Rubén Gómez Vallejo 13 Social Media 12.3. ALMACENAMIENTO CLAVE/VALOR  Su precursor fue Amazon Dynamo. Los caches de memoria utilizan normalmente el esquema key-value para guardad la información en memoria cache. Los almacenamientos key-value asocian una clave única clave al valor que se quiere guardar. Varias implementaciones de los almacenamientos key-value tienen funcionalidad adicional, pero a un nivel básico, solo requiere una clave y un valor. Este tipo de bases de datos suele ser extremadamente rápido y permite una gran cantidad de accesos al mismo tiempo UPSAM Rubén Gómez Vallejo 14 Social Media UPSAM Rubén Gómez Vallejo 15 Social Media UPSAM Rubén Gómez Vallejo 16 Social Media 12.4. CLAVE / VALOR EVENTUALMENTE CONSISTENTE Las bases de datos Clave/Valor eventualmente consistentes, ofrecen consistencia salvo en casos de caídas criticas y tienen un manejo de versiones de cada registro, y herramientas para solucionar conflictos, todo todo esto, a cambio de rapidez en procesos procesos de lectura y escritura. Esta consistencia se puede ajustar. Se puede ajustar la cantidad de servidores que reporten la escritura exitosa de un registro al coordinador antes de asumir una escritura exitosa y tiene varios métodos de resolución de conflictos de versiones. UPSAM Rubén Gómez Vallejo 17 Social Media 12.5. GRAFOS Las bases de datos NoSQL basadas en grafos están inspiradas en Euler y fundamentadas en la teoría de grafos. La información se guarda en estructuras de nodos, arcos (conexiones) y propiedades (de arcos y nodos). Están orientados a manejos de datos muy complejos y con muchas relaciones entre si. Presentan algunos problemas como encontrar la mejor ruta en el mapa y encontrar  relaciones en una red social.  No son exactamente bases NoSQL y algunos ejemplos son AllegroGraph, VertexBD y  Neo4j. UPSAM Rubén Gómez Vallejo 18 Social Media También en esta categoría podríamos destacar a:    AllegroGraph: Base de datos para almacenamiento de RDF 6 para aplicaciones de Ingeniería del Conocimiento y redes semánticas (Web 3.0). Soporta SPARQL 7 , RDFS++, y razonamientos del lenguaje Prolog. Herramientas como esta hay otras: Jeena (desarrollada por Hewlett Packard), Sesame, Filament, y OWLim. JUNG-Java Universal Framework: Para almacenamiento de información en forma de grafos o redes. Soporta una variedad importante de representacio r epresentaciones nes de entidades y sus relaciones, como grafos orientados, sin orientación, grafos multimodales, grafos con bordes paralelos e hipergrafos. Facilita la creación de herramientas de análisis para conjuntos de datos complejos. También puede guardarse información de metadatos sobre las entidades en cuestión. De este estilo también existe un  proyecto open source llamado iGraph, otro para estudio de redes complejas llamado  NetworkX y DEX, un proyecto desarrollado por la Universidad politécnica de Catalunya. Para finalizar en esta categoría, tenemos a OpenLink Virtuoso, una mezcla híbrida de Relacional, BD documental, de Grafos y OO (orientada a objetos). 6 RDF: Es un  framework para  framework  para metadatos en la Wold Wide Web (www) desarrollado por el World Wide Web Consorium (W3C) 7 SPARQL: Lenguaje estandarizado para la consulta de grafos RDF, normalizado por el World Wide Web Consortium (W3C) UPSAM Rubén Gómez Vallejo 19 Social Media 12.6. GRID Las Bases de Datos GRID es una tecnología Innovadora que permite utilizar de forma coordinada diversos recursos del ordenador entre ellos capacidad de computación, super  ordenadores, dispositivos móviles, ordenadores portátiles, software, datos e información distribuidos de forma geográfica y conectados mediante redes WAN W AN (red de área extensa) como por ejemplo el Internet. Un usuario puede hacer uso de recursos libres situados en los ordenadores que se encuentren dentro de esta red Grid, sin importar la localización del mismo. De este modo, el usuario dispone de un la potencia de un ordenador ficticio, disponiendo del disco duro o memoria RAM necesitado. El Grid no sólo se trata de compartir ciclos de CPU para realizar cálculos complejos, sino que se busca la creación de una infraestructura distribuida. Los posibles campos de aplicación de este tipo de bases de datos podrían ser: 1. Supercomputación Supercomputación Distribuida: Simulaciones, Herramientas de cálculo numérico, procesos de análisis de datos, extracción de conocimientos de almacenes de datos, etc. 2. Sistemas Distribuidos en Tiempo Real: Medicina (tratamiento de imagen para visión artificial). 3. Proceso Intensivo de Datos: Gestores de bases de datos distribuidos. 4. Servicios Puntuales: Aplicaciones que permiten acceder al hardware específico  para la realización realización de labores a distancia. 5. Entornos Virtuales de Colaboración: Teleinmersión 8 8 Teleinmersión: Sistema avanzado de telecomunicación de alta velocidad, que permite captar los movimientos y otros aspectos de usuarios, para que se retransmitan a través de una red de alta velocidad como internet2 (consorcio sin ánimo de lucro que desarrolla aplicaciones y tecnología de redes avanzaras, la mayoría para transferir información a alta velocidad UPSAM Rubén Gómez Vallejo 20 Social Media 12.7. XML [4] Son bases de datos NoSQL, basados en un modelo lógico para el documento XML. Además, almacena y recupera documentos de la misma manera que los XML. XM L. Algunas de sus características principales son las siguientes: 1. Procesamiento Procesamiento de datos El procesamiento de datos en este tipo de bases de datos parecería ser algo muy  beneficioso, pero pero realmente no es así, debido debido al formato jerárquico jerárquico en el que está almacenada la información. Muchas bases de datos necesitan que el usuario recupere todo el documento XML, lo actualice con el XML API de su  preferencia y posteriormente vuelva a almacenar el documento en el repositorio. Esto se debe a que aún no existe un lenguaje estándar que permita la actualización, inserción o eliminación de elementos de un documento XML. Existe un lenguaje que permite realizar actualizaciones en un documento XML  pero aún no es un estándar y muchos gestores de este tipo de bases de datos no lo soportan, este lenguaje es Xupdate. 2. Almacenamiento Por deducción lógica, una base de datos nativa en XML almacena la información en formato XML, pero esto es solamente una deducción lógica,  pues este tipo de bases de datos tienen repositorios con un formato "tipo XML", como puede ser Dom o Infoset. En este mismo "repositorio" (paquete de archivos) se almacenan los índices que se generan por cada documento XML almacenado. UPSAM Rubén Gómez Vallejo 21 Social Media 3. Búsquedas Este tipo de bases de datos no utiliza SQL como lenguaje de consulta. En lugar  de ello utilizan Xpath. Algunas bases de datos permiten seleccionar los elementos que deberán tener índices mientras que otras bases de datos indexan todo el contenido del documento. El problema que tienen las búsquedas en este tipo de bases de datos es que no permiten realizar búsquedas muy complicadas, como por ejemplo ordenamiento y cross join, debido a que Xphat no fue creada realmente para búsquedas en bases de datos, sino simplemente para búsquedas en un solo documento. Muchas bases de datos permiten realizar búsquedas utilizando la tecnología Full-Text Search, de esta manera se puede agilizar la búsqueda de datos en los documentos XML UPSAM Rubén Gómez Vallejo 22 Social Media 12.8. CACHES DE MEMORIA Los caches en memoria son almacenamientos simples que se colocan entre la base de datos y la aplicación usada. Se encargan de guardar en memoria cache objetos muy utilizados u objetos costosos de generar. Estos objetos se almacenan ya generados por lo que recuperarlos se puede hacer de manera muy rápida y sencilla UPSAM Rubén Gómez Vallejo 23 Social Media 12.9. OTROS TIPOS UPSAM Rubén Gómez Vallejo 24 Social Media UPSAM Rubén Gómez Vallejo 25 Social Media 13. PLATAFORMAS QUE DAN SERVICIO BASES DE DATOS NoSQL 13.1. CASSANDRA Cassandra es una mezcla de bases de datos culumnar y almacenamiento clave-valor  creada por Facebook en 2008. Se trata de un servicio de código abierto siendo un proyecto apache con licencia apache licence 2.0. Está escrito en Java y es una herramienta multiplataforma. Al poder ser  utilizado en cualquier lenguaje de programación esta teniendo una alta popularidad. Está diseñado para poder trabajar y gestionar una gran cantidad de datos distribuidos en una gran cantidad de maquinas comunes conectadas entre sí. Algunos usuarios de cassandra son Digg, Facebook, Twitter, Rackspace, y SimpleGEO. Cassandra está desarrollada para ser un servidor distribuido, pero se puede ejecutar  también como un nodo simple, ofreciendo: 1. Escalabilidad horizontal 2. Rápidas respuestas incluso con gran demanda 3. Elevadas velocidades de escritura para gestionar volúmenes de datos incrementales 4. Almacenamiento Almacenamiento distribuido 5. Capacidad de cambiar la estructura de datos cuando los usuarios demandan mas funcionalidad 6. Una API sencilla y limpia para cualquier lenguaje 7. Detección de fallos automática 8.  No hay un punto punto de fallo único 9. Descentralizada 10. Tolerante a fallos 11. Permite el uso de hadoop para implementar Map Reduce Desventajas de cassandra: Al ser un sistema de almacenamiento tan escalable ofrece algunas desventajas como las siguientes: 1.  No hay joins. Aunque Aunque eso supone supone un aumento aumento de velocidad velocidad 2.  No permite ordenar ordenar resultados en tiempo de consulta consulta UPSAM Rubén Gómez Vallejo 26 Social Media 3.  No tiene SQL a. Desde la versión 0.8 existe CQL 9 Respecto al modelo de datos de cassandra nos encontramos un modelo basado en un modelo orientado a columnas. Extiende el modelo clave-valor con dos niveles de anidamientos. Su modelo de datos representa un mapa con cuatro o cinco dimensiones. El modo de referirse a un registro de datos es: Un keyspace, una column family, una key, una  super column opcional y una coulumn, teniendo siempre un valor único que es la columna. Ilustración 3: RDBS vs Keyspace Diseñado para distribuidos de modo escalable, sacrificando ACID por ventajas en rendimiento, disponibilidad y gestión operacional. Los modelos que se crean son desnormalizados, es decir se suele crear una column  family por cada consulta a realizar o varias filas en un coulumn family suelen dar  respuesta a una consulta. Los conceptos básicos son: 9 CQL: lenguaje de consulta en cassandra. UPSAM Rubén Gómez Vallejo 27 Social Media   Cluster: Son maquinas que componen la instancia en Cassandra, pudiendo contener varios keyspace. Dentro de los cluster son guardados los datos donde se asignan los datos a los nodos. o Un nodo tienen replicas para diferentes rangos de datos. o Si un nodo se cae, su réplica puede responder. o Un protocolo P2P hace que los datos se repliquen entre nodos acorde con una sentencia. KeySpace:  espacio de nombres para un conjunto de columnfamily, asociado a una aplicación. (Se suele relacionar con una base de datos con modelo relacional) Ilustración 4: SuperColumn Family "Estado de Usuario"  Columnfamily: Contienen  el modelo relacional. SuperColumn: columnas que ellas mismas tienen sub-columnas. Column: compuestas de un nombre, de un valor y un timestamp.  varias columnas. Suelen vincularse con una tabla en 13.2. APACHE COUCH DB Es una base de datos datos open source orientada orientada a documentos, accesible accesible mediante una API que hace uso extensivo de JavaScript Objet Notation (JSON). Esta escrita en un lenguaje llamado Erlang, es parte de la generación de bases NoSQL,  proyecto opensource de la fundación apache y motor de almacenamiento basado en BBtree. Algunas de sus características son las siguientes:    UPSAM Es altamente concurrente, diseñada para ser replicada de forma horizontal, a través de varios dispositivos y tolerante a fallos. Utiliza map/reduce para indexar y consultar la base de datos. Permite escribir una aplicación cliente que habla directamente vía HTTP con CoouchDB sin necesidad de una capa servidora intermedia. Rubén Gómez Vallejo 28 Social Media      Guarda datos en local en la propia maquina cliente para reducir latencia, gestionando una replicación a la nube por el usuario. Una base de datos de documentos está compuesta obviamente por documentos, que son libres de esquema, pudiendo incluir un campo nuevo que no afectara a los otros documentos ya existentes en la base de datos. Couch DB no tiene una funcionalidad f uncionalidad de auto-increment o secuencia.,.  No soporta JOINs JOINs como las bases bases de datos relacionales. relacionales. Ofrece una mejor solución a servicios como wikis, blogs y sistemas de gestión documental, que las bases de datos actuales. Ventajas de CouchDB      Documentos JSON: todo lo que se guarda en CouchDB son simplemente documentos JSON. Interfaz RESTful: desde la creación a la replicación a la inserción de datos, toda la gestión de datos en CouchDB Co uchDB puede ser realizada vía HTTP. Replicación N-Master:  puedes hacer uso de un número ilimitado de „masters‟, dando lugar a topologías de replicación muy interesantes Escrita para ejecutarse offline: CouchDB puede replicarse en dispositivos (ej. teléfonos Android) que pueden quedarse sin conexión y gestionar sincronización de datos cuando el dispositivo está online de nuevo Filtros de replicado: puedes filtrar de modo preciso los datos que quieres replicar  a distintos nodos. Conceptos clave en CouchDB Se guardan documentos nombrados de modo univoco y proporcionan una ASPI que  permite a las aplicaciones aplicaciones leer y modificar estos documentos. documentos. Cada documento contiene metadatos como el identificador del documento y su número de revisión. Los campos de los documentos pueden ser de diversos tipos, como string, números,  booleanos, colecciones, colecciones, etc. etc. También existen las vistas que son el mecanismo para añadir estructura a datos semiestructurados. El modelo usa usa JavaScriot JavaScriot para poder describirlas. describirlas. En definitiva, las vistas son el método para agregar y realizar informes sobre los documentos de un repositorio, siendo creados en demanda para agregar documentos. Las vistas también constituyen dinámicamente y no afectan los documentos subyacentes. UPSAM Rubén Gómez Vallejo 29 Social Media CouchDB está diseñado para almacenar y reportar sobre grandes volúmenes de datos orientados a documentos semi-estructurados. Con CouchDB, no se impone ningún esquema, nuevos tipos de documentos con distintos campos y significados se pueden unir a los existentes. El motor de vistas, apoyado en JavaScript, está diseñado para facilitar la gestión de nuevos tipos de documentos y variados pero similares documentos Programar con couchDB Gracias a la API RESTful, los desarrolladores pueden conectarse con CouchDB usando cualquier software que disponga de HTTP. La mayoría de los lenguajes modernos ofrecen interfaz HTTP, implicando que pueden utilizar couchDB. 13.3. MANGODB Se trata de un servicio similar a CouchDB, que pretende combinar lo mejor de las bases clave/valor con las de documentos y las RDBMS. Hace uso de JSON y tiene su propio lenguaje de consultas. Implementada en C++ y es usada en aplicaciones como SourceForge, Foursquare o GitHub. MongoDB guarda estructuras de datos en documentos tipo BSON con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea mas fácil y rápido. Características Características principales   Consultas Ad hoc: MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden devolver un campo específico del documento pero también puede ser una función JavaScript definida por el usuario. Indexación: Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios. El concepto de índices en MongoDB es similar  a los encontrados en base de datos relacionales UPSAM Rubén Gómez Vallejo 30 Social Media   Replicación: MongoDB soporta el tipo de replicación maestro-esclavo. El maestro puede ejecutar  comandos de lectura y escritura. El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura o para copia de seguridad, pero no se pueden realizar  escrituras. El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual. Balanceo de carga: o MongoDB se puede escalar de forma horizontal usando el concepto de “shard”. o El desarrollador elije una llave shard, la cual determina como serán distribuidos los datos en una colección. los datos son divididos en rangos (basado en la llave shard) y distribuidos a través de múltiples shard. o Un shard es un maestro con uno o más esclavos. o MongoDB tiene la capacidad de ejecutarse en múltiple servidores,  balanceando  balanceando la carga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware.    Almacenamiento Almacenamiento de archivos o MongoDB puede ser utilizado con un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos. o Esta función (que es llamada GridFS) está incluida en los drivers de MongoDB y disponible para los lenguajes de programación que soporta MongoDB. Agregación: La función MapReduce puede ser utilizada para el procesamiento procesamiento por lotes de datos y operaciones de agregación. Esta función permite que los usuarios puedan obtener  el tipo de resultado que se obtiene cuando se utiliza el comando SQL “g roup- by”.  by”. Ejecución de Java Script del lado del servidor : MongoDB tiene la capacidad de realizar consultas utilizando Java Script, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas. Manipulación de datos MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinámico llamado BSON, lo que implica que no existe un esquema predefinido. Los elementos de los datos son llamados documentos y se guardan en colecciones. Una colección puede tener un número indeterminado de documentos. Las colecciones son UPSAM Rubén Gómez Vallejo 31 Social Media como tablas y los documentos como filas. Cada documento en una colección puede tener diferentes campos. La estructura de un documento es simple y compuesta por “key -value pairs” parecido a las matrices asociativas en un lenguaje de programación. Como valor se pueden usar  números, cadenas o datos binarios como imágenes o cualquier otro “key -value pairs” 13.4. NEO4J Se trata de una base de datos de grafos. Una colección de nodos y aristas que conectan  pares de nodos. Se asocian propiedades sobre nodos y propiedades. Las relaciones conectan dos nodos y tanto nodos como relaciones pueden alojar un numero arbitrario de claves/valor. Puede ser considerado como un key/value  store con soporte completo para relaciones.  No contiene esquemas, esquemas, diseño de modelo de datos de abajo abajo a arriba. Características        Licencia dual: abierta y comercial Apropiada para casos de uso de la web como etiquetado, anotaciones de metadatos, redes sociales, wikis y otros conjuntos de datos jerárquicos j erárquicos o en forma de red Modelo de datos flexible consistente de nodos, relaciones y propiedades Tiene un rendimiento de 1000x que RDBMS Almacenamiento Almacenamiento en disco nativo optimizado para guardar estructuras de grafos para máximo rendimiento y escalabilidad o Recorre grafos de profundidad 1000 a velocidad de milisegundo mili segundos. s. Máxima escalabilidad, puede gestionar billones de grafos de nodos/relaciones/propiedade nodos/relaciones/propiedadess en una sola máquina y puede ser distribuido Completamente transaccional Modelo de datos   Un grafo: guarda datos en nodos, que tienen propiedades. La propiedad consta de una clave de tipo string que apunta a un valor primitivo o en forma de colección. Los nodos: Se organizan en relaciones, que también tienen un campo propiedad. UPSAM Rubén Gómez Vallejo 32 Social Media   Un traversal : Navega en un grafo, identifica caminos que ordenan nodos. Permite encontrar respuestas a preguntas de las típicas querys. Un índice: Mapea de propiedades pudiendo ser de nodos o relaciones. Permite encontrar un nodo o relación en función de una propiedad. Ilustración 5: Estructura de un árbol en Neo4j UPSAM Rubén Gómez Vallejo 33 Social Media 12. CONCLUSIONES Como hemos podido observar durante el desarrollo del trabajo, las bases de datos  NoSQL están en constante evolución y se presenta como una herramienta muy útil y que dentro de poco tiempo será implantada en más servicios web. Las bases de datos NoSQL son soluciones especializadas que atacan una problemática muy específica (escalamiento, concurrencia, gran volumen de datos…), pero quedando claro que no son un reemplazo a las l as bases de datos actuales más usadas, las relacionales y no siempre pueden ser utilizadas. util izadas. El éxito estará en conocer y conjuntar los dos tipos de bases de datos. Las NoSQL y las relacionales son perfectamente complementarias complementarias y hacerlo de una buena forma hará que las aplicaciones tengan un servicio óptimo de almacenamiento de datos. Otro aspecto a tener en cuenta es la posibilidad de que los RDBMS actuales evolucionen para incorporar capacidades NoSQL Respecto a las soluciones que se encuentran en el mercado, como hemos podido ver   poco a poco existen más soluciones. Aquí solo hemos analizado las principales de cada tipo, pero poco a poco el mercado demanda mas herramientas para este tipo de bases y es importante conocer todas las herramientas que existen, para poder elegir la mejor  opción. UPSAM Rubén Gómez Vallejo 34 Social Media 13. BIBLIOGRAFÍA 1) Profesor Luis Joyanes. Apuntes asignatura desarrollo y administración de sistemas informáticos en la universidad UPSAM. 2) Bases de datos Grid, por Mata Luz y Palacios Carolina. 3) Bases de datos NoSQL  http://es.slideshare.net/mauretoo/conceptos-de-nosolosql 4) Bases de datos XML http://es.wikipedia.org/wiki/Bases_de_datos_nativas_XML 5) Bases de datos NoSQL por Condeña Flores, Mercedes Muñate, Erick Paucca y Carlos Yancce. 6)  NoSQL por el profesor Juan Pablo Murillo de tecnologías de la información. Universidad tecnológica de León. 7)  NoSQL: no es de oro todo lo que reluce  http://www.congdegnu.es/2011/01/31/nosql-no-es-oro-todo-loque-reluce/ 8) Introducción a bases de datos NoSQL en Java. Por Francisco Ferri Pérez. Consultor   tecnológico de proyectos informáticos http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag ina=introduccion_bases_de_datos_nosql 9) Bases de datos No Relacionales. Universidad Deusto por Dr. Diego López de Ipiña  http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j 10) Cassandra  http://cassandra.apache.org/ 11) CouchDB  http://CouchDB.apache.org/ 12)  Neo4j http://neo4j.org/ 13) Comparación servicios  http://kkovacs.eu/cassandra-vs-mongodb- vs-couchdb-vs-redis 14) El futuro de las NoSQL http://martinfowler.com/articles/nosqlintro.pdf UPSAM Rubén Gómez Vallejo 35 Social Media 14. GLOSARIO 1. HDFS: Sistema de archivos utilizado por Haddop que replica datos, d atos, para intentar  conservar copias diferentes de los datos en racks (soporte metalico donde se guarda información) 2. Open source: Término con el que se conoce al software distribuido y desarrollado libremente. 3. Join: Perminte conbinar registros de dos o mas tablas en una base de datos relaciona, en un lenguaje estructurado. 4. TimeStanm: es una secuencia de caracteres, que denotan la hora y la fecha en la que ocurrió un determinado d eterminado evento. Pudiendo ser operables estos elementos. 5. MapReduce: Modelo de programación utilizado por google para dar soporte a la computación paralela sobre grandes colecciones de datos en diversos ordenadores. 6. RDF: Es un framework  para  para metadatos en la Wold Wide Web (www) desarrollado  por el World Wide Web Consorium (W3C) 7. SPARQL: Lenguaje estandarizado estandarizado para la consulta de grafos RDF, normalizado por  el World Wide Web Consortium (W3C) 8. Teleinmersión: Sistema avanzado de telecomunicación de alta velocidad, que  permite captar los movimientos y otros aspectos de usuarios, para para que se retransmitan a través de una red de alta velocidad como internet2 (consorcio sin ánimo de lucro que desarrolla aplicaciones y tecnología de redes avanzaras, la mayoría para transferir información a alta velocidad 9. CQL: lenguaje de consulta en bases de datos de la plataforma cassandra. UPSAM Rubén Gómez Vallejo 36 Social Media 15. ÍNDICE DE IMÁGENES Ilustración 1: Esquema Base de datos orientada a objetos ......................................................... ......................................................... 7 Ilustración 2: NoSQL ................................................................................................ ...................................................................................................................... ...................... 7 Ilustración 3: RDBS vs Keyspace ................................................................... .................................................................................................. ............................... 27 Ilustración 4: SuperColumn Family "Estado de Usuario" ............................................................ ............................................................ 28 Ilustración 5: Estructura de un árbol en Neo4j ........................................................................... 33 16.  BIBLIOGRAFÍA DE IMÁGENES Ilustración 1: http://1.bp.blogspot.com/wpu4FXn0Iuo/Ta9jzeFvkQI/AAAAAAAAAAs/05r3FNGA_4A/s1600/Base DeDatosOO.png  Ilustración 2: http://3.bp.blogspot.com/nAGH_vqWc7g/Tcvt5NVR2FI/AAAAAAAAAaU/prNGkEKxsX0/s1600/nosq l.png  Ilustración 3: Bases de datos no relacionales por Diego Lopez de Piña. http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j  Ilustración 4: Bases de datos no relacionales por Diego Lopez de Piña. http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j  Ilustración 5: Bases de datos no relacionales por Diego Lopez de Piña. http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j UPSAM Rubén Gómez Vallejo 37