Апублікаваны выпуск адкрытай СКБД Nebula Graph 3.2, прызначанай для эфектыўнага захоўвання буйных набораў злучаных паміж сабой дадзеных, якія ўтвараюць граф, які можа налічваць мільярды вузлоў і трыльёны сувязяў. Праект напісаны на мове З++ і распаўсюджваецца пад ліцэнзіяй Apache 2.0. Кліенцкія бібліятэкі для звароту да СКБД падрыхтаваны для моў Go, Python і Java.
У СКБД ужываецца размеркаваная архітэктура без падзелу рэсурсаў (shared-nothing), якая разумее запуск незалежных і самадастатковых працэсаў апрацоўкі запытаў graphd і працэсаў захоўвання storaged. Аркестроўкай перамяшчэння даных і прадастаўленнем мета-інфармацыі аб графе займаецца мета-сэрвіс. Для забеспячэння ўзгодненасці даных выкарыстоўваецца пратакол на базе алгарытму RAFT.
Асноўныя асаблівасці Nebula Graph:
- Забеспячэнне бяспекі праз падаванне доступу толькі аўтэнтыфікаваным карыстачам, паўнамоцтвы якіх задаюцца праз сістэму кіравання доступу на аснове роляў (RBAC).
- Магчымасць падлучэння розных тыпаў рухавічкоў захоўвання. Падтрымка пашырэння мовы фармавання запытаў новымі алгарытмамі.
- Забеспячэнне мінімальных затрымак пры чытанні ці запісе дадзеных і падтрыманне высокай прапускной здольнасці. Пры тэставанні ў кластары з аднаго вузла graphd і трох вузлоў storaged БД памерам 632 GB, у якую ўваходзяць граф з 1.2 мільярда вяршыняў і 8.4 мільярда рэбраў затрымкі былі на ўзроўні некалькіх мілісекунд, а прапускная здольнасць склала да 140 тысяч запытаў у секунду.
- Лінейная маштабаванасць.
- SQL-падобная мова запытаў, дастатковай магутны і просты для ўспрымання. Падтрымліваюцца такія аперацыі, як GO (двунакіраваны абыход вяршыняў графа), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (выкарыстанне выніку ад папярэдняга запыту). Падтрымліваюцца азначнікі і вызначаныя карыстачом зменныя.
- Забеспячэнне высокай даступнасці і ўстойлівасць да збояў.
- Падтрымка стварэння снапшотаў са зрэзам стану БД для спрашчэння стварэння рэзервовых копій.
- Гатоўнасць для прамысловага прымянення (ужо выкарыстоўваецца ў інфраструктуры кампаній JD, Meituan і Xiaohongshu).
- Магчымасць змены схемы захоўвання і абнаўленні дадзеных без прыпынку ці ўплывы на выкананыя аперацыі.
- Падтрымка TTL для абмежавання часу жыцця даных.
- Каманды для кіравання наладамі і хастамі захоўвання.
- Прылады для кіравання працамі і планаваннем запуску прац (з прац пакуль падтрымліваюцца COMPACT і FLUSH).
- Аперацыі пошуку поўнага шляху і найкароткага шляху паміж зададзенымі вяршынямі.
- Інтэрфейс OLAP для інтэграцыі са іншымі платформамі аналітыкі.
- Утыліты для імпарту дадзеных з файлаў CSV ці з Spark.
- Экспарт метрык для маніторынгу пры дапамозе Prometheus і Grafana.
- Web-інтэрфейс Nebula Graph Studio для візуалізацыі аперацый з графам, навігацыі па графе, праектаванні схемы захоўвання і загрузкі дадзеных.
У новым выпуску:
- Дададзена падтрымка функцыі extract() для вымання падрадкі, якая адпавядае зададзенаму выразу.
- Аптымізаваны налады ў файле канфігурацыі.
- Дададзены правілы аптымізацыі для выдаленняў бескарыснага аператара AppendVertices і адключэння прымянення фільтраў рэбраў і вяршыняў.
- Скарочаны аб'ём дадзеных, якія капіююцца для аперацыі JOIN, а таксама для аператараў Traverse і AppendVertices.
- Аптымізавана прадукцыйнасць SHORTEST PATH і SUBGRAPH
- Палепшана размеркаванне памяці (задзейнічаны Arena Allocator).
Крыніца: opennet.ru