Как хранить древовидные структуры в Java? - PullRequest
10 голосов
/ 09 марта 2010

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

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

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

Ответы [ 2 ]

7 голосов
/ 09 марта 2010

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

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

  • Модель списка смежности
  • Модель вложенного набора
4 голосов
/ 09 марта 2010

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

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

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

...