2015-05-16 8 views
1

У меня возник вопрос о том, как график в Neo4j загружается в память с диска.Neo4j представление графика - внутренности

Прочитать ссылку here, я думаю, что я понимаю, как график представлен на диске . И когда создаются новые базы данных Neo4j, есть физически отдельные файлы, созданные для узлов, краев и свойств магазинов (в основном).

При выдаче запроса на Neo4j, это делает:

1) Загрузить весь граф (узлы, ребро, свойство) в памяти, используя вдвойне ссылку списочной структуры?

ИЛИ

2) Определение узлов, ребер, необходимый для запроса и заполнить структуру списка со случайным accessess к relavant магазинам (узлы, ребер) на диске? Если да, то как Neo4j минимизирует количество обращений к диску?

+1

Больше похоже на №2, но это не совсем так. Вы должны попробовать запустить 'ПРОФИЛЬ' по некоторым запросам cypher и изучить план, который он генерирует. Это даст вам конкретные примеры того, как он обращается к информации. – FrobberOfBits

ответ

2

Как frobberOfBits упоминает, что это больше похоже на # 2. Доступ к диску сводится к минимуму с помощью двухслойной архитектуры кэша, которая лучше всего описана в reference manual. Даже если ваш кеш меньше, чем файлы хранилища, это приводит главным образом к операции поиска (с фиксированной длины записи) с чтением. Такие операции обычно бывают быстрыми (даже быстрее с соответствующим оборудованием, например SSD).

Смежные вопросы