Подтвердить что ты не робот

Какой тип базы данных NoSQL лучше всего подходит для хранения иерархических данных?

Какой тип базы данных NoSQL лучше всего подходит для хранения иерархических данных?

Скажем, например, я хочу хранить сообщения форума с древовидной структурой:

original post
 + re: original post
 + re: original post
   + re2: original post
     + re3: original post
   + re2: original post
4b9b3361

Ответ 1

Это база данных графа. Может использоваться как база данных дерева.

http://neo4j.com/

Ответ 2

MongoDB и CouchDB предлагают решения, но не встроенные функции. См. Этот вопрос SO представляющий иерархию в реляционной базе данных, поскольку большинство других решений NoSQL, которые я видел, схожи в этом отношении; где вам нужно написать свои собственные алгоритмы для пересчета этой информации, поскольку узлы добавляются, удаляются и перемещаются. Вообще говоря, вы принимаете решение между быстрыми временами чтения (например, вложенный набор) или быстрые времена записи (список смежности). См. Вышеупомянутый вопрос SO для получения дополнительных параметров в этих строках. подход с плоской таблицей наиболее соответствует вашему вопросу.

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

Ответ 3

Вам может понадобиться документарно-ориентированная база данных, например MongoDB или CouchDB.

См. примеры различных методов, которые позволяют хранить иерархические данные в MongoDB: http://www.mongodb.org/display/DOCS/Trees+in+MongoDB

Ответ 4

Столкнувшись с той же проблемой, я решил создать собственное (очень простое) решение, используя Lua + Redis https://github.com/qbolec/Redis-Tree/

Ответ 6

Exist-db реализована иерархическая модель данных для сохранения xml

Ответ 7

Графические базы данных, вероятно, также решают эту проблему. Если neo4j недостаточно для вас с точки зрения масштабирования, рассмотрите Titan, который основан на различных back-end хэш-памяти, включая HBase, и должен масштабироваться очень хорошо. Это не так зрело, как neo4j, но это очень перспективный проект.

Ответ 8

LDAP, очевидно. OpenLDAP сделает короткую работу.

Ответ 9

Отъезд MarkLogic. Вы можете скачать демо-версию с веб-сайта. Это база данных для неструктурированных данных и подпадает под классификацию баз данных NoSQL. Я знаю, что неструктурированные данные являются довольно загруженным термином, но просто рассматривают его как данные, которые не очень хорошо вписываются в строки и столбцы RDBMS (например, иерархические данные).

Ответ 10

Просто провел выходные на учебном курсе, используя MUMUPS db, в качестве исходного кода для полной платформы разработки приложений для браузера javascript. Качественный товар! Я бы рекомендовал GT.M дистрибутив MUMPS под GPL. Или попробуйте http://sourceforge.net/projects/mumps/?source=recommended для ванильного MUMPS. Проверьте http://robtweed.wordpress.com/ для рамки ewd.js js и больше информации о MUMPS.

Ответ 11

Здесь нет ответа для вас. SQLServer 2008!!!! Это отлично подходит для рекурсивных запросов. Или вы можете пройти старомодный маршрут и хранить данные иерархии в отдельной таблице, чтобы избежать рекурсии.

Я думаю, что реляционные базы данных очень хорошо подходят к древовидным данным. Как в производительности запросов, так и в простоте использования. С одной оговоркой.... вы будете вставлять в индексированную таблицу и, возможно, несколько других индексированных таблиц каждый раз, когда кто-то делает сообщение. Вставка производительности может быть проблемой на форуме в формате facebook.