Acerca del modelo de datos NoSQL orientado a Grafos

Introducción

Tipos de conjunto de bases de datos NoSQL:

  1. Orientadas a documentos.
    Son aquellas que gestionan datos semi estructurados, es decir documentos. Estos datos son almacenados en algún formato estándar como pueden ser: XML, JSON o BSON.
    Son las bases de datos NoSql mas versatiles y pueden aplicarse a proyectos que funcionarían sobre bases de datos relacionales.
    Caso de estudio modelado para base de datos documental
    ima1
  2. De clave – valor.
    Guardan tuplas que contienen una clave y su valor, cuando se quiere recuperar un datos, se realiza la busqueda por clave.
    Caso de estudio modelado para base de datos orientada a clave-valor: Idem. Relacional
    ima2
  3. Orientadas a grafos.
    Basadas en la teoría de grafos, utilizan nodos y aristas para representar los datos almacenados. Son muy útiles para guardar información en modelos con muchas relaciones como redes y conexiones sociales.
    Se componen de vértices (Entidades) y aristas (Relaciones), las cuales cuentan con atributos.
    En esta categoria se encuentran:

    • OrientDB: VeriSign, proteus, Cisco, Ericsson y Las Naciones Unidas
    • Neo4j: Empleada en HP, Walmart y Cisco

Caso de estudio modelado para base de datos orientada a grafos
ima3

Análisis del tipo de NoSql a emplear

Las bases de datos NoSql estan pensadas para ser escalables y distribuidas; para ello, el teorema CAP define criterios para realizar la selección.

El teorema dice que en sistemas distribuidos es imposible garantizar a la vez: Consistencia, disponibilidad y tolerancia a particiones al mismo tiempo.

  • Consistencia: Al realizar una consulta o insercion, siempre se recibe la misma información, con independencia del nodo o servidor que procede la petición.
  • Disponibilidad: Se pueden realizar operaciones de lectura y escritura aunque haya caído uno de los nodos.
  • Tolerancia a particiones: Es posible hacer particiones (Generalmente de forma geográfica) lo cual implica, que el sistema tiene que serguir funcionando aunque existan fallos o caídas parciales que dividan al sistema.

Realizando combinaciones de estas caracteristicas, una base de datos podrían:

  • Garantizar disponibilidad y tolerancia a particiones, pero no la consistencia, al menos de forma total.
  • Garantizar consistencia y tolerancia a particiones pero se sacrifica la disponibilidad.
  • Garantizan consistencia y disponibilidad, pero tienen problemas con la tolerancia a particiones.

Hay que tener en cuenta, que esta clasificación no es definitiva, ya que algunos de estos sistemas NoSQL pueden configurarse para cambiar su comportamiento.

ima4

Análisis del campo de aplicación del modelo de datos NoSql orientado a grafos.

Se puede utilizar el modelo orientado a grafos para almacenar información de redes sociales (personas, contacto de negocios, clubs, organizaciones, telefonos, correos, etc).

ima5

Almacenar información de carreteras y transporte (ciudades, paradas, carreteras,etc.).

ima6

Almacenar información de oleoductos (tankes de almacenamiento, refinerias, gaseoductos, oleoductos, etc.).

ima7

Almacenar información de redes de información (Routers, terminales, conexiones de fibra optica, etc.).

ima8

Aunque parezca que el modelo de datos orientado a los grafos se podria adaptar a cualquier contexto, en algunas ocaciones no recomiendan su uso para almacenar información relacionada con blogs, articulos.

ima9
Base de datos que necesitan que registra información constantemente, por ejemplo un registro de cambios en la base datos.

ima10

Un ejemplo de implementación para el modelo propuesto en codigos.gob.bo seria el siguiente:

Ejemplo de implementación

Como el estado plurinacional existe varias entidades y estas tienen tiene varias unidades y direcciones, ademas de tomar en cuenta que algunas oficinas son compartidas por entre entidades, este seria un modelo de datos que se podria utilizar para almacenar esta información. Al exisitir una gran catidad de oficinas la información tendria un aspecto similar a como se relacionan cada especie del reino animal y asi poder obtener de facil manera todas las entidades superiores de una oficina, entidad o unidad.

arbol

Para este modelo orientado a grafos tenemos las siguientes opciones en motores de base de datos NoSQL: OrientDB y Neo4j.

OrientDB

OrientDB es un sistema de gestión de bases de datos NoSQL de código abierto escrito en Java. Es una base de datos multi-modelo, con apoyo gráfico, documento clave / valor, y modelos de objetos, pero las relaciones se gestionan como en bases de datos gráfico con conexiones directas entre los registros. Es compatible con los modos de esquema mezclado sin esquema, esquema completo y cuenta con un sistema de seguridad fuerte basada en usuarios y roles. OrientDB utiliza varios mecanismos de indexación sobre la base de árbol Binario y dispersión extensible, el último que se conoce como «índice hash». Cada registro tiene clave sustituta que indica la posición de registro dentro de la lista de matriz, los vínculos entre los registros se almacenan ya sea como único valor de la posición del registro almacenado en el interior de referencia o como árbol Binario que permite recorrido rápido en las relaciones de uno a muchos (con una complejidad O(1)), rápida adición / eliminación de nuevos enlaces.

oriendb

Neo4j

Neo4j es un sistema de gestión de base de datos gráfica desarrollado por Neo Technology, Inc. Descrito por sus desarrolladores como una base de datos transaccional ACID compatible con el almacenamiento y el procesamiento gráfico nativo.

Neo4j está disponible en código abierto con licencia GPL3, con la copia de seguridad en línea y extensiones de alta disponibilidad con licencia bajo los términos de la Licencia Pública General de Affero.

Neo4j está implementado en Java y accesible desde otros lenguajes de programación utilizando el lenguaje de consulta Cypher a través de un enlace HTTP transaccional.

neo4j

Referencias:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *