UtgÄvan av den öppna databasen Nebula Graph 3.2 har publicerats, avsedd för effektiv lagring av stora uppsÀttningar av sammanlÀnkade data som bildar en graf med miljarder noder och triljoner relationer. Projektet Àr skrivet i C++ och distribueras under Apache 2.0-licensen. Klientbibliotek för att kommunicera med databasen har förberetts för sprÄken Go, Python och Java.
I databasen anvÀnds en distribuerad arkitektur utan resursdelning (shared-nothing), vilket innebÀr att oberoende och sjÀlvgÄende processer för förfrÄgningar (graphd) och lagring (storaged) körs. Orkestreringen av datatransfer och tillhandahÄllandet av metadata om grafen sköts av en metatjÀnst. För att sÀkerstÀlla datakonsistens anvÀnds ett protokoll baserat pÄ RAFT-algoritmen.
Huvudfunktioner i Nebula Graph:
- SÀkerhet genom att endast ge autentiserade anvÀndare Ätkomst, vars rÀttigheter styres genom ett rollbaserat Ätkomstkontrollsystem (RBAC).
- Möjlighet att ansluta olika typer av lagringsmotorer. Stöd för att utöka frÄgesprÄket med nya algoritmer.
- SÀkerstÀllande av minimala fördröjningar vid lÀsning eller skrivning av data och upprÀtthÄllande av hög genomströmning. Vid testning i ett kluster med en nod för graphd och tre noder för storaged, med en databas pÄ 632 GB som inkluderade en graf med 1,2 miljarder noder och 8,4 miljarder kanter, var fördröjningarna pÄ flera millisekunder och genomströmningen nÄdde upp till 140 000 förfrÄgningar per sekund.
- Imponerande linjÀr skalbarhet.
- SQL-liknande frÄgesprÄk som Àr tillrÀckligt kraftfullt och lÀtt att förstÄ. Stöder operationer som GO (tvÄvÀgs traversering av grafens noder), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (anvÀndning av resultatet frÄn föregÄende frÄga). Index och anvÀndardefinierade variabler stöds.
- SÀkerstÀllande av hög tillgÀnglighet och motstÄndskraft mot fel.
- Stöd för att skapa snapshots av databasens tillstÄnd för att underlÀtta sÀkerhetskopiering.
- Redo för industriell anvÀndning (redan i bruk i infrastrukturen hos företag som JD, Meituan och Xiaohongshu).
- Möjlighet att Àndra lagringsschemat och uppdatera data utan att stoppa eller pÄverka pÄgÄende operationer.
- TTL-stöd för att begrÀnsa livslÀngden pÄ data.
- Kommandon för att hantera lagringsinstÀllningar och vÀrdar.
- Verktyg för att hantera jobb och schemalÀggning av jobb (för tillfÀllet stöds JOBB-TYPERNA COMPACT och FLUSH).
- Operationer för att söka efter den fullstÀndiga vÀgen och kortaste vÀgen mellan angivna noder.
- OLAP-grÀnssnitt för integration med tredjepartsanalysplattformar.
- Verktyg för att importera data frÄn CSV-filer eller frÄn Spark.
- Exportera metrik för övervakning med hjÀlp av Prometheus och Grafana.
- WebbgrÀnssnittet Nebula Graph Studio för visualisering av operationer med grafen, navigering i grafen, design av lagringsschema och dataladdning.
I den nya utgÄvan:
- Stödet för funktionen extract() har lagts till för att extrahera delstrÀngar som uppfyller ett angivet uttryck.
- InstÀllningarna i konfigurationsfilen har optimerats.
- Optimeringsregler har lagts till för att ta bort onödiga appendVertices-operatörer och inaktivera tillÀmpning av kant- och nodfilter.
- MÀngden data som kopieras för JOIN-operationen samt för operatörerna Traverse och AppendVertices har minskat.
- Prestanda för SHORTEST PATH och SUBGRAPH har optimerats.
- Minnesfördelningen har förbÀttrats (Arena Allocator anvÀnds).
KĂ€lla: opennet.ru
