Neo4j

 

Neo4j 

Las bases de datos de grafos han ganado una atención creciente en los últimos años. Los modelos de datos creados a partir de grafos combinan la simplicidad de las bases de datos orientadas a documentos y la claridad de las tablas SQL. Entre otras, Neo4j es una base de datos que viene con un gran ecosistema, incluida la base de datos, pero también herramientas para crear aplicaciones web, como GRANDstack, y herramientas para usar datos gráficos en una canalización de aprendizaje automático, así como Graph Data Science.

Neo4j es un almacén de datos distribuido de código abierto que se utiliza para modelar problemas de grafos. Fue lanzado en 2007 y está patrocinado por Neo4j, Inc., que también ofrece licencias empresariales y soporte para Neo4j. Se aparta de la nomenclatura tradicional de las tecnologías de bases de datos, en las que las entidades se almacenan en estructuras similares a entidades sin esquema llamadas nodos. Los nodos están conectados a otros nodos a través de relaciones o bordes. Los nodos también se pueden agrupar con estructuras opcionales llamadas etiquetas.

Este enfoque centrado en las relaciones para el modelado de datos se conoce como modelo de grafo de propiedades. En el modelo de grafo de propiedades, tanto los nodos como los bordes pueden tener propiedades para almacenar valores. Neo4j adopta este enfoque. Está diseñado para garantizar que los nodos y los bordes se almacenen de manera eficiente y que los nodos puedan compartir cualquier número o tipo de relaciones sin sacrificar el rendimiento. 




¿Cómo funciona Neo4j?

Neo4j almacena nodos, bordes y propiedades en el disco en almacenamientos que son específicas de cada tipo; por ejemplo, los nodos se almacenan en el almacenamiento de nodos. [5, s.11] También se almacenan en dos tipos de cachés: el sistema de archivos (FS) y las cachés de nodo / relación. La caché de FS se divide en regiones para cada tipo de almacenamiento y los datos se expulsan según una política de uso menos frecuente (LFU).

Los datos se escriben en transacciones ensambladas a partir de comandos y se clasifican para obtener un orden de actualización predecible. Los comandos se ordenan en el momento de la creación, con el objetivo de preservar la coherencia. Las escrituras se agregan al registro de transacciones y se marcan como confirmadas o revertidas (en caso de falla). Luego, los cambios se aplican (en orden ordenado) a los archivos almacenados en el disco.

Es importante señalar que las transacciones en Neo4j dictan el estado y por lo tanto son idempotentes por naturaleza [5, s.34] No modifican directamente los datos. Al volver a aplicar transacciones para un evento de recuperación, simplemente se reproducen las transacciones en un punto seguro determinado.

En un escenario agrupado de alta disponibilidad (HA), Neo4j adopta una arquitectura maestro / esclavo. Los registros de transacciones se comparten entre todas las instancias de Neo4j, independientemente de su función actual. A diferencia de la mayoría de las implementaciones maestro / esclavo, los nodos esclavos pueden manejar tanto lecturas como escrituras. [5, s.37] En una transacción de escritura, el esclavo coordina un bloqueo con el maestro y almacena la transacción mientras se aplica al maestro. Una vez completada, la transacción almacenada en búfer se aplica al esclavo.

Otro aspecto importante de la arquitectura HA de Neo4j es que cada nodo / borde tiene su propio identificador (ID) único. Para lograr esto, la instancia maestra asigna los ID de cada instancia esclava en bloques. Luego, los bloques se envían a cada instancia para que los ID de los nuevos nodos / bordes se puedan aplicar localmente, conservando la coherencia.



Ventajas de NEO4J

Clustering
Enterprise Neo4j ofrece escalamiento horizontal a través de dos tipos de agrupamiento. El primero es el típico agrupamiento en clúster de alta disponibilidad, en el que varios servidores esclavos procesan datos supervisados ​​por un maestro elegido. En caso de que falle una de las instancias, se elige un nuevo maestro.

El segundo tipo de agrupación se conoce como agrupación causal. Esta opción proporciona funciones adicionales, como réplicas de lectura desechables y equilibrio de carga integrado, que ayudan a abstraer la naturaleza distribuida de la base de datos agrupada del desarrollador. También es compatible con la coherencia causal, que tiene como objetivo respaldar la coherencia compatible con el aislamiento y la durabilidad de la coherencia atómica (ACID) en casos de uso donde la coherencia eventual se vuelve problemática. Esencialmente, la consistencia causal se entrega con un algoritmo de transacción distribuida que asegura que un usuario podrá leer inmediatamente su propia escritura, independientemente de qué instancia maneje la solicitud.

Browser Neo4j
Neo4j viene con Neo4j Browser, una aplicación basada en web que se puede utilizar para la gestión de bases de datos, operaciones y ejecución de consultas Cypher. Además de monitorear la instancia en la que se ejecuta, Neo4j Browser también viene con algunas herramientas de aprendizaje integradas diseñadas para ayudar a los nuevos usuarios a aclimatarse a las bases de datos de gráficos y Neo4j. Neo4j Browser es un gran paso adelante de las herramientas de línea de comandos que dominan el panorama NoSQL.

Fragmentación de caché
En la mayoría de las configuraciones agrupadas de Neo4j, una sola instancia contiene una copia completa de los datos. Por el momento, la fragmentación real no está disponible, pero Neo4j tiene una función conocida como fragmentación de caché. Esta función implica dirigir consultas a instancias que solo tienen ciertas partes de la caché precargadas, de modo que las solicitudes de lectura para conjuntos de datos extremadamente grandes puedan ser atendidas adecuadamente.

Ayuda para principiantes
Una de las cosas que Neo4j hace mejor que la mayoría de los almacenes de datos NoSQL es la cantidad de documentación y tutoriales que ha puesto a disposición de los nuevos usuarios. El sitio web de Neo4j proporciona algunos enlaces para comenzar con la capacitación en persona o en línea, así como reuniones y conferencias para aclimatarse a la comunidad. La documentación de Neo4j está muy bien hecha y actualizada, completa con manuales bien escritos sobre desarrollo, operaciones y modelado de datos. Los blogs y videos de los ingenieros de Neo4j, Inc. también son muy útiles para que los principiantes comiencen por el camino correcto.

Además, cuando se conecta por primera vez a su instancia / clúster con el navegador Neo4j, lo primero que se muestra es una lista de enlaces dirigida a principiantes. Estos enlaces dirigen al usuario a información sobre el producto Neo4j, modelos de gráficos y casos de uso, y ejemplos interactivos. De hecho, al ejecutar el comando reproducir películas, aparece un tutorial que carga una base de datos de películas. Esta base de datos consta de varios nodos y bordes que están diseñados para ilustrar las relaciones entre los actores y sus roles en varias películas.








Comentarios

Entradas más populares de este blog

Mejores practicas para migración de datos a Salesforce

AWS Lambda

Modelado de datos en Salesforce