Udgivelsen af den åbne database Nebula Graph 3.2 er blevet offentliggjort, designet til effektiv lagring af store sæt af relaterede data, der danner et graf, der kan indeholde milliarder af noder og billioner af forbindelser. Projektet er skrevet i C++ og distribueres under Apache 2.0-licensen. Klientbiblioteker til interaktion med databasen er udarbejdet til sprog som Go, Python og Java.
Databasen anvender en distribueret arkitektur uden ressourceopdeling (shared-nothing), hvilket indebærer, at uafhængige og selvforsynende processer til behandling af forespørgsler (graphd) og lagringsprocesser (storaged) kører. Orkestreringen af dataflytning og levering af metadata om grafen håndteres af en metaservice. For at sikre datakonsistens anvendes en protokol baseret på RAFT-algoritmen.
Hovedfunktioner i Nebula Graph:
- Sikkerhed gennem adgang, der kun gives til autentificerede brugere, hvis rettigheder defineres via et rollebaseret adgangsstyringssystem (RBAC).
- Mulighed for at tilslutte forskellige typer lagringsmotorer. Understøttelse af udvidelse af forespørgselssproget med nye algoritmer.
- Sikring af minimale forsinkelser ved læsning eller skrivning af data og opretholdelse af høj gennemstrømning. Under testning i en klynge bestående af én graphd-node og tre storaged-noder med en database på 632 GB, der inkluderede en graf med 1,2 milliarder noder og 8,4 milliarder kanter, lå forsinkelserne på niveau med flere millisekunder, og gennemstrømningen nåede op til 140.000 forespørgsler per sekund.
- Lineær skalerbarhed.
- SQL-lignende forespørgselssprog, der er både kraftfuldt og let at forstå. Understøttede operationer inkluderer GO (tovejsovergang af grafnoder), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (brug af resultatet fra den tidligere forespørgsel). Indekser og brugerdefinerede variabler understøttes.
- Sikring af høj tilgængelighed og fejlsikkerhed.
- Understøttelse af oprettelse af snapshots af database tilstand for at lette oprettelsen af backup.
- Klar til industriel anvendelse (allerede i brug i infrastrukturen hos virksomheder som JD, Meituan og Xiaohongshu).
- Mulighed for at ændre lagringsskemaet og opdatere data uden at stoppe eller påvirke igangværende operationer.
- TTL-support for limiting the lifespan of data.
- Commands for managing storage settings and hosts.
- Tools for job management and scheduling (currently, only COMPACT and FLUSH jobs are supported).
- Operations for finding the full path and the shortest path between given vertices.
- OLAP interface for integration with third-party analytics platforms.
- Utilities for importing data from CSV files or from Spark.
- Export metrics for monitoring using Prometheus and Grafana.
- Web interface Nebula Graph Studio for visualizing graph operations, navigating the graph, designing the storage schema, and loading data.
I den nye version:
- Support for the extract() function has been added to extract a substring that matches a specified expression.
- Configuration settings in the configuration file have been optimized.
- Optimization rules added for removing the useless AppendVertices operator and disabling the application of edge and vertex filters.
- Reduced the amount of data copied for the JOIN operation, as well as for the Traverse and AppendVertices operators.
- Performance of SHORTEST PATH and SUBGRAPH has been optimized.
- Improved memory allocation (Arena Allocator used).
Kilde: opennet.ru
