В O'Reilly книга «Graph Базе данных» в главе 6, который, как Neo4j хранит базу данных графа он говорит:Как Titan добивается постоянного поиска времени с использованием HBase/Cassandra?
Чтобы понять, почему родная обработка график настолько гораздо более эффективным, чем графика, основанную на тяжелая индексация, рассмотрим следующее. В зависимости от реализации индексные запросы могут быть O (log n) в алгоритмической сложности по сравнению с O (1) для поиска непосредственных отношений. Чтобы преодолеть сеть из m шагов, стоимость индексированного подхода, на O (m log n), затмевает стоимость O (m) для реализации, которая использует бесконтактную смежность.
Затем объяснен, что Neo4j достигает этот постоянная время поиска путем сохранения всех узлов и связей в виде записей фиксированного размера:
С размером записями фиксированными и идентификаторами указателей, такими как запись, обходы являются реализованы просто путем преследования указателей вокруг структуры данных, которые могут быть выполнены с очень высокой скоростью. Чтобы пересечь конкретное отношение от одного узла к другому, база данных выполняет несколько дешевых вычислений ID(эти вычисления намного дешевле, чем , для поиска глобальных индексов, как это было бы необходимо сделать, если бы фальсификация графика в неграфе база данных)
Последнее предложение вызывает мой вопрос: как Titan, использующий Cassandra или HBase в качестве хранилища для хранения данных, достигает этих приростов производительности или компенсирует это?
И я бы проголосовал за тот же вопрос для OrientDB! –
Хороший вопрос, да. OrientDB обрабатывает собственное хранилище, поэтому я предполагаю, что у них что-то похожее на Neo4j, но я бы с удовольствием узнал. –
Neo4j является O (1) алгоритмической сложностью независимо от того, обращаетесь ли вы к кешированному объекту или к одному на диске, потому что он просто преследует указатели, а не вызывает какой-то внешний индекс для обхода отношений. Neubauer и Rodriguez (см. Выше) называют это «бесступенчатой смежностью», и я подозреваю, что он является центральным для всех разумных графических баз данных. –