Я пытаюсь реализовать BTree. Я в значительной степени делаю это с деревом и отлично работает для меньшего ввода, что означает, что я реализовал дерево в памяти. Теперь я хотел бы играть с большим вкладом, для которого я должен написать дерево в файл. Я не знаю, с чего начать. Я использую Java, и я не делал слишком много «кодирования на диске». Любая помощь будет очень оценена. Если кто-то хочет помочь мне с примером, который будет еще лучше.Сериализация BTree к файлу
ответ
Если ваш BTree и его узлы реализуют Serialable, вы можете записать дерево и его содержимое в файл с помощью ObjectOutputStream и FileOutputStream. Это будет легко проверить: записать его в .ser-файл, прочитать его обратно и увидеть, что у вас есть оригинальный BTree.
Java Almanac имеет несколько хороших примеров по упаковке, которые помогут.
ОБНОВЛЕНИЕ: Я не вижу ни одного вашего варианта использования для записи динамически с внесением изменений или «не желающим писать все дерево».
То, что вы предлагаете, кажется невероятно медленным. Зеркалирование каждого изменения в памяти с соответствующей модификацией файла займет много времени.
Если вы пытаетесь выполнить свою собственную реализацию базы данных, это имеет смысл. Какой сценарий вы имеете в виду?
Ну, это не то, что я хочу написать весь BTree в файл. Я хочу написать дерево по мере его создания. Поскольку BTree является динамическим - корень и узел меняются, я должен делать запись на диск и читать диск, поскольку я создаю дерево, что означает, что мне также нужно сохранить указатель (или что-то в этом роде). – newbie
-1: целая точка B-деревьев заключается в том, что количество обращений к диску минимизировано, потому что каждый узел заполняет ровно один диск, предполагая, что параметры установлены правильно. Это означает, что ввод/вывод следует тщательно контролировать. –
Возможно, вы захотите взглянуть на this question.
Вау - вопрос год. Вы ушли с вашего пути, чтобы найти это. – duffymo
Можете ли вы отредактировать код для своей структуры данных или, по крайней мере, объектов узла на свой вопрос, пожалуйста? Это упростит наши «рабочие места». –