Está en la página 1de 27

UNIVERSIDAD PONTIFICIA DE SALAMANCA Facultad de Informtica

Sistemas de Informacin

Trabajo acadmico n 2

Bases de datos NoSQL. Herramientas, soluciones y proveedores

Rodrigo Martin del Rio Profesor: Luis Joyanes Aguilar Grupo de clase: I41M N Expediente: 64283 Correo electrnico: rodrigomartin96@yahoo.es (Diciembre 2013)

ndice
1. Resumen-Abstract Pag. 3 2. Palabras clave-Keywords Pag. 3 3. Introduccin-Introduction Pag. 4 4. Estado del Arte Pag. 5 5. Herramientas 6. Soluciones 7. Proveedores 8. Conclusin Pag. 30 9. Referencias Pag. 31

Resumen
En el siguiente documento les informaremos acerca de las bases de datos NoSQL; que es, como es, donde se aplica, herramientas y soluciones que arrojaran luz en lo que hemos explicado. Hoy da dentro del mundo de los negocios y particularmente en aquellos del mundo del internet o la informtica es una corriente imperante y muy til para conseguir beneficios y resultados.

Abstract
The following document will inform about NoSQL databases, which is, as is, where is applicable, tools and solutions that shed light on what we've discussed. Today within the business world and particularly in those of the world of internet or computer is prevailing and very useful for current benefits and results.

Palabras clave
NoSQL, base de datos, SQL, DB

Keywords
NoSQL, database, SQL, DB, social, Internet, Social media

Introduccin
NoSQL representa una oportunidad significativa de innovacin para las bases de datos. Muchas empresas se dan cuenta de que necesitan manejar grandes volmenes de datos no estructurados e informacin masiva que no puede manejar una base de datos relacional.

NoSQL es el soporte para crear bases de datos de Big Data; los antiguos modelos de bases de datos son inefectivos e intiles ante los volmenes de informacin que manejan empresas como google, Amazon, Facebook, etc.

Introduction

NoSQL represents a significant opportunity for innovation databases. Many companies realize that they need to handle large volumes of unstructured data and massive information that cannot handle a relational database.

NoSQL is support for creating databases of Big Data, the old models of databases are ineffective and useless to the volumes of information they have companies like Google, Amazon, Facebook, etc.

Estado del arte


Historia
Carlo Strozzi us el trmino NoSQL en 1998 para referirse a su base de datos. Era una base de datos open-source, ligera, que no ofreca un interface SQL, pero s segua el modelo relacional (Strozzi sugiere que, ya que el actual movimiento NoSQL "Se sale completamente del modelo relacional, debera, por tanto, haberse llamado 'NoREL', o algo as.") Eric Evans, un empleado de Rackspace, reintrodujo el trmino NoSQL cuando Johan Oskarsson de Last.fm quiso organizar un evento para discutir bases de datos distribuidas de cdigo abierto. El nombre intentaba recoger el nmero creciente de bases de datos no relacionales y distribuidos que no garantizaban ACID, atributo clave en las RDBMS clsicas. [1]

Las Bases de datos relacionales eran el pilar principal del negocio de las bases de datos, no se poda entender el hacer una base de datos para un sitio serio que no fuera se tipo relacional o SQL. Las aplicaciones basadas en Web causaron fallos, especialmente para los sitios de comercio electrnico de orientacin al pblico. Los desarrolladores comienzan a usar memoria cache o integrar otros mecanismos de almacenamiento en cach dentro de la aplicacin para poder manejarla. [2]

Problemas con la escabilidad, cuando el conjunto de datos es demasiado grande porque las RDBMS no fueron diseadas para ser distribuidos a esas escalas, se comenz a buscar soluciones de bases de datos multi-nodo. Conocido como "escalar" o "escalado horizontal". Se crearon dos tipos diferentes de enfoques que incluyen: -Maestro-esclavo -Fragmentacin

