Как сохранить древовидные структуры в Java?

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

Я хотел бы иметь базу данных с открытым исходным кодом, доступную с Java.

Каков наилучший способ сделать это? CouchDB? Neo4j?...

Ответ 1

Когда я впервые столкнулся с этой проблемой, я нашел замечательную статью (ссылка).

В словах: в мире СУРБД существуют два подхода к хранилищу основных моделей дерева:

  • Модель списка привязанностей
  • Вложенная модель набора

Ответ 2

Здесь отличная статья на Neo4j. В общем, похоже, что neo4j - ваш лучший вариант, поскольку базы данных документов по-прежнему относительно плоские и могут привести к некоторой неудобной настройке (по-прежнему возможно).

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

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