Как Neo4j хранит данные внутри?

мой вопрос с точки зрения разработчика (не специально по отношению к пользователю) и может быть немного грязным. Я хочу знать, как логически сохраняется структура узлов и отношений в базе данных. Например, когда я говорю, что у меня есть бла-бла информация. Куда? - тогда ответ в книге, либо в виде сетки, либо в виде линий на странице. В случае РСУБД данные хранятся в сеточном / табличном формате. Но я не могу понять, как graph хранится в базе данных Neo4j/graph. Я использую СУБД Neo4j клиента 2.1.2.

1 ответов


http://www.slideshare.net/thobe/an-overview-of-neo4j-internals немного устарел, но это дает вам хороший обзор логического представления Neo4j.

узел ссылки:

  • его первая метка (я предполагаю, что метки хранятся как один связанный список)
  • его первое свойство (свойства организованы как один связанный список)
  • его начальные / конечные отношения
отношения как дважды связанные списки. Связь указывает на:
  • его первое свойство (то же, что и узлы)
  • отношение предшественника и преемника его начального узла
  • отношение предшественника и преемника его конечного узла

из-за этой цепной структуры легко возникает понятие обхода (т. е. способ запроса данных). Вот почему база данных графов, такая как Neo4j, выделяется при прохождении Графовой структуры данные.

мое грубое предположение было бы также, так как Neo4j версии 2.1 (и его недавно введенный плотный узел управления), отношения узлов разделены по типу. Таким образом, если узел N является, например, начальным узлом для 5 отношений типа A и для 5 миллионов rels типа B, то пересечение rels типа A для N остается O(n=5).