Ну 2020 год провёл за дизайном БД, в том числе и графовых, и работал с большими сетапами графовых БД… поверх кассандры.
1) Графовые БД под капотом чаще всего используют колоночные хранилища на LSM-tree с SSTable и наследуют всю ту же боль что и при работе с Cassandra и прочим
2) C любой современной как реляционной так и нереляционной БД можно сделать графовую - реализовав соответствующие интерфейсы под OpenJanus (
https://janusgraph.org/) и удостоверищись в возможности вменяемого индексирования и решения проблемы DataLocality.
3) Обычно Janus оборачивают вокруг BigTable и в принципе это может работать… и даже может быть вполне актуально для некоторых, очень редких, случаев. А для всех остальных 98% - надо просто научиться в рекурсивный SQL SELECT. Но тут есть момент что даже монга становится SQL БД с помощью Apache Calcite… и да, это реляционная БД, о чём мало кто вообще догадывается (оффтопик короч - пригорело).
4) Не так страшна графовая БД как проблема Data Locality в больших масштабах - даже Intel’овским SSD’шкам не хватает IOPS’ов что бы правильно менеджить слияние и разделение страниц в журнале при Compaction’e. LSM-tree там для этого тоже специальный… т.к. надо учитывать adjacent vertices при дампе журнала для Data Locality.
5) По этому в дизайне хранилищ для графовых БД есть определённый, дополнительный Compaction Overhead, и стратегии очень сильно отличаются от того что есть в ScyllaDB и в Cassandra… ну и накладные расходы на любую запись растут экспоненциально с глубиной вашего графа \o/
tldr; графовые БД могут быть только AP и только с большим IO Amplification на запись, если основаны на колоночных БД иди соответствующих структурах данных (LSM-tree).
Если это графовые БД поверх реляционных БД - ведут себя точно так же как любой рекурсивный SELECT.
p.s. Arango построена на RocksDB (колоночный LSM-tree) и каких либо вменяемых стратегий для Compaction’a там нет, про repair не знаю - но вроде пока вообще не завезли.