Ответ 1
Это база данных графа. Может использоваться как база данных дерева.
Какой тип базы данных NoSQL лучше всего подходит для хранения иерархических данных?
Скажем, например, я хочу хранить сообщения форума с древовидной структурой:
original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
Это база данных графа. Может использоваться как база данных дерева.
MongoDB и CouchDB предлагают решения, но не встроенные функции. См. Этот вопрос SO представляющий иерархию в реляционной базе данных, поскольку большинство других решений NoSQL, которые я видел, схожи в этом отношении; где вам нужно написать свои собственные алгоритмы для пересчета этой информации, поскольку узлы добавляются, удаляются и перемещаются. Вообще говоря, вы принимаете решение между быстрыми временами чтения (например, вложенный набор) или быстрые времена записи (список смежности). См. Вышеупомянутый вопрос SO для получения дополнительных параметров в этих строках. подход с плоской таблицей наиболее соответствует вашему вопросу.
Один из стандартов, который абстрагирует эти соображения, - это Java Content Repository (JCR), Apache JackRabbit и JBoss eXo - реализации. Заметим, что за кулисами оба по-прежнему выполняют некоторые алгоритмические вычисления для поддержания иерархии, как описано выше. Кроме того, JCR также обрабатывает разрешения, хранилище файлов и несколько других аспектов - поэтому это может быть излишним для вашего проекта.
Вам может понадобиться документарно-ориентированная база данных, например MongoDB или CouchDB.
См. примеры различных методов, которые позволяют хранить иерархические данные в MongoDB: http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
Столкнувшись с той же проблемой, я решил создать собственное (очень простое) решение, используя Lua + Redis https://github.com/qbolec/Redis-Tree/
Наиболее распространенным является IBM IMS. Также есть База данных кэша
Exist-db реализована иерархическая модель данных для сохранения xml
Графические базы данных, вероятно, также решают эту проблему. Если neo4j недостаточно для вас с точки зрения масштабирования, рассмотрите Titan, который основан на различных back-end хэш-памяти, включая HBase, и должен масштабироваться очень хорошо. Это не так зрело, как neo4j, но это очень перспективный проект.
LDAP, очевидно. OpenLDAP сделает короткую работу.
Отъезд MarkLogic. Вы можете скачать демо-версию с веб-сайта. Это база данных для неструктурированных данных и подпадает под классификацию баз данных NoSQL. Я знаю, что неструктурированные данные являются довольно загруженным термином, но просто рассматривают его как данные, которые не очень хорошо вписываются в строки и столбцы RDBMS (например, иерархические данные).
Просто провел выходные на учебном курсе, используя MUMUPS db, в качестве исходного кода для полной платформы разработки приложений для браузера javascript. Качественный товар! Я бы рекомендовал GT.M дистрибутив MUMPS под GPL. Или попробуйте http://sourceforge.net/projects/mumps/?source=recommended для ванильного MUMPS. Проверьте http://robtweed.wordpress.com/ для рамки ewd.js js и больше информации о MUMPS.
Здесь нет ответа для вас. SQLServer 2008!!!! Это отлично подходит для рекурсивных запросов. Или вы можете пройти старомодный маршрут и хранить данные иерархии в отдельной таблице, чтобы избежать рекурсии.
Я думаю, что реляционные базы данных очень хорошо подходят к древовидным данным. Как в производительности запросов, так и в простоте использования. С одной оговоркой.... вы будете вставлять в индексированную таблицу и, возможно, несколько других индексированных таблиц каждый раз, когда кто-то делает сообщение. Вставка производительности может быть проблемой на форуме в формате facebook.