2015-07-05 5 views
0

У меня есть структура данных (B-Tree), которая хранит текст как ряд узлов, каждый из которых представляет одну строку текста. Я хотел бы сохранить текст в файле, который я мог бы синхронизировать со структурой, не переписывая весь файл для каждого редактирования. Поэтому, когда изменяется строка n моей структуры, я могу получить доступ и изменить только строку n файла, поддерживая его обновление со структурой.Формат файла для хранения текста как легко доступных строк

Может кто-нибудь указать мне в правильном направлении?

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

ответ

0

Похоже, вы хотите B-Tree.

Если вы идете по этому маршруту, имейте в виду, что все реляционные базы данных построены на B-Trees. Таким образом, вы можете использовать вместо этого встроенную базу данных, такую ​​как SQLite.

+0

Структура данных, которую я использую для хранения текста, является B-Tree. Мой вопрос заключается в том, как сохранить эту структуру в файле таким образом, который легко обновляется. – RedHatter

+0

Вот почему я предложил использовать SQLite - он сериализует B-Tree на диск для вас. Если вы не можете использовать существующий механизм базы данных, вы можете просто сериализовать свое B-Tree как непрерывный набор кортежей '[line-id, flags, size, data]. Когда строка изменяется, вы устанавливаете флаг 'deleted' в существующий кортеж и записываете новый кортеж в конце файла. B-Tree в памяти смещается к последнему кортежу на диске. Время от времени (ежедневно?) Компактный файл, удаляя удаленные кортежи и обновляя B-Tree в памяти. –