wydanie otwartej bazy danych , zaprojektowanej do efektywnego przechowywania dużych zestawów powiązanych danych, tworzących graf, który może liczyć miliardy węzłów i tryliony relacji. Projekt napisany jest w języku C++ i na licencji Apache 2.0. Biblioteki klienckie do komunikacji z bazą danych zostały przygotowane dla języków Go, Python i Java. Startup rozwijający tę bazę danych, VESoft, kilka dni temu otrzymał pierwszą transzę inwestycji w wysokości 8 milionów dolarów.
W bazie danych zastosowano architekturę rozproszoną bez podziału zasobów (shared-nothing), co oznacza uruchomienie niezależnych i samowystarczalnych procesów obsługi zapytań graphd oraz procesów przechowywania storaged. Zarządzaniem przenoszeniem danych oraz dostarczaniem informacji meta o grafie zajmuje się usługa meta. Aby zapewnić spójność danych, używa się protokołu opartego na algorytmie .
Główne cechy Nebula Graph:
- Zapewnienie poprzez udzielanie dostępu tylko uwierzytelnionym użytkownikom, których uprawnienia są definiowane przez system zarządzania dostępem oparty na rolach (RBAC).
- możliwość podłączenia różnych typów silników przechowywania. Wsparcie dla rozszerzenia języka zapytań o nowe algorytmy.
- Zapewnienie minimalnych opóźnień podczas odczytu lub zapisu danych oraz utrzymywanie wysokiej przepustowości. W przypadku klastra z jednym węzłem graphd i trzema węzłami storaged, z bazą danych o rozmiarze 632 GB, zawierającą graf z 1,2 miliarda węzłów i 8,4 miliarda krawędzi, opóźnienia były na poziomie kilku milisekund, a przepustowość osiągała do 140 tysięcy zapytań na sekundę.
- Linowa skalowalność.
- Język zapytań podobny do SQL, wystarczająco potężny i prosty w użyciu. Obsługiwane są takie operacje jak GO (dwukierunkowe przechodzenie węzłów grafu), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (wykorzystanie wyniku z poprzedniego zapytania). Obsługiwane są indeksy oraz definowane przez użytkownika zmienne.
- Zapewnienie wysokiej dostępności oraz odporności na awarie.
- Wsparcie dla tworzenia migawkowych stanów bazy danych w celu uproszczenia tworzenia kopii zapasowych.
- Gotowość do zastosowań przemysłowych (już wykorzystywana w infrastrukturze firm JD, Meituan i Xiaohongshu).
- Możliwość zmiany schematu przechowywania i aktualizacji danych bez zatrzymywania ani wpływu na trwające operacje.
- Wsparcie dla TTL w celu ograniczenia czasu życia danych.
- Komendy do zarządzania ustawieniami i hostami przechowywania.
- Narzędzia do zarządzania zadaniami i planowania uruchamiania zadań (w tej chwili wspierane są zadania COMPACT i FLUSH).
- Operacje wyszukiwania pełnej i najkrótszej drogi między zadanymi wierzchołkami.
- Interfejs OLAP do integracji z zewnętrznymi platformami analitycznymi.
- Narzędzia do importu danych z plików CSV lub z Spark.
- Eksport metryk do monitorowania za pomocą Prometheus i Grafana.
- Interfejs webowy
do wizualizacji operacji na grafie, nawigacji po grafie, projektowania schematu przechowywania i ładowania danych.
Źródło: opennet.ru
