A fost lansată versiunea 3.2 a SGBD-ului open-source Nebula Graph, destinat stocării eficiente a unor seturi mari de date interconectate, formând un grafic ce poate conține miliarde de noduri și trilioni de legături. Proiectul este scris în C++ și este distribuit sub licența Apache 2.0. Bibliotecile client pentru accesarea SGBD-ului sunt disponibile pentru limbajele Go, Python și Java.
SGBD-ul utilizează o arhitectură distribuită fără separarea resurselor (shared-nothing), ceea ce implică lansarea unor procese independente și autonome de procesare a cererilor graphd și a proceselor de stocare storaged. Orchestrarea migrației datelor și furnizarea de meta-informații despre grafic sunt gestionate de un serviciu meta. Pentru a asigura coerența datelor, se utilizează un protocol bazat pe algoritmul RAFT.
Caracteristici principale ale Nebula Graph:
- Asigurarea securității prin acordarea accesului numai utilizatorilor autentificați, iar permisiunile acestora sunt stabilite printr-un sistem de gestionare a accesului bazat pe roluri (RBAC).
- Posibilitatea de conectare a diferitelor tipuri de motoare de stocare. Suport pentru extinderea limbajului de formare a cererilor cu algoritmi noi.
- Asigurarea întârzierilor minime la citirea sau scrierea datelor și menținerea unei lățimi de bandă ridicate. În timpul testării pe un cluster format dintr-un nod graphd și trei noduri storaged cu o bază de date de 632 GB, incluzând un grafic cu 1,2 miliarde de vârfuri și 8,4 miliarde de muchii, întârzierile au fost la nivelul câtorva milisecunde, iar lățimea de bandă a ajuns până la 140.000 de cereri pe secundă.
- Scalabilitate liniară.
- Limbaj de cereri asemănător SQL, suficient de puternic și ușor de înțeles. Sunt acceptate operații precum GO (parcurgerea bidirecțională a nodurilor graficului), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (utilizarea rezultatului de la cererea anterioară). Se suportă indecși și variabile definite de utilizator.
- Asigurarea disponibilității ridicate și a rezistenței la defecțiuni.
- Suport pentru crearea de instantanee cu un eșantion al stării bazei de date pentru a facilita realizarea copiilor de rezervă.
- Pregătit pentru aplicare industrială (deja folosit în infrastructura companiilor JD, Meituan și Xiaohongshu).
- Posibilitatea de a schimba schema de stocare și de a actualiza datele fără oprirea sau influențarea operațiunilor în curs.
- Suport TTL pentru limitarea duratei de viață a datelor.
- Comenzi pentru gestionarea setărilor și gazdelor de stocare.
- Instrumente pentru gestionarea lucrărilor și planificarea desfășurării acestora (în prezent, sunt acceptate lucrările COMPACT și FLUSH).
- Operații de căutare a celei mai scurte căi și a căii complete între nodurile date.
- Interfață OLAP pentru integrarea cu platforme externe de analiză.
- Utilitare pentru importul de date din fișiere CSV sau din Spark.
- Export de metrici pentru monitorizare utilizând Prometheus și Grafana.
- Interfață web Nebula Graph Studio pentru vizualizarea operațiunilor cu grafuri, navigarea prin grafuri, proiectarea schemei de stocare și încărcarea datelor.
În noua versiune:
- Adăugată suportul pentru funcția extract() pentru extragerea unui substring corespunzător unei expresii date.
- Optimizate setările din fișierul de configurare.
- Adăugate reguli de optimizare pentru eliminarea operatorului inutil AppendVertices și dezactivarea aplicării filtrelor pe muchii și noduri.
- Reduce cantitatea de date copiate pentru operația JOIN, precum și pentru operatorii Traverse și AppendVertices.
- Optimizată performanța SHORTEST PATH și SUBGRAPH.
- Îmbunătățită distribuția memoriei (utilizat Arena Allocator).
Sursa: opennet.ro