Maestro-Esclavo Todas las escrituras se escriben en el maestro. Todas las lecturas realizadas contra las bases de datos replicadas de esclavos - Las Lecturas crticas pueden ser incorrecta como escrituras si no han sido propagadas hacia abajo. - Conjuntos de datos grandes pueden plantear problemas cuando maestro tiene que duplicar los datos a los esclavos.

Fragmentacin - Se escala bien tanto para lecturas y escrituras -No es transparente, la aplicacin tiene que ser consciente de las particiones. -Ya no puede tener relaciones / uniones a travs de particiones. -La prdida de integridad referencial a travs de fragmentos.

Otros modos de escalar una base de datos RDBMS Replicacion de multiples maestros Solo realizar operaciones de INSERT, no de UPDATES o DELETES. No realizar JOINs, por lo tanto reduciendo el tiempo de bsqueda In-memory databases(bases de datos en memoria)

Qu es NoSQL?
Todos los soportes para Not Only SQL cumplen: - Clase de los sistemas de almacenamiento de datos no relacionales -Por lo general, no requieren un esquema de tablas fija ni tampoco utilizan el concepto de combinaciones -Todas las ofertas de NoSQL relajan una o ms de las propiedades ACID

Para el almacenamiento de datos, un RDBMS no puede ser usado para todo, igual que hay diferentes lenguajes de programacin, necesitas tener otras herramientas de almacenamiento de datos en la caja de herramientas. Una solucin NoSQL es ms aceptable para un cliente ahora que hace un ao. Ahora puede pensar en proponer una solucin de Ruby / Rails o Groovy / Grails ahora frente a un par de aos atrs donde no se haca.

Cmo hemos llegado a esto?


Explosin de los sitios de medios sociales (Facebook, Twitter) con las necesidades de datos de gran tamao y La rebelin de las soluciones basadas en la nube como Amazon S3 (solucin de almacenamiento sencilla) que requieren unas cantidades masivas de datos. As como la adopcin de las lenguas dinmicamente clasificadas (Rub / Groovy), un cambio en los datos dinmicamente clasificados con frecuentes cambios de esquema. La comunidad de cdigo abierto ha ayudado mucho tambin al desarrollo de NoSQL. Tres documentos importantes fueron las semillas del movimiento NoSQL[2] : -BigTable (Google) -Dynamo (Amazon) Protocolo Gossip (descubrimiento y deteccin de errores) Almacn de datos clave-valor Distribuido Consistencia eventual - Teorema CAP

Conjuntos de datos grandes, la aceptacin de las alternativas, y los datos de forma dinmica tipadas se ha unido en una situacin que no puede ser soportada por RDBMS. No es una reaccin de retroceso / rebelin contra RDBMS; SQL es un lenguaje de consulta poderoso que no puede ser igualado por la actual lista de ofertas NoSQL.

BigTable[12]
BigTable es un sistema de gestin de base de datos creado por Google con las caractersticas de ser: distribuido, de alta eficiencia y propietario. Est construido sobre GFS (Google File System), Chubby Lock Service, y algunos otros servicios y programas de Google, y funciona sobre 'commodity hardware' (sencillos y baratos PCs con procesadores Intel). BigTable comenz a ser desarrollado a principios de 2004. BigTable almacena la informacin en tablas multidimensionales cuyas celdas estn, en su mayora, sin utilizar. Adems, estas celdas disponen de versiones temporales de sus valores, con lo que se puede hacer un seguimiento de los valores que han tomado histricamente. Para poder manejar la informacin, las tablas se dividen por columnas, y son almacenadas como 'tabletas' de unos 100-200 Mbytes cada una. Cada mquina almacena 100 tabletas, mediante el sistema 'Google File System'. La disposicin permite un sistema de balanceo de carga (si una tableta est recibiendo un montn de peticiones, la mquina puede desprenderse del resto de las tabletas o trasladar la tableta en cuestin a otra mquina) y una rpida recomposicin del sistema si una mquina 'se cae'.

Teorema CAP [3]


Figura 1: teorema CAP

El teorema CAP es vital para entender a las bases de datos NoSQL siendo de tanta importancia como el ACID, se distingue por: -Tres propiedades de un sistema: la consistencia, disponibilidad y particiones, puede tener como mximo dos de estas tres propiedades de cualquier sistema de datos compartidos -Para escalar, deber crear una particin. Eso deja a cualquiera consistencia o disponibilidad para elegir; en casi todos los casos, usted elegira disponibilidad sobre la coherencia Disponibilidad Tradicionalmente, el pensamiento de que el servidor / proceso disponibles cinco 9 "s (99.999%). Sin embargo, para el sistema de nodo grande, en casi cualquier punto en el tiempo que hay "muchas posibilidades de que un nodo este inactivo o si hay una interrupcin de la red entre los nodos y requiere un sistema que es resistente frente a la interrupcin de la red Consistencia Modelo Un modelo de consistencia determina las reglas para la visibilidad y el aparente fin de las actualizaciones. Por ejemplo: Fila X se replica en nodos M y N, El cliente A escribe fila X al nodo N, Un cierto perodo de tiempo t ha transcurrido. El cliente B lee la fila X desde el nodo M. El cliente B ve la escritura desde el cliente A? La consistencia es un continuo con intercambios. Para NoSQL, la respuesta sera: tal vez, el teorema CAP afirma: la consistencia estricta no se puede lograr, al mismo tiempo que la disponibilidad y la particin de tolerancia. Cuando no se producen cambios durante un largo periodo de tiempo, con el tiempo todos los cambios se propagan a travs del sistema y todos los nodos sern consistentes. Para una actualizacin aceptada dada y un nodo dado, con el tiempo, ya sea que la actualizacin alcanza el nodo o el nodo queda fuera de servicio; el nueo modelo ser conocido como BASE (Disponible Bsicamente, estado suave, consistencia eventual), en oposicin a ACID

Soluciones SQL
Soluciones NoSQL se dividen en dos grandes reas: -Key/Value o la la tabla hash grande. Amazon S3 (Dynamo) Voldemort Scalaris

-Schema-less que viene en varios tipos, a base de la columna, o basado en grficos o basados en documentos. Cassandra (basada en columnas) CouchDB (basado en documentos) Neo4J (basado en el grfico) HBase (basada en columnas)

Ventajas
Es barato y fcil de implementar en el caso de los que son de cdigo abierto Los datos se replican en varios nodos (por lo tanto idntica y tolerante a fallos) y se pueden dividir, tienen Sustituido hacia debajo de nodos fciles y ningn punto nico de fallo. Fcil de distribuir No requieren un esquema Puede escalar hacia arriba y abajo Relajar el requisito de coherencia de datos (CAP)

Qu pierdo?
Las ordenes del SQL: join, group by, order by transacciones ACID SQL como lenguaje de consulta a veces frustrante, pero todava poderoso fcil integracin con otras aplicaciones que soportan SQL

Key/Value (clave/valor)
En trminos de SQL, una base de datos NoSQL es una sola tabla con dos columnas: uno es la (Primaria) Clave, y el otro es el valor. Y eso es todo, eso es toda la magia NoSQL. Usted podra utilizar NoSQL por una razn principal: la escalabilidad. Si su aplicacin necesita manejar millones de consultas por segundo, la nica manera de lograrlo es aadir ms servidores. Es muy barato y fcil con NoSQL. En contraste, escalar una base de datos de SQL tradicional es mucho ms complicado. Slo los ms grandes sitios web por ah son realmente aprovechando todo el potencial de NoSQL, es decir, Facebook, habiendo miles de servidores que ejecutan Cassandra. Las bases de datos Clave/Valor eventualmente consistentes, ofrecen consistencia salvo en casos de cadas crticas y tienen un manejo de versiones de cada registro, y herramientas para solucionar conflictos, todo esto, a cambio de rapidez en procesos delectura 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. Pros: -Muy rpido -Muy escalable -Modelo simple -Capaz de distribuir horizontalmente Contras: - Muchas estructuras de datos (objetos) que no pueden ser fcilmente modelados como pares de valores clave.

