CouchDB: управление тем, какой осколок получает данные
Мое понимание кластерного подхода couchDB состоит в том, чтобы гарантировать, что каждый узел в кластере получает равное распределение данных, хэшируя уникальный идентификатор документа. У меня вопрос, есть ли способ изменить это и определить пользовательский ключ для "интеллектуальной" маршрутизации документа на определенный узел в кластере?
В моем сценарии у меня есть данные, которые относятся к определенной сущности (например, клиент-проект-задача-элемент) по всем моим данным; У меня будет достаточно предметов для горизонтального масштабирования; однако каждый поиск всегда будет относиться к заданной задаче клиент-проект, для которой набор данных имеет только умеренный размер.
Я думаю, что наиболее эффективным подходом будет разделение моих данных по клиент-проекту-задаче и предварительное выделение, скажем, 1000 разделов.
Я понимаю, что в определенный момент это ограничит мои возможности масштабирования, но компромисс с необязательностью попадания в каждый раздел для каждого поиска делает его тем, за который я готов платить.
Так есть ли способ создать этот тип логики разделения в CouchDb?
Спасибо; казарка
1 ответ
Как уже упоминалось в комментариях, CouchDB пока не имеет встроенной поддержки шардинга. Однако, с продолжающимся слиянием BigCouch и выпуском CouchDB 2.0, это произойдет. Источник этого исходит от Cloudant, так что вы должны быть в состоянии понять это на данный момент, прочитав их документацию, технические описания и информацию о BigCouch.
В последних еженедельных новостях от CouchDB есть упоминание о скором написании этой статьи в документации: http://blog.couchdb.org/2014/08/14/couchdb-weekly-news-august-14-2014/