Dgraph — это высокопроизводительная распределённая графовая база данных с нативной поддержкой GraphQL, ориентированная на низкую латентность, масштабируемость и транзакции с гарантией ACID. Изначально проект был задуман для обработки больших графовых структур в режиме реального времени, и он реализован с нуля так, чтобы минимизировать сетевые коммуникации и счетчики дисковых обращений при сложных запросах. В архитектуре Dgraph выделены компоненты для координации и хранения данных, что позволяет гибко масштабировать кластер по горизонтали и выполнять запросы на терабайтах данных.
Первоначальные версии Dgraph появились в середине 2010-х годов, а проект развивался как открытое решение с упором на сочетание характеристик баз данных NoSQL и свойств графовых СУБД. В Dgraph встроена реализация транзакций, согласованного реплицирования и линейно упорядоченного чтения. Поддержка GraphQL (и собственной модификации этого языка для графовых операций) позволяет использовать Dgraph в качестве бэкенда для API-ориентированных приложений. Однако проект всё ещё развивается — в некоторых источниках отмечают, что отдельные аспекты (например, расширенные фильтры или каскадные операции) остаются предметом доработки.
- Нативное хранение графа и распределённая архитектура — данные разбиваются на шардированные блоки (таблеты), распределяемые по узлам хранения, а компоненты координации обеспечивают управление метаданными и переустройство кластера.
- Поддержка транзакций ACID — Dgraph реализует мультиверсионный контроль конкуренции (MVCC) и гарантирует атомарность, согласованность, изолированность и надёжность операций.
- Нативный GraphQL / DQL интерфейс — система напрямую понимает запросы в стиле GraphQL, а также расширения этого языка для более сложных графовых операций.
- Минимизация сетевых вызовов — внутренняя стратегия размещения данных и маршрутизации запросов направлена на сокращение межузловых коммуникаций и ускорение ответов.
- Консистентное реплицирование и отказоустойчивость — используется алгоритм Raft для синхронного репликования данных и обеспечения устойчивости к сбоям узлов.
- Поддержка полнотекстового поиска, геопространственных запросов и регулярных выражений — встроенные функциональные модули для работы с текстовым и пространственным индексированием.
- Горизонтальное масштабирование и перераспределение данных — добавление узлов допускает автоматическое перераспределение нагрузок и повышение пропускной способности.
- Использование собственной key-value хранилищной подсистемы (Badger) — слой хранения построен на высокопроизводительной NoSQL-составляющей, оптимизированной под нужды графовых операций.
- Согласованные линейные чтения — обеспечиваются механизмы, гарантирующие, что чтение отражает последнюю зафиксированную транзакцию (линейная согласованность).