Neo4j уменьшение размера производственной базы данных - PullRequest
0 голосов
/ 27 июня 2018

Я сравнил размер моей производственной базы данных neo4j. 31 мая 2018 года он составил 120 МБ, а 27 июня 2018 года - 100 МБ. Я ежедневно анализирую небольшое уменьшение размера. Как правило, объем нашей продукции должен увеличиваться, поскольку система работает, и число пользователей не увеличивается.

Я сравнил количество всех узлов в системе. Граф показал ожидаемый и отклоняющийся рост, и приложение работает нормально.

Я просто хотел узнать, как neo4j хранит и сжимает данные для понимания ситуации.

Извиняюсь за плохой английский.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Еще одно объяснение того, что вы видите, может быть из-за того, как Neo4j обрабатывает удаленные узлы и отношения, в частности, как это относится к повторному использованию пространства при создании новых узлов и отношений после удаления.

Поскольку данные об узлах и взаимосвязях хранятся в памяти, доступны и адресуемы вычислениями с использованием идентификатора графа, когда узлы и взаимосвязи удаляются в neo4j, эти пробелы в памяти помечаются как очищенные и обнуленные, но память не сжимается. Эти «дыры» в узлах и хранилищах отношений все еще там, занимают пространство и не используются (как пустующие квартиры, которые занимают физическое пространство, просто не хватает арендаторов). Тем не менее, Neo4j сохраняет файл хранилища идентификаторов, в котором отслеживаются идентификаторы связей и узлов, которые были удалены, и которые могут быть использованы повторно при добавлении узлов и связей позже.

Эффект всего этого приводит к интересному изменению ожиданий: по мере удаления узлов и отношений на графике, вы можете увидеть увеличение размера вашей базы данных, потому что 1. Хранилища для узлов и отношений не сжимаются и не дефрагментируются при удалении и 2. Идентификаторы добавляются в файл хранилища идентификаторов, чтобы отслеживать вакансии, которые будут заполнены позже.

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

Если вы достигнете точки, где все идентификаторы, пригодные для повторного использования, были заполнены, то при добавлении узлов и отношений вы снова увидите увеличение размера базы данных, поскольку нам нужно увеличить хранилища узлов и отношений, а также мы вообще не будем касаться хранилищ идентификаторов (которые должны быть пустыми, поскольку идентификаторы для повторного использования отсутствуют).

0 голосов
/ 27 июня 2018

Сжатия нет, и я уверен, что другой размер обусловлен поворотом в журнале транзакций (т. Е. neostore.transaction.db.X файлы)

...