En este artículo se presenta una breve descripción de lo que son las bases de datos orientadas a grafos (BDOG), lo útil que son actualmente en miles de aplicaciones que diariamente usamos, tales como las redes sociales, que muy bien sabemos hoy en día, dominan el uso del Internet, pero que no podrían tener tal éxito, si no se mira desde abajo, es decir, desde la construcción de la base de datos. La solución al óptimo funcionamiento de este tipo de aplicaciones, se basa en tener el conocimiento sobre qué tipo de Base de Datos debe utilizarse, para que el aplicativo corra eficientemente, y no se presenten problemas futuros con el almacenamiento y posterior manipulación de la información con la que va a trabajarse.
2. De la misma forma que las bases de datos relacionales
organizan los datos en forma de tablas, las bases de
datos de grafos lo hacen en forma de grafos (con nodos
<entidades> y aristas <relaciones>).
Una de las principales razones que nos puede llevar a
utilizar una BDDG, es que la importancia reside
ampliamente en las relaciones entre entidades, como
por ejemplo aplicaciones de moda tales como redes
sociales, minería de datos, entre otras. Todas éstas
cumplen este tipo de condiciones.
3. Una característica muy importante de las BDDG, es
que la información más importante no se encuentra en
los nodos, sino en las relaciones entre estos mismos. De
ahí la diferencia con las bases de datos relacionales y de
objetos, las cuales dan prioridad a los datos, y las
relaciones son una forma de navegar entre ellos.
Por otra parte, con un contenido basado en el usuario,
es muy difícil preconcebir el esquema exacto de los
datos que se manejarán. Por esto las BBDD
relacionales, necesitan esquemas iniciales no
dinámicos, mientras que las BDDG pueden soportar el
dinamismo de la información.
4. Neo4J: Es un motor embebido creado en Java
completamente transaccional, que almacena datos
estructurados en grafos, en vez de tablas. Ofrece API
para Ruby, Phyton y Java, también con soporte para
tecnologías Web.
Dex : Es una BDDG desarrollada en DAMA-UPC, un
grupo de investigación de la Universidad Politécnica de
Catalunya. Si se necesita almacenar gran cantidad de
datos y hacer consultas de alto rendimiento, Dex es un
muy buen complemento en cuanto a BDDG.
5. HyperGraph-DB: Es utilizada principalmente en
proyectos de inteligencia artificial.
InfoGrid: Es una BDDG de servicios Web. Está siendo
desarrollada en Java y es Open Source.
6. Ofrecen mucho más rendimiento en consultas.
Si el objetivo principal es analizar las relaciones, es
decir, que se tendrían demasiados Joins en el modelo
relacional, este tipo de base de datos es ideal.
Facilitan multitud de algoritmos basados en la teoría
de grafos como la BFS, DFS, Dijsktra, entre otros.
Los registros pueden ser de longitud variable, evitando
tener que definir un tamaño y también posibles fallas
en la base de datos.
7. Siguiendo con el ejemplo de Facebook, vemos cómo se
complica la cosa cuando empezamos a ver relaciones no
solamente entre las personas sino entre sus actividades. A X
le gustó mi status, Z comentó sobre mi foto, a W le gusta un
video que publiqué, F etiquetó a G en una foto que subió H
donde yo aparezco, etc.
Pues bien, aquí es donde Neo4J entra en acción, porque es
justamente para lo que sirve. Neo4J almacena dos cosas:
Nodos y Relaciones. Un Nodo puede ser un usuario, una
foto, un status; las Relaciones son tal y como ya las
mencioné, cuando un usuario le gusta el status de otro
usuario, o es amigo de otro usuario, o está etiquetado en
una foto, o es dueño de la foto, etc.