2009-12-06 2 views
1

Я пытаюсь реализовать BTree. Я в значительной степени делаю это с деревом и отлично работает для меньшего ввода, что означает, что я реализовал дерево в памяти. Теперь я хотел бы играть с большим вкладом, для которого я должен написать дерево в файл. Я не знаю, с чего начать. Я использую Java, и я не делал слишком много «кодирования на диске». Любая помощь будет очень оценена. Если кто-то хочет помочь мне с примером, который будет еще лучше.Сериализация BTree к файлу

+0

Можете ли вы отредактировать код для своей структуры данных или, по крайней мере, объектов узла на свой вопрос, пожалуйста? Это упростит наши «рабочие места». –

ответ

3

Если ваш BTree и его узлы реализуют Serialable, вы можете записать дерево и его содержимое в файл с помощью ObjectOutputStream и FileOutputStream. Это будет легко проверить: записать его в .ser-файл, прочитать его обратно и увидеть, что у вас есть оригинальный BTree.

Java Almanac имеет несколько хороших примеров по упаковке, которые помогут.

ОБНОВЛЕНИЕ: Я не вижу ни одного вашего варианта использования для записи динамически с внесением изменений или «не желающим писать все дерево».

То, что вы предлагаете, кажется невероятно медленным. Зеркалирование каждого изменения в памяти с соответствующей модификацией файла займет много времени.

Если вы пытаетесь выполнить свою собственную реализацию базы данных, это имеет смысл. Какой сценарий вы имеете в виду?

+0

Ну, это не то, что я хочу написать весь BTree в файл. Я хочу написать дерево по мере его создания. Поскольку BTree является динамическим - корень и узел меняются, я должен делать запись на диск и читать диск, поскольку я создаю дерево, что означает, что мне также нужно сохранить указатель (или что-то в этом роде). – newbie

+0

-1: целая точка B-деревьев заключается в том, что количество обращений к диску минимизировано, потому что каждый узел заполняет ровно один диск, предполагая, что параметры установлены правильно. Это означает, что ввод/вывод следует тщательно контролировать. –

1

Возможно, вы захотите взглянуть на this question.

+0

Вау - вопрос год. Вы ушли с вашего пути, чтобы найти это. – duffymo