MongoDB и CouchDB предлагают решения, но не имеют встроенной функциональности.Посмотрите этот вопрос SO о , представляющем иерархию в реляционной базе данных , так как большинство других решений NoSQL, которые я видел, схожи в этом отношении;где вы должны написать свои собственные алгоритмы для пересчета этой информации при добавлении, удалении и перемещении узлов.Вообще говоря, вы принимаете решение между временем быстрого чтения (например, вложенный набор ) или временем быстрой записи ( список смежностей ).См. Вышеупомянутый вопрос SO для получения дополнительных вариантов в этом направлении - метод плоских таблиц выглядит наиболее согласованным с вашим вопросом.
Одним стандартом, который абстрагирует эти соображения, является репозиторий контента Java (JCR), оба Apache JackRabbit и JBoss eXo являются реализациями.Обратите внимание, что за кулисами оба все еще выполняют какие-то алгоритмические вычисления для поддержания иерархии, как описано выше.Кроме того, JCR также обрабатывает разрешения, хранилище файлов и некоторые другие аспекты - так что это может быть излишним для вашего проекта.