Neo4j 1.0, una base de datos noSQL pero sí relacional que sigue una nueva filosofía
martes, febrero 23, 2010 at 9:10AM Últimamente se está comenzando a poner bastante de moda el movimiento noSQL, consistente en usar bases de datos no relacionales y por tanto no basadas en SQL. Todas estas bases de datos suelen funcionar, a grosso modo, como un gran mapa donde uno puede poner cualquier tipo de dato y recuperarlos. Las bases de datos no suelen tener esquema, con lo cual su evolución es muy fácil cuando cambia la aplicación, lo que las hace ideales para prototipado rápido y para el uso de técnicas ágiles donde se asume que todo puede estar cambiando continuamente.
Algunos ejemplos de bases de datos que siguen esta aproximación son CouchDB, MongoDB, Memcachedb, SimpleDB...
Hace un par de semanas ha llegado un nuevo miembro al club: Neo4j. Se trata de una base de datos que no emplea SQL. Sin embargo, sí que es relacional en el sentido de que los datos se representan dentro de ella como un grafo con arcos y con propiedades que pueden estar asignadas tanto a los arcos como a los nodos. Los datos se representan en memoria realmente como grafos, y la base de datos es completamente transaccional. Aquí tenéis un ejemplo de bases de datos:
Neo4j está completamente implementada en Java. En su escenario más habitual, la base de datos corre en la misma máquina virtual que nuestra aplicación. Proporciona un API Java muy similar al API de Collections para navegar el grafo; por ejemplo, para ir saltando de un nodo a otro se emplea una especie de iterador. La base de datos, como ya he dicho, tiene un esquema; esto unido al hecho de que es código Java y está en nuestro proceso permite al compilador realizar una gran cantidad de chequeos de tipos de los datos que se introducen y extraen de la base de datos.
Sin duda, se trata de una base de datos de un propósito muy específico: sólo es recomendable cuando la información que tengas que almacenar sean grafos. Sin embargo, la ventaja que tiene es que es tremendamente eficiente para esta información. Según los creadores, puede emplearse para almacenar hasta 12.000 millones de nodos, y es posible ejecutar consultas que requieran recorrer hasta 2000 nodos en un solo segundo (imaginaos el coste de una consulta SQL que realizarse 2000 saltos de nodos en una base de datos relacional a base de hacer joins).
Neo4j es el resultado de 10 años de desarrollo una compañía que en su día chocó de frente contra un inmenso muro al intentar almacenar grafos complejos en bases de datos relacionales. Internamente, la base de datos lleva empleándose mucho tiempo en producción. Sin embargo, acaban de liberar la versión 1.0 ya que hasta ahora no sentían que se pudiesen comprometer con un API.
Neo4j es opensource, y se distribuye bajo licencia AGPL 3. Por tanto, el código que la use también tiene que ser libre. Para soluciones propietarias, existe una licencia comercial (por la que hay que pagar). Este es un buen sitio para comenzar a jugar con la base de datos.
otro 
Reader Comments