Schema-Less (esquemtica)
Pros: - Modelo de datos de esquema es menos rica que pares clave / valor -consistencia eventual -muchos estn distribuidos -aun as proporciona un excelente rendimiento y escalabilidad Contras: - Tpicamente no hay transacciones ACID o uniones

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.

Basadas en 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.

Columnas 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 sera una tabla. Cassandra y otras incluyes implcitamente el timestamp(es una secuencia de caracteres, que denotan la hora y la fecha en la que ocurri undeterminado evento. Pudiendo ser operables estos elementos) en cada columna para manejar versiones de los datos

Cassandra
Apache Cassandra es una base de datos NoSQL distribuida y basada en un modelo de almacenamiento de clave-valor, escrita en Java. Permite grandes volmenes de datos en forma distribuida. Por ejemplo, lo usa Twitter para su plataforma. Su objetivo principal es la escalabilidad lineal y la disponibilidad. La arquitectura distribuida de Cassandra est basada en una serie de nodos iguales que se comunican con un protocolo P2P con lo que la redundancia es mxima. Cassandra est desarrollada por Apache Software Foundation. En las versiones iniciales utilizaba un API propia para poder acceder a la base de datos. En los ltimos tiempos estn apostando por un lenguaje denominado CQL (Cassandra Query Language) que posee una sintaxis similar a SQL aunque con muchas menos funcionalidades. Esto hace que iniciarse en el uso de la misma sea ms sencillo. Permite acceder en Java desde JDBC. Propiedades [4-5] Descentralizado: Todos los nodos del clster tiene el mismo papel. No hay ningn punto nico de fallo. Los datos se distribuyen a travs del clster (por lo que cada nodo contiene datos diferentes), pero no hay ningn maestro como cada nodo puede dar servicio a cualquier solicitud. Admite la replicacin y la replicacin de mltiples centros de datos: las estrategias de replicacin son configurable. Cassandra est diseado como un sistema distribuido, para el despliegue de un gran nmero de nodos a travs de mltiples centros de datos. Las principales caractersticas de la arquitectura distribuida de Cassandra estn diseados especficamente para el desarrollo de centros de datos - mltiple, la redundancia, la conmutacin por error y recuperacin de desastres. Escalabilidad: Leer y escribir el rendimiento tanto aumento lineal a medida que se agregan nuevas mquinas, sin tiempo de inactividad o interrupcin de las aplicaciones. Tolerancia a fallos: Los datos se replican automticamente en mltiples nodos para la tolerancia a fallos. Replicacin a travs de mltiples centros de datos es compatible. Nodos fallidos se pueden reemplazar sin tiempo de inactividad. Consistencia Ajustable: escribe y lee ofrecen un nivel ajustable de la coherencia, todo el camino desde " nunca escribe fallar " al " bloque para todas las rplicas sea legible , con el nivel de qurum en el medio. Apoyo MapReduce: Cassandra tiene integracin Hadoop, con el apoyo MapReduce. Existe un apoyo tambin para Apache Pig y Apache Hive. Lenguaje de consulta: CQL (Cassandra Query Language) se introdujo, una alternativa similar a SQL para la interfaz RPC tradicional. Conductores de

idioma estn disponibles para Java (JDBC), Python (DBAPI2) y Node.JS (Helenus).

Clustering [6] Cuando el grupo de Apache Cassandra est diseado, un punto importante es la seleccin de la herramienta de particionado correcta. Existen dos divisores: RandomPartitioner (RP): Este particionador distribuye aleatoriamente los pares clave-valor en la red, lo que resulta en un buen equilibrio de carga. En comparacin con la OPP, ms nodos tienen que ser visitada para obtener un nmero de teclas. OrderPreservingPartitioner (OPP): Este particionador distribuye los pares clavevalor de una manera natural, de modo que las claves similares no estn muy lejos. La ventaja es que un menor nmero de nodos tienen que ser visitada. El inconveniente es la distribucin desigual de los pares clave-valor.

