2010-07-31 2 views
24

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

ответ

29

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

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

Domain-driven design евангелизирует использование агрегатов и объектов ценности. As Ayende points out, (комплексные) агрегаты являются очень естественными кандидатами для хранения в виде единого документа, вместо нормализации их по нескольким таблицам или семействам столбцов. Это уменьшит сложность вашего уровня персистентности. Также меньше шансов, что связанные данные будут разбросаны по нескольким узлам, так как все данные содержатся в одном документе.

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

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

+1

Эй, какое приятное описание! Единственное, что я хотел бы добавить, это то, что CouchDB нацелен на то, чтобы быть Honda Accord баз данных, а не Ferrari. Однако я думаю, что они разные метафоры, только связанные по совпадению. – JasonSmith

9

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

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

+0

Bumping Naughty от природы, конечно, – JasonSmith

Смежные вопросы