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

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

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

original post
 + re: original post
 + re: original post
   + re2: original post
     + re3: original post
   + re2: original post
47
задан 22 янв. '11 в 16:03
источник поделиться
11 ответов

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

http://neo4j.com/

6
ответ дан 01 апр. '15 в 15:18
источник

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

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

26
ответ дан 23 янв. '11 в 20:28
источник

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

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

17
ответ дан 22 янв. '11 в 17:57
источник

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

3
ответ дан 17 марта '13 в 15:51
источник

Наиболее распространенным является IBM IMS. Также есть База данных кэша

См. этот вопрос, размещенный в разделе dba stackexchange.

2
ответ дан 03 марта '11 в 16:15
источник

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

2
ответ дан 13 апр. '11 в 3:26
источник

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

2
ответ дан 19 июня '14 в 15:53
источник

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

2
ответ дан 13 апр. '14 в 19:01
источник

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

0
ответ дан 04 марта '11 в 18:01
источник

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

0
ответ дан 11 июня '14 в 23:51
источник

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

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

-2
ответ дан 22 янв. '11 в 17:04
источник

Другие вопросы по меткам или Задайте вопрос