You are on page 1of 37

UPSAM (FACULTAD DE INFORMTICA)

BASES NOSQL
Trabajo acadmico II, mes de Abril
Rubn Gmez Vallejo 64021 30/04/2013

Desarrollo y Administracin de sistemas de informacin

Profesor: Luis Joyanes Aguilar Grupo de Clase: Maana Correo electrnico: rgvallejo92@gmail.com

Social Media

NDICE
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. RESUMEN ........................................................................................................................... 3 PALABRAS CLAVE .......................................................................................................... 3 ABSTRACT ......................................................................................................................... 3 KEYWORDS ....................................................................................................................... 3 INTRODUCCIN............................................................................................................... 4 TIPOS DE BASES DE DATOS ......................................................................................... 5 ANTECEDENTES A LAS BASES NoSQL ...................................................................... 6 QU SIGNIFICA NoSQL? .............................................................................................. 7 QU SON LAS BASES DE DATOS NoSQL? ............................................................... 8 VENTAJAS E INCONVENIENTES DE LAS BASES DE DATOS NoSQL ............. 8 CUANDO USAR UNA BASE DE DATOS NoSQL ................................................... 10 TIPOS DE BASES DE DATOS NoSQL...................................................................... 10 ORIENTADAS A FAMILIA DE COLUMNAS ................................................. 11 ORIENTADA A ALMACENAMIENTO DE DOCUMENTOS ....................... 12 ALMACENAMIENTO CLAVE/VALOR .......................................................... 14 CLAVE / VALOR EVENTUALMENTE CONSISTENTE .............................. 17 GRAFOS ................................................................................................................ 18 GRID ...................................................................................................................... 20 XML ....................................................................................................................... 21 CACHES DE MEMORIA .................................................................................... 23 OTROS TIPOS ...................................................................................................... 24

12.1. 12.2. 12.3. 12.4. 12.5. 12.6. 12.7. 12.8. 12.9. 13.

PLATAFORMAS QUE DAN SERVICIO BASES DE DATOS NoSQL ................. 26 CASSANDRA ........................................................................................................ 26 APACHE COUCH DB.......................................................................................... 28 MANGODB............................................................................................................ 30 NEO4J .................................................................................................................... 32

13.1. 13.2. 13.3. 13.4. 12. 13. 14. 15. 16.

CONCLUSIONES ......................................................................................................... 34 BIBLIOGRAFA ........................................................................................................... 35 GLOSARIO ................................................................................................................... 36 NDICE DE IMGENES ............................................................................................. 37 BIBLIOGRAFA DE IMGENES .............................................................................. 37

UPSAM

Rubn Gmez Vallejo

Social Media

1. RESUMEN

El siguiente documento es un trabajo de investigacin de las llamadas bases de datos NoSQL, en el que desarrollaremos los conceptos necesarios para poder entender que son y cmo funcionan. A continuacin, analizaremos las caractersticas de las bases de datos NoSQL, cuando son utilizadas y los tipos que existen. Adems 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 conclusin de que facilidades nos ofrece y de su progresin en un futuro.

2. PALABRAS CLAVE

Bases de datos, clave/valor, columnas, documentos, actualidad, futuro, 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 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, Key/value, columns, documents, current, future, storage.


UPSAM Rubn Gmez Vallejo

Social Media

5. INTRODUCCIN

A parte de las clsicas 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 estn preparadas para ser muy rpidas. Segn su tipo, cada una sigue una estrategia completamente diferente para persistir la informacin y eso es la caracterstica principal que influye en que la rapidez sea mayor. Cabe destacar que normalmente no sustituyen a la base de datos clsica 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 decisin de arquitectura del sistema. A algunas de ellas se puede acceder mediante SQL, pero normalmente no ser as, puesto que cada una tendr una API exclusiva. En definitiva, aunque existan distintos tipos de bases de datos existe la posibilidad de mezclarlos para poder tener un sistema ms especfico que nos ofrezca un mejor servicio.

UPSAM

Rubn Gmez Vallejo

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 desaparicin de alguna en concreto, sino que pueden coexistir e incluso trabajar juntas. Que existan distintos tipos de bases de datos significa que existe la especializacin. 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 informacin critica de un negocio, con origen en las aplicaciones de siempre( CRM, ERP, sistemas legacy, ) 2. NOSQL: Como veremos a continuacin, sirven para capturar de manera segura y escalable, grandes volmenes de informacin continua generados por eventos. 3. Analtica: permiten mltiples usuarios contestar rpidamente preguntas de negocio que requieran de grandes volmenes de informacin. 4. Hadoop (HDFS1& Hive): Sirven para almacenar y procesar grandes volmenes de informacin estructurada o semi-estructurada. 5. BigData: Sirven para almacenar y procesar grandes conjuntos de datos.

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 metlico donde se guarda informacin) diferentes.

UPSAM

Rubn Gmez Vallejo

Social Media

7. ANTECEDENTES A LAS BASES NoSQL

[6]Las bases NoSQL existen desde hace muchos aos (1970), con experimentos en universidades europeas y norteamericanas, sobre sistemas de almacenamiento abiertos. Los almacenamientos de par Clave/Valor que veremos a continuacin, vieron la luz en 1979 con el proyecto DBM, y ms tarde BerkeleyDB (1986). En caso de considerar que LotusDB es una base de datos orientada a documentos las cuales tambin veremos a continuacin, 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 trmino "bases de datos orientadas a objetos" (ODB), fue usado a partir de 1985 (aunque nacieron informalmente una dcada antes), en proyectos de investigacin tales como los de la Universidad de Brown, la de WinscosinMadison, en IRIS en Hewlett Packard, y en los laboratorios Bell o en los de Texas Instrument, en Alemania, no es extrao pensar que NoSQL existe desde antes que SQL (quin arranc en 1977 de la mano de IBM, que no lo hizo comercial sino hasta 1983 con DB2 y el ANSI no lo hizo estndar 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, an siguen en el mercado y muchos de estos proyectos se han convertido en proyectos open source2. Las ODB adquirieron un gran nmero de aplicaciones en reas como la ingeniera y bases de datos geogrficas, telecomunicaciones, y reas cientficas como fsica, biologa molecular y determinados grupos de servicios financieros, siendo de poco uso generalizado la mayora 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, podramos justificar el movimiento NoSQL desde aproximadamente 1979, pero las ODB tambin 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 tenan que aprender SQL para usarlas.
2

Open Source: Trmino con el que se conoce al software distribuido y desarrollado libremente.

UPSAM

Rubn Gmez Vallejo

Social Media

Ilustracin 1: Esquema Base de datos orientada a objetos

8. QU SIGNIFICA NoSQL?
[6]La Originalmente el trmino NoSQL, que fue acuado en 1998, se refera a una base de datos relacional de cdigo abierto que no usaba un lenguaje de consultas SQL (Structured Query 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 cdigo abierto no relacionales, llamndolas NOSQL, Not-Only SQL.

Ilustracin 2: NoSQL

UPSAM

Rubn Gmez Vallejo

Social Media

9. QU SON LAS BASES DE DATOS NoSQL?

Las bases de datos NoSQL son sistemas de almacenamiento de informacin que no cumplen con el esquema entidad-relacin que es el esquema ms habitual, siendo tambin el estudiado por los estudiantes de informtica desde que comienzan a estudiar bases de 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 ms flexibles, ya que suelen permitir almacenar informacin en otros formatos como clave-valor (similar a tablas Hash), mapeo de columnas, documentos o grafos, como veremos a continuacin.

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 traduccin de datos hacia un formato amigable para SQL, las arquitecturas NoSQL son mucho ms rpidas 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 caractersticas.

Join: Permite combinar registros de dos o ms tablas en una base de datos relacional, en un lenguaje estructurado.

UPSAM

Rubn Gmez Vallejo

Social Media

Algunas desventajas de las bases NoSQL son las siguientes: 1. El cdigo 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 cdigo abierto esperan poder ofrecer un soporte comparable. Generalmente el cdigo abierto no tiene un alcance como lo puede tener uno cerrado. Soporte, servicio, credibilidad, etc., son las diferencias 2. No estn lo suficiente elaborados. Es decir no estn los suficientemente maduros para algunas empresas, porque a pesar de sus puestas en prcticas en grandes empresas, aun se enfrentan al problema de credibilidad importante con muchas empresas. A diferencia que los distintos servicios que ofrecen madurez, estabilidad, y una gran funcionalidad eso en los sistemas NoSQL, todava 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 ms simple consulta y anlisis implica grandes conocimientos de programacin. 4. La falta de experiencia. La novedad de NoSQL es un gran problema y es que no existen desarrolladores y administradores que conocen la tecnologa y la pueden gestionar, por lo que en caso de querer implantar un sistema NoSQL ser ms complicado encontrar personal cualificado. 5. Problemas de compatibilidad. A diferencia de las bases de datos relacionales, que comparten ciertos estndares, las bases de datos NoSQL tienen pocas normas en comn. 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 satisfecho con el servicio.

UPSAM

Rubn Gmez Vallejo

Social Media

10

11.

CUANDO USAR UNA BASE DE DATOS NoSQL

Si pretendemos desarrollar una aplicacin 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 informacin.

Se puede utilizar una base de datos NoSQL para almacenar toda la informacin de una aplicacin, aunque en la mayora de los casos se recurre a sistemas mixtos que combinan los clsicos sistemas relacionales (fcilmente 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 indexacin de un gran nmero de documentos, servir paginas en sitios de mucho trfico y envo de datos streaming. Las RDBMS estn optimizadas para pequeas pero habituales transacciones de tipo lectura y escritura o largas transaccin 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 caractersticas, siendo estas muy definidas respecto a los otros tipos. A continuacin veremos las caractersticas ms importantes de estos tipos de bases de datos y una tabla dicindonos que producto nos ofrece este tipo de bases de datos y que empresas lo usan. Ms tarde en el siguiente punto analizaremos estas empresas que ofrecen los servicios, como Cassandra, HBase, MongoDB, Couch DB, etc.

UPSAM

Rubn Gmez Vallejo

Social Media

11

12.1. ORIENTADAS A FAMILIA DE COLUMNAS

Las bases de datos NoSQL orientadas a familia de columnas son aquellas cuyo precursor es Google BigTAble. Su almacenamiento bsico es la columna: nombre, valor. Una familia de columna es una clave seguida de un nmero variable de columnas. Su equivalente relacional seria una tabla. Cassandra y otras incluyes implcitamente el timestamp4 en cada columna para manejar versiones de los datos. Destacan por: Una buena gestin de tamao Cargas de escrituras masivas orientadas al stream Alta disponibilidad MapReduce5

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 programacin utilizado por Google para dar soporte a la computacin paralela sobre grandes colecciones de datos en diversos ordenadores.

UPSAM

Rubn Gmez Vallejo

Social Media

12

12.2. ORIENTADA A ALMACENAMIENTO DE DOCUMENTOS

La informacin se almacena en objetos xml, json, etc. Renuncian a la estructura fija de datos usual en RDBMS. Almacenan informacin semiestructurada. Documentos con diferentes estructuras pueden ser adicionados sin afectar la estructura de los documentos ya existentes. Los almacenes de documentos guardan la informacin como un listado de documentos desestructurados. Al acceder a un documento, se puede acceder a un nmero no especificado de campos con sus respectivos valores. Son muy rpidos para recuperar toda la informacin 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.

Su precursora fue Lotus Notes y son buenas en: Modelado de datos natural Fcilmente programables Desarrollo rpido Orientadas a la web

UPSAM

Rubn Gmez Vallejo

Social Media

13

UPSAM

Rubn Gmez Vallejo

Social Media

14

12.3. ALMACENAMIENTO CLAVE/VALOR

Su precursor fue Amazon Dynamo. Los caches de memoria utilizan normalmente el esquema key-value para guardad la informacin 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 bsico, solo requiere una clave y un valor. Este tipo de bases de datos suele ser extremadamente rpido y permite una gran cantidad de accesos al mismo tiempo

UPSAM

Rubn Gmez Vallejo

Social Media

15

UPSAM

Rubn Gmez Vallejo

Social Media

16

UPSAM

Rubn Gmez Vallejo

Social Media

17

12.4. CLAVE / VALOR EVENTUALMENTE CONSISTENTE

Las bases de datos Clave/Valor eventualmente consistentes, ofrecen consistencia salvo en casos de cadas criticas y tienen un manejo de versiones de cada registro, y herramientas para solucionar conflictos, todo esto, a cambio de rapidez en 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 mtodos de resolucin de conflictos de versiones.

UPSAM

Rubn Gmez Vallejo

Social Media

18

12.5. GRAFOS

Las bases de datos NoSQL basadas en grafos estn inspiradas en Euler y fundamentadas en la teora de grafos. La informacin se guarda en estructuras de nodos, arcos (conexiones) y propiedades (de arcos y nodos). Estn 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

Rubn Gmez Vallejo

Social Media

19

Tambin en esta categora podramos destacar a: AllegroGraph: Base de datos para almacenamiento de RDF 6 para aplicaciones de Ingeniera del Conocimiento y redes semnticas (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 informacin en forma de grafos o redes. Soporta una variedad importante de representaciones de entidades y sus relaciones, como grafos orientados, sin orientacin, grafos multimodales, grafos con bordes paralelos e hipergrafos. Facilita la creacin de herramientas de anlisis para conjuntos de datos complejos. Tambin puede guardarse informacin de metadatos sobre las entidades en cuestin. De este estilo tambin existe un proyecto open source llamado iGraph, otro para estudio de redes complejas llamado NetworkX y DEX, un proyecto desarrollado por la Universidad politcnica de Catalunya. Para finalizar en esta categora, tenemos a OpenLink Virtuoso, una mezcla hbrida de Relacional, BD documental, de Grafos y OO (orientada a objetos).

RDF: Es un 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

Rubn Gmez Vallejo

Social Media

20

12.6. GRID

Las Bases de Datos GRID es una tecnologa Innovadora que permite utilizar de forma coordinada diversos recursos del ordenador entre ellos capacidad de computacin, super ordenadores, dispositivos mviles, ordenadores porttiles, software, datos e informacin distribuidos de forma geogrfica y conectados mediante redes WAN (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 localizacin 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 slo se trata de compartir ciclos de CPU para realizar clculos complejos, sino que se busca la creacin de una infraestructura distribuida. Los posibles campos de aplicacin de este tipo de bases de datos podran ser: 1. Supercomputacin Distribuida: Simulaciones, Herramientas de clculo numrico, procesos de anlisis de datos, extraccin de conocimientos de almacenes de datos, etc. 2. Sistemas Distribuidos en Tiempo Real: Medicina (tratamiento de imagen para visin artificial). 3. Proceso Intensivo de Datos: Gestores de bases de datos distribuidos.

4. Servicios Puntuales: Aplicaciones que permiten acceder al hardware especfico para la realizacin de labores a distancia. 5. Entornos Virtuales de Colaboracin: Teleinmersin8

Teleinmersin: Sistema avanzado de telecomunicacin de alta velocidad, que permite captar los movimientos y otros aspectos de usuarios, para que se retransmitan a travs de una red de alta velocidad como internet2 (consorcio sin nimo de lucro que desarrolla aplicaciones y tecnologa de redes avanzaras, la mayora para transferir informacin a alta velocidad

UPSAM

Rubn Gmez Vallejo

Social Media

21

12.7. XML

[4] Son bases de datos NoSQL, basados en un modelo lgico para el documento XML. Adems, almacena y recupera documentos de la misma manera que los XML. Algunas de sus caractersticas principales son las siguientes: 1. Procesamiento de datos El procesamiento de datos en este tipo de bases de datos parecera ser algo muy beneficioso, pero realmente no es as, debido al formato jerrquico en el que est almacenada la informacin. 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 an no existe un lenguaje estndar que permita la actualizacin, insercin o eliminacin de elementos de un documento XML. Existe un lenguaje que permite realizar actualizaciones en un documento XML pero an no es un estndar y muchos gestores de este tipo de bases de datos no lo soportan, este lenguaje es Xupdate. 2. Almacenamiento Por deduccin lgica, una base de datos nativa en XML almacena la informacin en formato XML, pero esto es solamente una deduccin lgica, 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

Rubn Gmez Vallejo

Social Media

22

3. Bsquedas 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 debern tener ndices mientras que otras bases de datos indexan todo el contenido del documento. El problema que tienen las bsquedas en este tipo de bases de datos es que no permiten realizar bsquedas muy complicadas, como por ejemplo ordenamiento y cross join, debido a que Xphat no fue creada realmente para bsquedas en bases de datos, sino simplemente para bsquedas en un solo documento. Muchas bases de datos permiten realizar bsquedas utilizando la tecnologa Full-Text Search, de esta manera se puede agilizar la bsqueda de datos en los documentos XML

UPSAM

Rubn Gmez Vallejo

Social Media

23

12.8. CACHES DE MEMORIA

Los caches en memoria son almacenamientos simples que se colocan entre la base de datos y la aplicacin 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 rpida y sencilla

UPSAM

Rubn Gmez Vallejo

Social Media

24

12.9. OTROS TIPOS

UPSAM

Rubn Gmez Vallejo

Social Media

25

UPSAM

Rubn Gmez Vallejo

Social Media

26

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 cdigo 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 programacin esta teniendo una alta popularidad. Est diseado 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 tambin como un nodo simple, ofreciendo: 1. Escalabilidad horizontal 2. Rpidas respuestas incluso con gran demanda 3. Elevadas velocidades de escritura para gestionar volmenes de datos incrementales 4. 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. Deteccin de fallos automtica 8. No hay un 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 eso supone un aumento de velocidad 2. No permite ordenar resultados en tiempo de consulta

UPSAM

Rubn Gmez Vallejo

Social Media

27

3. No tiene SQL a. Desde la versin 0.8 existe CQL9

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.

Ilustracin 3: RDBS vs Keyspace

Diseado para distribuidos de modo escalable, sacrificando ACID por ventajas en rendimiento, disponibilidad y gestin 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 bsicos son:

CQL: lenguaje de consulta en cassandra.

UPSAM

Rubn Gmez Vallejo

Social Media

28

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 rplica 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 aplicacin. (Se suele relacionar con una base de datos con modelo relacional)

Ilustracin 4: SuperColumn Family "Estado de Usuario"

Columnfamily: Contienen varias columnas. Suelen vincularse con una tabla en el modelo relacional. SuperColumn: columnas que ellas mismas tienen sub-columnas. Column: compuestas de un nombre, de un valor y un timestamp.

13.2. APACHE COUCH DB

Es una base de datos open source orientada a documentos, accesible mediante una API que hace uso extensivo de JavaScript Objet Notation (JSON). Esta escrita en un lenguaje llamado Erlang, es parte de la generacin de bases NoSQL, proyecto opensource de la fundacin apache y motor de almacenamiento basado en Btree. Algunas de sus caractersticas son las siguientes: Es altamente concurrente, diseada para ser replicada de forma horizontal, a travs de varios dispositivos y tolerante a fallos. Utiliza map/reduce para indexar y consultar la base de datos. Permite escribir una aplicacin cliente que habla directamente va HTTP con CoouchDB sin necesidad de una capa servidora intermedia.

UPSAM

Rubn Gmez Vallejo

Social Media

29

Guarda datos en local en la propia maquina cliente para reducir latencia, gestionando una replicacin 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 de auto-increment o secuencia.,. No soporta JOINs como las bases de datos relacionales. Ofrece una mejor solucin a servicios como wikis, blogs y sistemas de gestin 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 creacin a la replicacin a la insercin de datos, toda la gestin de datos en CouchDB puede ser realizada va HTTP. Replicacin N-Master: puedes hacer uso de un nmero ilimitado de masters, dando lugar a topologas de replicacin muy interesantes Escrita para ejecutarse offline: CouchDB puede replicarse en dispositivos (ej. telfonos Android) que pueden quedarse sin conexin y gestionar sincronizacin 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 leer y modificar estos documentos. Cada documento contiene metadatos como el identificador del documento y su nmero de revisin. Los campos de los documentos pueden ser de diversos tipos, como string, nmeros, booleanos, colecciones, etc. Tambin existen las vistas que son el mecanismo para aadir estructura a datos semiestructurados. El modelo usa JavaScriot para poder describirlas. En definitiva, las vistas son el mtodo para agregar y realizar informes sobre los documentos de un repositorio, siendo creados en demanda para agregar documentos. Las vistas tambin constituyen dinmicamente y no afectan los documentos subyacentes.

UPSAM

Rubn Gmez Vallejo

Social Media

30

CouchDB est diseado para almacenar y reportar sobre grandes volmenes de datos orientados a documentos semi-estructurados. Con CouchDB, no se impone ningn esquema, nuevos tipos de documentos con distintos campos y significados se pueden unir a los existentes. El motor de vistas, apoyado en JavaScript, est diseado para facilitar la gestin 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 mayora 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 dinmico, haciendo que la integracin de los datos en ciertas aplicaciones sea mas fcil y rpido.

Caractersticas principales Consultas Ad hoc: MongoDB soporta la bsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden devolver un campo especfico del documento pero tambin puede ser una funcin JavaScript definida por el usuario. Indexacin: 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

Rubn Gmez Vallejo

Social Media

31

Replicacin: MongoDB soporta el tipo de replicacin maestro-esclavo. El maestro puede ejecutar comandos de lectura y escritura. El esclavo puede copiar los datos del maestro y slo 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 sern distribuidos los datos en una coleccin. los datos son divididos en rangos (basado en la llave shard) y distribuidos a travs de mltiples shard. o Un shard es un maestro con uno o ms esclavos. o MongoDB tiene la capacidad de ejecutarse en mltiple servidores, balanceando la carga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware. 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 replicacin de datos utilizando mltiples servidores para el almacenamiento de archivos. o Esta funcin (que es llamada GridFS) est incluida en los drivers de MongoDB y disponible para los lenguajes de programacin que soporta MongoDB. Agregacin: La funcin MapReduce puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregacin. Esta funcin permite que los usuarios puedan obtener el tipo de resultado que se obtiene cuando se utiliza el comando SQL group-by. Ejecucin 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.

Manipulacin de datos MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinmico 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 coleccin puede tener un nmero indeterminado de documentos. Las colecciones son

UPSAM

Rubn Gmez Vallejo

Social Media

32

como tablas y los documentos como filas. Cada documento en una coleccin 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 programacin. Como valor se pueden usar nmeros, cadenas o datos binarios como imgenes o cualquier otro key-value pairs

13.4. NEO4J

Se trata de una base de datos de grafos. Una coleccin 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, diseo de modelo de datos de abajo a arriba.

Caractersticas 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 jerrquicos o en forma de red Modelo de datos flexible consistente de nodos, relaciones y propiedades Tiene un rendimiento de 1000x que RDBMS Almacenamiento en disco nativo optimizado para guardar estructuras de grafos para mximo rendimiento y escalabilidad o Recorre grafos de profundidad 1000 a velocidad de milisegundos. Mxima escalabilidad, puede gestionar billones de grafos de nodos/relaciones/propiedades en una sola mquina 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 coleccin. Los nodos: Se organizan en relaciones, que tambin tienen un campo propiedad.

UPSAM

Rubn Gmez Vallejo

Social Media

33

Un traversal: Navega en un grafo, identifica caminos que ordenan nodos. Permite encontrar respuestas a preguntas de las tpicas querys. Un ndice: Mapea de propiedades pudiendo ser de nodos o relaciones. Permite encontrar un nodo o relacin en funcin de una propiedad.

Ilustracin 5: Estructura de un rbol en Neo4j

UPSAM

Rubn Gmez Vallejo

Social Media

34

12.

CONCLUSIONES

Como hemos podido observar durante el desarrollo del trabajo, las bases de datos NoSQL estn en constante evolucin y se presenta como una herramienta muy til y que dentro de poco tiempo ser implantada en ms servicios web. Las bases de datos NoSQL son soluciones especializadas que atacan una problemtica muy especfica (escalamiento, concurrencia, gran volumen de datos), pero quedando claro que no son un reemplazo a las bases de datos actuales ms usadas, las relacionales y no siempre pueden ser utilizadas. El xito estar en conocer y conjuntar los dos tipos de bases de datos. Las NoSQL y las relacionales son perfectamente 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 ms 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 opcin.

UPSAM

Rubn Gmez Vallejo

Social Media

35

13.

BIBLIOGRAFA

1) Profesor Luis Joyanes. Apuntes asignatura desarrollo y administracin de sistemas informticos 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 Condea Flores, Mercedes Muate, Erick Paucca y Carlos Yancce. 6) NoSQL por el profesor Juan Pablo Murillo de tecnologas de la informacin. Universidad tecnolgica de Len. 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) Introduccin a bases de datos NoSQL en Java. Por Francisco Ferri Prez. Consultor tecnolgico de proyectos informticos
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 Lpez de Ipia 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) Comparacin servicios http://kkovacs.eu/cassandra-vs-mongodbvs-couchdb-vs-redis

14) El futuro de las NoSQL http://martinfowler.com/articles/nosqlintro.pdf UPSAM Rubn Gmez Vallejo

Social Media

36

14.

GLOSARIO

1. HDFS: Sistema de archivos utilizado por Haddop que replica datos, para intentar conservar copias diferentes de los datos en racks (soporte metalico donde se guarda informacin) 2. Open source: Trmino 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 evento. Pudiendo ser operables estos elementos. 5. MapReduce: Modelo de programacin utilizado por google para dar soporte a la computacin paralela sobre grandes colecciones de datos en diversos ordenadores. 6. RDF: Es un 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) 8. Teleinmersin: Sistema avanzado de telecomunicacin de alta velocidad, que permite captar los movimientos y otros aspectos de usuarios, para que se retransmitan a travs de una red de alta velocidad como internet2 (consorcio sin nimo de lucro que desarrolla aplicaciones y tecnologa de redes avanzaras, la mayora para transferir informacin a alta velocidad 9. CQL: lenguaje de consulta en bases de datos de la plataforma cassandra.

UPSAM

Rubn Gmez Vallejo

Social Media

37

15.

NDICE DE IMGENES

Ilustracin 1: Esquema Base de datos orientada a objetos ......................................................... 7 Ilustracin 2: NoSQL ...................................................................................................................... 7 Ilustracin 3: RDBS vs Keyspace .................................................................................................. 27 Ilustracin 4: SuperColumn Family "Estado de Usuario" ............................................................ 28 Ilustracin 5: Estructura de un rbol en Neo4j ........................................................................... 33

16.

BIBLIOGRAFA DE IMGENES

Ilustracin 1: http://1.bp.blogspot.com/wpu4FXn0Iuo/Ta9jzeFvkQI/AAAAAAAAAAs/05r3FNGA_4A/s1600/Base DeDatosOO.png

Ilustracin 2: http://3.bp.blogspot.com/nAGH_vqWc7g/Tcvt5NVR2FI/AAAAAAAAAaU/prNGkEKxsX0/s1600/nosq l.png

Ilustracin 3: Bases de datos no relacionales por Diego Lopez de Pia.


http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j

Ilustracin 4: Bases de datos no relacionales por Diego Lopez de Pia.


http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j

Ilustracin 5: Bases de datos no relacionales por Diego Lopez de Pia.


http://es.slideshare.net/dipina/nosql-cassandra-couchdbmongodb-y-neo4j

UPSAM

Rubn Gmez Vallejo

You might also like