Bylo zveřejněno vydání otevřeného DBMS Nebula Graph 3.2, navrženého pro efektivní ukládání velkých sad vzájemně propojených dat, které tvoří graf, který může čítat miliardy uzlů a biliony spojení. Projekt je napsán v C++ a distribuován pod licencí Apache 2.0. Klientské knihovny pro přístup k DBMS jsou připraveny pro jazyky Go, Python a Java.
DBMS používá distribuovanou architekturu bez sdílení zdrojů (shared-nothing), což znamená spuštění nezávislých a soběstačných procesů zpracování grafických dotazů a procesů ukládání. Meta-služba organizuje pohyb dat a poskytuje metainformace o grafu. Pro zajištění konzistence dat se používá protokol založený na algoritmu RAFT.
Hlavní rysy Nebula Graph:
- Zajištění bezpečnosti omezením přístupu pouze na ověřené uživatele, jejichž oprávnění jsou nastavena prostřednictvím systému řízení přístupu založeného na rolích (RBAC).
- Schopnost připojit různé typy úložišť. Podpora rozšíření jazyka pro generování dotazů o nové algoritmy.
- Zajištění minimální latence při čtení nebo zápisu dat a zachování vysoké propustnosti. Při testování na clusteru jednoho grafového uzlu a tří uložených uzlů byla databáze o velikosti 632 GB, včetně grafu 1.2 miliardy vrcholů a 8.4 miliardy hran, latence několik milisekund a propustnost až 140 tisíc požadavků za sekundu.
- Lineární škálovatelnost.
- Dotazovací jazyk podobný SQL, který je výkonný a snadno srozumitelný. Mezi podporované operace patří GO (obousměrné procházení vrcholů grafu), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (s použitím výsledku z předchozího dotazu). Jsou podporovány indexy a uživatelem definované proměnné.
- Zajištění vysoké dostupnosti a odolnosti vůči poruchám.
- Podpora pro vytváření snímků s částí stavu databáze pro zjednodušení vytváření záložních kopií.
- Připraveno pro průmyslové použití (již používáno v infrastruktuře JD, Meituan a Xiaohongshu).
- Možnost změnit schéma ukládání dat a aktualizovat je bez zastavení nebo ovlivnění probíhajících operací.
- Podpora TTL pro omezení životnosti dat.
- Příkazy pro správu nastavení a hostitelů úložiště.
- Nástroje pro správu práce a plánování spouštění prací (z aktuálně podporovaných prací jsou COMPACT a FLUSH).
- Operace hledání úplné cesty a nejkratší cesty mezi danými vrcholy.
- Rozhraní OLAP pro integraci s analytickými platformami třetích stran.
- Nástroje pro import dat ze souborů CSV nebo ze Sparku.
- Exportujte metriky pro sledování pomocí Prometheus a Grafana.
- Webové rozhraní Nebula Graph Studio pro vizualizaci operací s grafy, navigaci v grafech, navrhování schémat ukládání dat a načítání.
V novém vydání:
- Přidána podpora pro funkci extract() pro extrahování podřetězce, který odpovídá danému výrazu.
- Optimalizované nastavení v konfiguračním souboru.
- Přidána optimalizační pravidla pro odstranění zbytečného operátoru AppendVertices a zakázání použití filtrů hran a vertexů.
- Množství dat zkopírovaných pro operaci JOIN a také pro operátory Traverse a AppendVertices bylo sníženo.
- Optimalizovaný výkon SHORTEST PATH a SUBGRAPH
- Vylepšené přidělování paměti (Arena Allocator povolen).
Zdroj: opennet.ru