Voldemort [7]
Voldemort no es una base de datos relacional, que no trata de satisfacer las relaciones arbitrarias al tiempo que satisface las propiedades ACID. Tampoco se trata de una base de datos de objeto que intenta asignar de forma transparente las grficas de referencia a objetos. Tampoco introducir una nueva abstraccin, como documento de orientacin. Es bsicamente una distribucin grande y persistente de alta disponibilidad hash. Para las aplicaciones que pueden utilizar un asignador de O / I like-registro activo o hibernar esto proporcionar la escalabilidad horizontal y mucho ms alta disponibilidad, pero a la gran prdida de conveniencia. Para grandes aplicaciones bajo presin escalabilidad de tipo Internet, un sistema puede probablemente consiste en una serie de servicios o apis funcionalmente con particiones, que pueden gestionar los recursos de almacenamiento a travs de mltiples centros de datos utilizando los sistemas de almacenamiento que pueden ellos mismos ser dividida horizontalmente. Para aplicaciones en este espacio, arbitrarias en la base de datos que se unen ya son imposibles ya que todos los datos no estn disponible en ninguna base de datos nica. Un patrn tpico es introducir una capa de almacenamiento en cach que requerir la semntica tabla hash de todos modos. Para estas aplicaciones Voldemort ofrece una serie de ventajas:

Voldemort combina en el almacenamiento en cach de memoria con el sistema de almacenamiento de modo que no se requiere un nivel de almacenamiento en cach separada (en lugar del sistema de almacenamiento en s es simplemente rpido) A diferencia de la replicacin MySQL, lecturas y escrituras escalar horizontalmente En porciones de datos es transparente, y permite la expansin clster sin reequilibrar todos los datos La replicacin de datos y colocacin se decide por una API simple para ser capaz de dar cabida a una amplia gama de estrategias de aplicacin especfica La capa de almacenamiento es completamente prototipable lo que el desarrollo y la prueba de la unidad se puede hacer frente a un sistema de usar y tirar en la memoria de almacenamiento sin necesidad de un clster real (o incluso un sistema de almacenamiento real) para las pruebas simples.

Propiedades El Voldemort distribuye almacn de datos tiene las siguientes propiedades: La colocacin de los datos: El apoyo a las estrategias de colocacin de datos conectables existe para apoyar cosas como la distribucin a travs de los centros de datos que son muy distantes. La replicacin de datos: Los datos se replican automticamente a travs de un gran nmero de servidores. Particin de datos: Los datos se dividen automticamente de modo que el servidor contiene slo un subconjunto de los datos totales. Buen rendimiento de un solo nodo: operaciones 10 - 20k por segundo pueden ocurrir dependiendo de las mquinas, la red, el sistema de discos, y el factor de replicacin de datos. Independencia Nodo: Cada nodo es independiente de otros nodos con un punto central de la insuficiencia o la coordinacin. Serializacin enchufable: Permite teclas ricos y valores, incluyendo listas y tuplas con los campos de nombre, as como la integracin con los marcos de serializacin comunes. Ejemplos de estos marcos son Avro, Java serializacin, Protocolo Buffers y Thrift. Fracasos transparentes: fallos en el servidor se manejan de forma transparente para que el usuario vea este los problemas que pudiera haber. Versiones: Los elementos de datos estn versionadas para maximizar la integridad de los datos en caso de fallo sin poner en peligro la disponibilidad del sistema.

Amazon S3
Amazon SimpleDB es un almacn de datos no relacionales de alta disponibilidad y flexible que descarga el trabajo de administracin de bases de datos. Los desarrolladores simplemente almacenan elementos de datos y los consultan mediante solicitudes de servicios Web; Amazon SimpleDB se encarga del resto. Sin las limitaciones impuestas por las bases de datos relacionales, Amazon SimpleDB est optimizado para ofrecer alta disponibilidad y flexibilidad con poca o ninguna carga administrativa. La labor de Amazon SimpleDB pasa inadvertida: se encarga de crear y gestionar varias rplicas de sus datos y las distribuye geogrficamente para permitir alta disponibilidad y capacidad de duracin. El servicio slo le cobra los recursos realmente consumidos en almacenamiento de los datos y en distribucin de las solicitudes. Es posible cambiar el modelo de datos sobre la marcha, y el sistema indexa los datos automticamente por usted. Con Amazon SimpleDB, usted podr centrarse en el desarrollo de aplicaciones sin preocuparse por las infraestructuras, la alta disponibilidad, el mantenimiento del software, la gestin de esquemas e ndices, o el ajuste de las prestaciones.

