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


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

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

original post
 + re: original post
 + re: original post
   + re2: original post
     + re3: original post
   + re2: original post
11 55

11 ответов:

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

http://neo4j.com/

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

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

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

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

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

посмотреть этот вопрос размещен в разделе dba stackexchange.

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

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

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

LDAP, очевидно. OpenLDAP быстро справится с этим.

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

просто провел выходные на учебном курсе, используя mumups db в качестве бэк-энда для полного стека javascript browser Application development framework. Отличная штука! Я бы рекомендовал GT.M дистрибутив свинки под GPL. Или попробуйте http://sourceforge.net/projects/mumps/?source=recommended для ванильной свинки. Проверьтеhttp://robtweed.wordpress.com/ для ewd.JS JS framework и дополнительная информация о свинке.

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

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