Как лучше всего использовать хранилища документов? - PullRequest
25 голосов
/ 31 июля 2010

Я много слышал о документно-ориентированных хранилищах данных, таких как CouchDB.Я понимаю использование BigTable, таких как магазины, такие как Cassandra.Прочитав этот вопрос , мне стало интересно, каковы условия использования хранилища документов?

Ответы [ 2 ]

30 голосов
/ 31 июля 2010

Магазины семейства колонок, такие как Bigtable и Cassandra, имеют очень ограниченные возможности запросов.Приложение отвечает за ведение индексов для запроса более сложной модели данных.

Базы данных документов позволяют запрашивать содержимое, а не только ключ.Он также будет управлять индексами для вас, уменьшая сложность вашего приложения.

Доменный дизайн проповедует использование агрегатов и объектов значений. Как указывает Айенде , (сложные) агрегаты являются очень естественными кандидатами для хранения в виде одного документа, вместо их нормализации по нескольким таблицам или семействам столбцов.Это уменьшит сложность вашего слоя постоянства.Также меньше шансов, что связанные данные будут разбросаны по нескольким узлам, поскольку все данные содержатся в одном документе.

Если вашему приложению необходимо хранить полиморфные объекты, базы данных документов также являются хорошим кандидатом.Конечно, это также может храниться в Кассандре, но у вас не будет столько возможностей для запросов.По крайней мере, не из коробки.

Думайте о базе данных документов как о роскошном спортивном автомобиле.Он не нуждается в профессиональном водителе (читай: сложное приложение), чтобы доставить вас от А до Б, у него есть такие функции, как кондиционер и удобные сиденья, и он преодолеет трассу с высокой масштабируемостью в приемлемое время.Однако, если вы хотите установить рекорд круга на трассе с высокой масштабируемостью, вам понадобится профессиональный водитель и высоко оптимизированный автомобиль (например, Cassandra), в котором отсутствуют такие функции, как кондиционер.

9 голосов
/ 31 июля 2010

Еще одна особенность CouchDB заключается в том, что вы можете создавать эти агрегаты не как документы, хранящиеся вручную, а как представления (которые получены из хранимых данных и обновляются автоматически.)

Это похоже на электрические стеклоподъемники, сиденья с подогревом или стерео.

...