Я хочу перенести существующее приложение с прибл. 10 миллионов записей хранятся в реляционной базе данных для CouchDB. Что мне нравится в CouchDB, так это простота репликации и быстрое кеширование представлений. Что мне не нравится, так это скорость создания и записи, которая будет очень медленной с 10 миллионами документов.
Одна идея, которую я должен обойти эти потенциальные узкие места, - иметь три экземпляра CouchDB:
Экземпляр 2 реплицируется из экземпляра 1. Поскольку не будет приложений, использующих экземпляр 2, это позволяет создавать новые представления, не затрагивая производственные приложения.
Экземпляр 3 реплицируется из экземпляра 2, который включает в себя все кэшированные представления.
Возможное ли это решение?
Я никогда не запускал CouchDB, только исследовал его, поэтому не принимайте мои предложения здесь как истинные без проверки ...
Прежде всего, я настоятельно рекомендую прочитать серию статей Джона П. Вуда о его опыте использования CouchDB в производственной среде: http://johnpwood.net/2009/06/15/couchdb-a-case-study/
Затем, когда вы говорите «экземпляры», это физический сервер с одним экземпляром CouchDB? Если мы говорим только о трех серверах, я не думаю, что разделение мощности путем назначения разных ролей является оптимальным. Мне кажется, что все 3 сервера должны быть идентичными и загруженными с полным набором данных, чтобы можно было выполнять параллельные запросы чтения ...?
Если это всего 3 сервера, я бы рассмотрел традиционную СУБД и традиционную репликацию. Я сомневаюсь, что CouchDB будет иметь такое большое значение для вас с этой относительно небольшой вычислительной мощностью?
Другое дело, внимательно посмотрите на HBase, построенный на базе Hadoop. Фреймворк Hadoop сейчас получает отличное корпоративное спонсорство, и Yahoo и Facebook являются крупными пользователями. Учитывая это, HBase может развиваться быстрее и быть более хорошо протестированным, чем некоторые из конкурентов.
HTH
Я почти уверен, что CouchDB не реплицирует кеши представлений (поскольку они, в конце концов, кеши), поэтому вам придется реплицировать их вне диапазона (что типа упускает суть, ИМО).
CouchDB, вероятно, просто не так хорош для больших нагрузок на запись. Если ваша нагрузка все-таки слишком большая для чтения, я думаю, вы можете просто вызывать представления после каждой вставки / обновления, чтобы представления всегда полностью поддерживались кешем.
Отказ от ответственности: я использую CouchDB на нескольких сайтах, но его размер далеко не тот, о котором вы говорите.