Funcionalidad de Amazon SimpleDB [8] Amazon SimpleDB ofrece una interfaz de servicios web simple para crear y almacenar varios conjuntos de datos, consultar fcilmente los datos y obtener los resultados de dichas consultas. Los datos se indexan automticamente, de forma que es fcil y rpido encontrar la informacin necesaria. No es necesario predefinir ni cambiar esquemas si se aaden datos posteriormente. Y la ampliacin es muy sencilla; basta con crear nuevos dominios en lugar de construir nuevos servidores.

Para utilizar Amazon SimpleDB: Construya su conjunto de datos: Elija una regin para su dominio o dominios a fin de optimizar la latencia, minimizar los costes o cumplir requisitos normativos. Actualmente, Amazon SimpleDB est disponible en las regiones EE.UU. Este (Norte de Virginia), EE.UU. Oeste (Oregn), EE.UU. Oeste (Norte de California), UE (Irlanda), Asia Pacfico (Tokio), Asia Pacfico (Sdney) y Amrica del Sur (So Paulo). Utilice CreateDomain, DeleteDomain, ListDomains, DomainMetadata para crear y gestionar dominios de consultas. Utilice Put, Batch Put y Delete para crear y gestionar el conjunto de datos almacenada en cada dominio de consulta Recupere sus datos: Utilice GetAttributes para recuperar un elemento especfico, utilice Select para consultar el conjunto de datos y encontrar los elementos que cumplan determinados criterios y pague nicamente los recursos que consuma

MongoDB [9]
MongoDB (de la palabra en ingls humongous que significa enorme) es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de cdigo abierto. MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En vez de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos tipo JSON con un esquema dinmico (MongoDB llama ese formato BSON), haciendo que la integracin de los datos en ciertas aplicaciones sea ms fcil y rpida. El desarrollo de MongoDB empez en octubre de 2007 por la compaa de software 10gen. Ahora MongoDB es una base de datos lista para la produccin de uso y con muchas caractersticas (feature). Esta base de datos es altamente utilizada en las industrias1 y MTV Network, Craiglist3 y Foursquare4 son algunas de las empresas que utilizan esta base de datos. El cdigo binario est disponible para los sistemas operativos Windows, Linux, OS X y Solaris.

Caractersticas principales Consultas Ad hoc:MongoDB soporta la bsqueda por campos, consultas de rangos y expresionesregulares. Las consultas pueden devolver un campo especfico del documento perotambin puede ser una funcin JavaScript definida por el usuario. Indexacin: Cualquier campo en un documento de MongoDB puede ser indexado, al igual quees posible hacer ndices secundarios. El concepto de ndices en MongoDB es similar a los encontrados en base de datos relacionales 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 yslo 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 delque se caiga el servicio con el maestro actual. Balanceo de carga: MongoDB se puede escalar de forma horizontal usando el concepto de fragmentacion. MongoDB tiene la capacidad de ejecutarse en mltiple servidores, balanceando la carga y/o duplicando los datos para poder mantener elsistema funcionando en caso que exista un fallo de hardware.

Almacenamiento de archivos: MongoDB puede ser utilizado con un sistema de archivos, tomando la ventajade la capacidad que tiene MongoDB para el balanceo de carga y lareplicacin de datos utilizando mltiples servidores para el almacenamientode archivos. Esta funcin (que es llamada GridFS) est incluida en los drivers deMongoDB y disponible para los lenguajes de programacin que soportaMongoDB. Agregacin: La funcin MapReduce puede ser utilizada para el procesamiento por lotes de datosy 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, haciendoque 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 esquemadinmico llamado BSON, lo que implica que no existe un esquema predefinido.Los elementos de los datos son llamados documentos y se guardan en colecciones. Unacoleccin puede tener un nmero indeterminado de documentos. Las colecciones son como tablas y los documentos como filas. Cada documento en una coleccin puedetener diferentes campos. La estructura de un documento es simple y compuesta por clave-valor 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 par clave-valor.

