Publicouse o lanzamento do DBMS aberto Nebula Graph 3.2, deseñado para o almacenamento eficiente de grandes conxuntos de datos interconectados que forman un gráfico que pode contar miles de millóns de nodos e billóns de conexións. O proxecto está escrito en C++ e distribúese baixo a licenza Apache 2.0. As bibliotecas cliente para acceder ao DBMS están preparadas para as linguaxes Go, Python e Java.
O DBMS utiliza unha arquitectura distribuída sen compartir recursos (shared-nothing), o que implica o lanzamento de procesos independentes e autosuficientes de procesamento de consultas gráficas e procesos de almacenamento. O metaservizo orquestra o movemento de datos e proporciona metainformación sobre o gráfico. Para garantir a coherencia dos datos, utilízase un protocolo baseado no algoritmo RAFT.
Características principais de Nebula Graph:
- Garantir a seguridade restrinxindo o acceso só aos usuarios autenticados cuxos permisos estean establecidos mediante un sistema de control de acceso baseado en funcións (RBAC).
- Capacidade para conectar diferentes tipos de motores de almacenamento. Soporte para ampliar a linguaxe de consulta con novos algoritmos.
- Garantir unha latencia mínima ao ler ou escribir datos e manter un alto rendemento. Cando se probou nun clúster dun nodo gráfico e tres nodos almacenados, unha base de datos de 632 GB, incluíndo un gráfico de 1.2 millóns de vértices e 8.4 millóns de bordos, as latencias foron duns milisegundos e o rendemento foi de ata 140 mil solicitudes por segundo.
- Escalabilidade lineal.
- Unha linguaxe de consulta semellante a SQL que é potente e fácil de entender. As operacións admitidas inclúen GO (percorrido bidireccional de vértices de gráficos), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (usando o resultado dunha consulta anterior). Admítense índices e variables definidas polo usuario.
- Garantir unha alta dispoñibilidade e resistencia aos fallos.
- Soporte para a creación de instantáneas cunha porción do estado da base de datos para simplificar a creación de copias de seguridade.
- Listo para uso industrial (xa usado na infraestrutura de JD, Meituan e Xiaohongshu).
- A capacidade de cambiar o esquema de almacenamento de datos e actualizalo sen deter nin afectar as operacións en curso.
- Soporte TTL para limitar a vida útil dos datos.
- Comandos para xestionar a configuración e os hosts de almacenamento.
- Ferramentas para a xestión de traballos e a programación de postas en marcha (dos traballos soportados actualmente son COMPACT e FLUSH).
- Operacións de atopar o camiño completo e o camiño máis curto entre vértices dados.
- Interface OLAP para integración con plataformas analíticas de terceiros.
- Utilidades para importar datos desde ficheiros CSV ou desde Spark.
- Exportar métricas para monitorizar usando Prometheus e Grafana.
- Interface web de Nebula Graph Studio para visualizar operacións gráficas, navegación gráfica, deseñar esquemas de almacenamento de datos e carga.
Na nova versión:
- Engadido soporte para a función extract() para extraer unha subcadea que coincida cunha expresión determinada.
- Configuración optimizada no ficheiro de configuración.
- Engadíronse regras de optimización para eliminar o operador AppendVertices inútil e desactivar a aplicación de filtros de bordo e vértice.
- Reduciuse a cantidade de datos copiados para a operación JOIN, así como para os operadores Traverse e AppendVertices.
- Rendemento optimizado de SHORTEST PATH e SUBGRAPH
- Asignación de memoria mellorada (Asignador de Arena activado).
Fonte: opennet.ru
