2015-08-03 2 views
1

Мы разрабатываем научный сайт, где: * один авторитетный источник данных (мастер) * 150+ приграничные серверы разбросаны по всему миру (клиентов) * потенциальные 5K мобильных пользователей подключение к приграничным серверам (суб-клиентов)CouchDB для широко разбросанных участков

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

Весь набор данных, вероятно, вырастет примерно до 200 ГБ, но его можно сегментировать на более мелкие геопространственные множества для более мелкой репликации струйки.

Данные будут в значительной степени статическими. Необходимо распространить менее 1% изменений.

Наше чтение состоит в том, что CouchDB может быть хорошо подходит для этого. Есть что-то, что нам не хватает?

  • Поскольку данные изменяется только в начале, имея дело с репликацией конфликт сделал довольно простой
  • геопространственных поиск теперь поддерживается через GeoCouch (не так хорошо, как в базе данных PostGIS мы в настоящее время используется, но , вероятно, достаточно хорошо)
  • CouchDB индексы должны помогать при условии, что данные имеют низкий уровень оттока абонентов
  • Мы не заботимся о сделках с низкими задержками, (обновление данных происходит медленно)
  • GeoJSON довольно хорошо подходит для нашего типа данных
  • Мы действительно хотим бесплатную репликацию
  • Нам нужен быстрый локальный поиск данных (на основе пространственных и других функций, получим ли мы это?). Скорость измеряется по характеристикам человека, например. google search, а не с точки зрения массового автоматизированного поиска
  • Мы будем обеспокоены обнаружением коррупции и сбоев. Но, похоже, дамп и перезагрузка БД могут быть выполнены в случае катастрофы на пограничном сервере, верно?

Есть ли что-то еще мы должны смотреть (например couchbase,)

ответ

3

Основной вопрос поставить здесь, если вы собираетесь использовать фильтрованную репликацию или нет. Это самая слабое место в отличном CouchDB.

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

В приведенном выше случае решение будет Couchbase + SyncGateway, или некоторые пользовательские вид слой на основе репликации (который также вариант, учитывая, что вы не будете иметь много изменений, так что вы можете упростить его)

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

Couchbase, btw, также использует который будет более эффективным, чем CouchDB, если протокол CouchDB не используется для двунаправленного обмена данными и разрешения конфликтов.

+0

Отлично. Это помогает мне сосредоточиться на моих исследованиях. Геоданные не очень взаимосвязаны. Должно быть возможно разделить его на отдельные базы данных (по регионам, типу данных и т. Д.). Затем погрузить части. Но можете ли вы указать мне на что-либо, говоря о протоколе репликации. Предположим, что у одной БД имеется 50 000 объектов. Если мастер изменяет 5 элементов, насколько дорогой является репликация (предположим, что размер объекта составляет 1 КБ в среднем). [Т.е. Я думаю, что мы можем избежать фильтрованной репликации] –

+0

Не уверен, что я понял вопрос, однако постараюсь ответить. Репликация будет передавать только измененные документы, поэтому накладные расходы будут примерно равны общему размеру измененных документов. Он отслеживает изменения документа в целом, а не как различия. Мое любимое чтение о репликации, хотя и немного техническое, - это [здесь] (https://github.com/couchbase/couchbase-lite-ios/wiki/Guide:-Replication/88148094df2df99a75a84733b91d905ec841b769); обязательно зайдите в раздел «Дополнительная литература» ниже –

+0

. Это был хороший сайт, вы выбираете хорошие источники. Еще два последующих действия (1) также следует посмотреть на Mongo Replication или на другие БД с репликацией? (2) Что я также чувствую, так это то, что CouchDB что-то делает с индексами, которые позволяют ускорить поиск и агрегаты (сокращения?), Где данные в основном стабильны, и только несколько дополнительных изменений данных. Любые указания на технические статьи по этому поводу? coutapp.com/articles/2011/01/20/couchdb-in-production –

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