Principales problemas [10] Bloqueo a nivel de base de datos: MongoDB bloquea la base de datos entera cada vez que se realiza una escritura, lo que reduce la concurrencia drsticamente. Las escrituras no son durables ni verificables: MongoDB retorna cuando todava no se escrito la informacin en el espacio de almacenamiento permanente, lo que puede ocasionar prdidas de informacin. En MongoDB 2.2 se cambia el valor por defecto para escribir en al menos una rplica, pero esto sigue sin satisfacer la durabilidad ni la verificabilidad. Problemas de escalabilidad: Tiene problemas de rendimiento cuando el volumen de datos supera los 100GB.

Neo4j [11]
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 relacionesconectan dos nodos y tanto nodos como relaciones pueden alojar un nmero 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 1000 ms que RDBMS Almacenamiento en disco nativo optimizado para guardar estructuras de grafos para mximo rendimiento y escalabilidad 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 deuna 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. Un trasversal: Navega en un grafo, identifica caminos que ordenan nodos. Permiteencontrar respuestas a preguntas de las tpicas querys. Un ndice: Mapea de propiedades pudiendo ser de nodos o relaciones. Permiteencontrar un nodo o relacin en funcin de una propiedad.

Scalaris [13]
Scalaris es una transaccional tienda escalable, distribuida de clave y valor. Fue la primera base de datos NoSQL, que apoy las propiedades ACID de las transacciones multi-clave. Puede ser utilizado para la construccin de servicios Web escalables 2.0.

Scalaris utiliza una plantilla estructurada con un antibloqueo Paxos; protocolo de confirmacin para el procesamiento de transacciones con una fuerte consistencia en las rplicas. Scalaris se implementa en Erlang.

Conclusin
El campo de las bases de datos NoSQL va a ser muy productivo para los campos de grandes manejos de volmenes de datos mientras que las RDBMS no sepan poder dar la capacidad para ello; cosa que parece actualmente poco probable.

Actualmente hay mucha oferta de bases de datos; siendo la ms popular la base de datos Cassandra debido a temas de prestigio, eficiencia, marketing, oferta, etc. No obstante cada una de ellas se ajusta ms a unas necesidades de cada empresa.

Hoy da no podramos trabajar sin estas bases de datos porque las bases de datos relacionales no dan abasto para el tamao de datos de empresas de social media como Facebook o twitter.

Una empresa de social media tiene obligatoriamente que pensar en implementar sus servicios en base al NoSQL.

Una base de datos NoSQl sin embargo tiene problemas; sobro todo referidos a la actualizacin de sus datos que ser el nuevo reto a solventar en estas bases de datos tan grandes.

Anexo1: Resumen bases de datos


MongoDB (2.2) Escrito en: C + + Dato: Retiene algunas propiedades amistosas de SQL. (Consulta, ndice) Licencia: AGPL (Controladores: Apache) Protocolo: Custom, binario (BSON) Replicacin maestro / esclavo (failover automtico con conjuntos de rplicas) Sharding incorporado Las consultas son expresiones de javascript Ejecutar las funciones de JavaScript arbitrario en el servidor Mejor actualizacin en el lugar de CouchDB Utiliza archivos asignados en memoria para almacenamiento de datos Rentabilidad a los rasgos En diario (con - diario) es el ms encendido En los sistemas de 32 bits, se limitan a ~ 2.5Gb Una base de datos vaca ocupa 192Mb GridFS para almacenar grandes volmenes de datos + metadatos (no en realidad un FS) Tiene la indexacin geoespacial Se preocupan del Centro de datos Mejor usado: Si necesita consultas dinmicas. Si prefiere definir ndices, no map / reduce funciones. Si usted necesita un buen rendimiento en una gran base de datos. Si queras CouchDB, pero los datos cambia demasiado, llenar discos.

