Иерархические структуры данных часто хранятся в реляционных базах данных. Этот вид устройства хранения данных является гибким, но плоским, таким образом, древовидная структура должна быть сборкой с каждым запросом. Я хочу сохранить сообщения форума как древовидную структуру, но должно быть возможно запросить эффективно, сказать, например, выбирающие сообщения по дате или автора.
Я хотел бы иметь базу данных с открытым исходным кодом, которая доступна от Java.
Что лучший способ состоит в том, чтобы сделать так? CouchDB? neo4j?...?
Вот отличная статья о Neo4j. В общем, похоже, что neo4j - ваш лучший вариант, поскольку базы данных документов все еще относительно плоские и могут привести к некоторой неудобной настройке (хотя все еще выполнимо).
Neo4j, будучи графической базой данных, должен хорошо подходить для хранения вашего дерева. Я никогда не использовал его, но, учитывая вашу проблемную область, он кажется лучшим вариантом (по крайней мере, тем, который нужно исследовать в первую очередь).
Что касается «лучшего способа», я думаю, это зависит от вашей реализации и требований. Я думаю, вам следует написать простой тест для базы данных графов, базы данных документов, базы данных объектов и реляционной базы данных (или нет) и посмотреть, какой из них подходит для проблемы, которую вы пытаетесь решить.
Когда я впервые столкнулся с этой проблемой, я нашел отличную статью (link).
Другими словами: в мире РСУБД существует 2 подхода к хранению основных древовидных моделей: