Какой тип базы данных NoSQL лучше всего подходит для хранения иерархических данных?
какой тип базы данных NoSQL лучше всего подходит для хранения иерархических данных?
скажем например я хочу хранить посты форума с древовидной структурой:
original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
11 ответов:
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, но это очень перспективный проект.
проверить 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.