Cassandra (1.2) Escrito en: Java Dato: Best of BigTable y Dynamo Licencia: Apache

Protocolo: Ahorro y personalizada CQL3 binario Sintonizables compensaciones para la distribucin y la reproduccin (N, R, W) Consulta por la columna, el rango de teclas (Requiere ndices sobre cualquier cosa que usted desea buscar en) Caractersticas BigTable-como: columnas, las familias de las columnas Se puede utilizar como una tabla hash distribuida, con un lenguaje "tipo SQL", CQL (pero no NETE!) Los datos pueden tener vencimiento (ajustado en INSERT) Escrituras pueden ser mucho ms rpido que lee (cuando las lecturas estn directamente sobre el disco) Mapa / reducir posible con Apache Hadoop Todos los nodos son similares, en oposicin a Hadoop / HBase Muy bueno y fiable de replicacin cruzada datacenter Mejor usado: Cuando se escribe ms de lo que lee (registro). Si cada componente del sistema debe estar en Java. ("Nadie es despedido por escoger las cosas de Apache.")

Neo4j (V1.5M02) Escrito en: Java Dato: la base de datos Graph - conectada datos Licencia: GPL, algunas caractersticas AGPL / comercial Protocolo: HTTP / REST (o incrustacin en Java) Standalone o integrable en aplicaciones Java Conformidad ACID completo (incluyendo los datos duraderos) Ambos nodos y las relaciones pueden tener metadatos -Basada en la coincidencia de patrones lenguaje de consulta integrado ("Cypher") Tambin el "Gremlin" lenguaje recorrido del grafo se puede utilizar La indexacin de los nodos y las relaciones Niza autnomo de administracin web Trayectoria de investigacin avanzada con mltiples algoritmos La indexacin de claves y relaciones

Optimizado para lecturas Tiene las transacciones (en el API de Java) De guin en Groovy Copia de seguridad en lnea, monitoreo avanzado y de alta disponibilidad es AGPL / comercial con licencia Mejor usado: For-estilo de grficos, datos ricos o complejos, interconectados. Neo4j es muy diferente de los otros en este sentido.

Scalaris (0.5) Escrito en: Erlang Dato: P2P distribuido almacn de claves-valor Licencia: Apache Protocolo: Propietario y JSON-RPC Dentro de la memoria (disco al utilizar Tokio Gabinete como backend) Utiliza FRAMBESIA como un servidor web Tiene operaciones (un Paxos adaptados cometen) Operaciones de escrituras consistentes, distribuidas Desde CAP, valores de consistencia sobre la disponibilidad (en caso de particin de la red, slo la particin ms grande funciona) Mejor usado: Si te gusta Erlang y quera usar Mnesia o DETS o ETS, pero se necesita algo que se puede acceder desde ms idiomas (y las escalas mucho mejor que ETS o DETS).

Referencias
1. http://publications.lib.chalmers.se/records/fulltext/123839.pdf 2. NoSQL; Perry Hoekstra, Technical ConsultantPerficient, Inc. http://db.zju.edu.cn/s/wp-content/uploads/2011/01/L10_NoSQL.pdf 3. https://foundationdb.com/white-papers/the-cap-theorem/ 4. http://www.datastax.com/dev/blog/deploying-cassandra-across-multiple-datacenters 5. http://wiki.apache.org/cassandra/HadoopSupport 6. http://ria101.wordpress.com/2010/02/22/cassandra-randompartitioner-vsorderpreservingpartitioner/ 7. http://www.project-voldemort.com/voldemort/ 8. http://aws.amazon.com/es/simpledb/ 9. http://www.mongodb.org/ 10. http://docs.mongodb.org/manual/faq/concurrency/ 11. http://www.neo4j.org/ 12. http://research.google.com/archive/bigtable.html 13. https://code.google.com/p/scalaris/

Imgenes
Figura 1: http://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-captheorem/

También podría gustarte