TerminusDB

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: terminusdb.org

TerminusDB — это открытая графовая база данных с поддержкой документо-ориентированного хранения, которая сочетает модель графа и документо­ориентированный подход с возможностью контроля версий данных в стиле Git. Она разрабатывается как система для создания версионированных «data products» (продуктов данных), где каждое изменение данных фиксируется как коммит, допускаются ветвление, слияние и синхронизация между узлами.

TerminusDB предоставляет API, ориентированный на JSON-документы, объединённые в граф через строгую схему. Для запросов поддерживается как GraphQL, так и собственный язык WOQL (Web Object Query Language), представляющий собой разновидность дэйтологического языка запросов. Архитектура ориентирована на иммутабельность слоёв изменений, что обеспечивает возможность навигации по историческим состояниям данных и управления версиями на уровне объектов.

Проект реализован с использованием языков Prolog и Rust, распространяется под лицензией Apache 2.0. Он используется в проектах, где требуется не просто хранение данных, но совместная работа, аудит изменений и управление историей изменений сложных взаимосвязанных структур. Если каких-либо аспектов работы TerminusDB не удаётся достоверно описать из открытых источников, они упоминаются как недостаточно документированные области.

  • Версионность данных: изменения фиксируются как коммиты, поддерживаются ветки и слияния, аналогично Git.
  • Гибридный графово-документный интерфейс: JSON-документы связаны в графовую структуру через схему.
  • Схема управляемых документов: строгие типы, вложенные поддокументы, автоматическая генерация идентификаторов.
  • WOQL — дэйтологический язык запросов: позволяет выражать сложные шаблоны и связи.
  • GraphQL API: автоматически генерируемые GraphQL-схемы на основе модели данных.
  • Работа с историей: возможность запросов к любому состоянию по коммиту, просмотр изменений между версиями.
  • Синхронизация и распределённость: клонирование, push/pull изменений между узлами или репозиториями.
  • Управление конфликтами и слияниями: механизмы разрешения расхождений при объединении веток.
  • Иммутабельность слоёв хранения: данные и изменения хранятся как неизменяемые слои.
Подробнее