Назад | Перейти на главную страницу

Масштабируемая настройка CouchDB

Я хочу перенести существующее приложение с прибл. 10 миллионов записей хранятся в реляционной базе данных для CouchDB. Что мне нравится в CouchDB, так это простота репликации и быстрое кеширование представлений. Что мне не нравится, так это скорость создания и записи, которая будет очень медленной с 10 миллионами документов.

Одна идея, которую я должен обойти эти потенциальные узкие места, - иметь три экземпляра CouchDB:

  1. Только запись: Это главный экземпляр. Наша единственная истина. Здесь разрешены только обновления, вставки и удаления. По этому экземпляру нет ни прочтений, ни просмотров.
  2. Просмотр экземпляра только для создания: Используется только для создания и кеширования представлений. В этом экземпляре нет операций чтения и записи.
  3. Только для чтения экземпляр: Доступ для чтения через реплицированные представления.

Экземпляр 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 на нескольких сайтах, но его размер далеко не тот, о котором вы говорите.