Об этом проекте
HydraDB — это распределённая графовая база данных, реализованная на Rust и ориентированная на объектное хранилище. Она предназначена для обеспечения долговременного графового хранения в S3-совместимом объектном хранилище, со snapshot-согласованными запросами OpenCypher, обходом GraphBLAS, подключением Bolt, совместимым с Neo4j, и HTTPS API запросов.
Архитектура отличается полностью разделёнными хранением и вычислениями. Узлы данных (graph-node) обслуживают запросы и канонические мутации, а индексаторы (graph-indexer) в фоновом режиме строят неизменяемые индексы обхода. Обе роли хранят в памяти и на локальном SSD или NVMe только одноразовое состояние, что позволяет масштабироваться без перемещения графа. Долговременный источник истины находится в S3-совместимом объектном хранилище, которое содержит графовые записи, WAL, манифесты и неизменяемые индексы обхода.
Ключевые возможности:
- Долговременное хранение в объектном хранилище с S3-совместимым хранилищем для всех постоянных данных.
- Независимое масштабирование узлов данных и индексаторов.
- Безопасная передача роли писателя через CAS-аренды объектного хранилища и эпохи писателя SlateDB.
- Согласованное чтение с использованием закреплённых снимков SlateDB, при котором индексированный обход сочетается с видимым наложением WAL.
- Графово-ориентированное выполнение с использованием индексов свойств, обратной смежности, разреженного обхода и SuiteSparse GraphBLAS.
- Привычные клиенты: драйверы Neo4j через Bolt 5.x и типизированный HTTP API JSON/NDJSON.
- Ограниченная работа с аутентификацией, авторизацией, сроками, лимитами результатов, противодавлением, отменой, бюджетами кэша, метриками и трассировками.
HydraDB поддерживает практичное подмножество OpenCypher для чтения и мутаций, включая типизированные связи, пути ограниченной переменной длины, предикаты свойств и меток, упорядочивание, пагинацию, агрегацию, OPTIONAL MATCH, UNION и пакетные записи UNWIND. Он также предоставляет встроенные процедуры путей в области снимка (algo.SPpaths, algo.SSpaths, algo.MSpaths) для эффективных запросов ограниченных путей.
Согласованность чтения предлагает два режима: причинный (по умолчанию, использует текущее долговременное представление читателя) и строгий (обновляет читателя SlateDB из объектного хранилища перед закреплением снимка). HTTPS-запросы задают согласованность в теле; клиенты Bolt задают её в RUN или метаданных транзакции.
Варианты начала работы включают запуск Docker-образа (ghcr.io/hydra-db/hydradb) или сборку из исходного кода с Rust 1.91+, инструментальной цепочкой C/C++, libcypher-parser и SuiteSparse GraphBLAS. В репозитории для запуска команд используется `just`. Шаги проверки включают дымовые тесты и скрипты дымовой проверки во время выполнения.
Для продакшена доступен Helm-чарт для развёртывания в Kubernetes, настраивающий узлы запросов, рабочие процессы индексатора, сервисы, тома кэша, сетевые политики, бюджеты нарушений, TLS, аутентификацию и опциональную интеграцию с Prometheus.
Возможности наблюдаемости включают HTTP-эндпоинты проверки работоспособности, эндпоинты готовности и метрик, структурированные поля трассировки и поддержку OpenTelemetry. Для гистограмм длительности Prometheus документированы конкретные единицы измерения.
Проект лицензирован под AGPL-3.0 и включает бенчмарки, документацию по архитектуре, сборники случаев корректности, доказательства формальной верификации и отчёт о согласованности Jepsen.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.