miércoles, 15 de junio de 2011

¿Qué son las bases de datos NOSQL?

Últimamente se oye mucho hablar de un movimiento que pretende destronar a las conocidas Bases de Datos
Relacionales (RDBMS), se trata de las bases de datos NoSQL (Not Only SQL).

¿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 al que todos nos acostumbramos desde las primeras asignaturas de bases de datos en las carreras de informática. Mientras que las tradicionales bases de datos relacionales basan su funcionamiento en tablas, joins 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), en ese sentido son más flexibles, ya que suelen permitir almacenar información en otros formatos como clave-valor (similar a tablas Hash), Mapeo de Columnas, Documentos o Grafos.
Además de la carencia de un esquema predeterminado, la principal característica de las bases de datos NoSQL es que están pensadas para manipular enormes cantidades de información de manera muy rápida. Para ello suelen almacenar toda la información que pueden en memoria (utilizando el disco como una mera herramienta de persistencia), y están preparadas para escalar horizontalmente sin perder rendimiento. Suelen funcionar bastante bien en hardware de bajo coste (PC's normales y corrientes), y permiten el escalado horizontal añadiendo nuevas máquinas en caliente (idealmente sin necesidad de reinicio del sistema).


¿Cuándo utilizar 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.


Algunos Ejemplos de Bases de Datos NoSQL
Cassandra fue desarrollada por Facebook para su sistema de mensajería,  y posteriormente donado a la fundación Apache (a finales del 2010 Facebook pasó a utilizar HBase sobre Hadoop).
Otro ejemplo de base de datos NoSQL de clave-valor que está adquiriendo muy buena fama es Redis, una buena definición aquí: "Redis is a collection of data structures exposed over the network".
MongoDB es de las más conocidas bases de datos orientadas a documentos, y Neo4J las más popular orientada a grafos. 
Aquí podéis ver una comparativa de algunas de ellas, y tenéis listado más exhaustivo en la Wikipedia.


Enlaces Interesantes
Wikipedia: NoSQL
NoSQL: el movimiento en contra de las bases de datos
MyNoSQL
Introducción a bases de datos NoSQL en Java
El concepto NoSQL, o cómo almacenar tus datos en una base de datos no relacional
NoSQL y varias alternativas a las bases de datos

Por mi parte, conozco las bases de datos NoSQL a nivel teórico pero no he tenido la ocasión de utilizarlas a nivel práctico. ¿Cuál es tu experiencia con bases de datos NoSQL? ¿Recomendarías alguna en concreto?

3 comentarios:

Adolfo Alvarez dijo...

Bueno cuando construyes la base de datos tu mismo la diseñas, la pruebas y la haces de cero, combiene desarrolar de acuerdo al tipo de especificacion que de te un cliente pues felicidades eres un programador php pero si es un proyecto propio nada mejor que utilizar bases de datos ya hechas, pienso que te ahorras mucho tiempo y como las bases de datos son para servers que estas pagando ya conviene rentabilizar antes que hacer una obra de arte manejo un par de servidores y para ser honesto no he tenido que programar ninguna base de datos solo busco la informacion y las creo de acuerdo al servicio de hosting.

saludos una pregunta que eres actor?

Anónimo dijo...

Hay un buen complemento aquí
http://basesdedatosnosql.blogspot.com/
Saludos

dom dijo...

pues me encontre con este tema porque tengo una tarea en la universidad me exigen que construya una base de datos nosql en java o c utilizando graficos. especificamente con algoritmos basicos Pimz kruzcal, warshall etc..

quisiera que me orienten en una aplicacion basica. pensaba yo hacer la implementacion dando el ejemplo de una constructora que trabaja en todo el contienente, y quiere tener su lista de proveedores ubicados en un mapa y segun tenga proyectos en x locacion buscar pormedio de la base de dato sus proveedores.

estoy atento a sus comentarios