копируют взгляды couchdb? - PullRequest
2 голосов
/ 22 июня 2010

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

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

другой сценарий заключается в использовании внутреннего кластера для вычисления сложных представлений и последующей репликации этих результатов на группу интерфейсных серверов, которые фактически подвергаются воздействию пользовательских запросов.

Ответы [ 2 ]

5 голосов
/ 06 июля 2010

Как сказал Тиль, результаты не тиражируются.Для более подробной информации, вы на самом деле не хотите, чтобы они были воспроизведены.Общая парадигма CouchDB, которую вы должны помнить, заключается в том, что каждая установка рассматривается как независимый узел - поэтому _id, _rev и порядковые номера так важны.Это позволяет каждому узлу работать без учета какого-либо другого узла: если один из ваших узлов выйдет из строя, все остальные будут продолжать работать без заботы в мире.

Конечно, это вводит новые соображения относительно согласованности, к которым вы, возможно, не привыкли.Например, если у вас есть несколько веб-серверов, каждый из которых имеет свой собственный узел CouchDB, и эти узлы выполняют репликацию между собой, так что каждый экземпляр обновляется, между узлами будет задержка.Вот пример потока:

  1. Пользователь записывает изменение на веб-сервер A.
  2. Пользователь отправляет запрос на чтение на веб-сервер B, поскольку ваш балансировщик нагрузки решил, что B был лучшим выбором,Пользователь получает свой результат.
  3. Веб-сервер A отправляет обновленный документ на веб-сервер B посредством репликации.

Как видите, пользователь получил предыдущую версию своего документа, посколькувеб-сервер B еще не знал об изменении.Это можно победить с помощью ...

  • Stick сессий, так что все их чтения и записи идут на один и тот же сервер.Это может привести к тому, что ваш балансировщик нагрузки выйдет из строя.
  • Перемещение узлов CouchDB с веб-серверов на их собственные блоки.Если вы пойдете с этим, то, вероятно, захотите взглянуть на проект couchdb-lounge (http://tilgovi.github.com/couchdb-lounge/).
  • Неужели вашим пользователям действительно важно, если они получат устаревшие результаты? Ваш вариант использования может быть тот, где ваши пользователи выигралине замечают, отражают ли их результаты изменения, которые они только что внесли. Убедитесь, что вы действительно получаете заметную ценность от этой работы.

Приветствия.

1 голос
/ 30 июня 2010

Вычисленный результат не реплицируется.

Вот некоторые дополнительные соображения:

  • Когда вы разбиваете свой сервер и запускаете с ним второй сервер, какВы распространяете чтение / запись и комбинируете результаты просмотра?Для этой настройки требуется некоторый прокси-сервер. Я советую вам заглянуть в CouchDB-Lounge .

  • Если вы работаете мастером-мастером, вы можете оставить серверысинхронно с использованием DRDB .Было доказано, что он работает с репликацией мастер-мастер MySQL, я не понимаю, почему это не будет работать здесь.Это также означает, что вычисленный результат автоматически синхронизируется на обоих серверах.

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...