Синхронизация приложений - PullRequest
       86

Синхронизация приложений

3 голосов
/ 10 апреля 2011

У меня есть автономное сетевое устройство. Он должен быть переработан, чтобы функционировать как часть географически распределенной группы этих устройств. Синхронизация между устройствами в группе не должна происходить часто, не чаще, чем ежечасно. Приложение рельсов с SQLite.

В основном мы хотим синхронизировать определенные фрагменты информации, собираемой на этих устройствах. Из-за развертывания невозможно добавить большой кластер базы данных.

Я рассматривал CouchDB, поскольку репликация и обработка конфликтов, возникающих в результате репликации, является его сильной стороной.

Что вы думаете о CouchDB как о механизме синхронизации распределенных сетевых устройств? Есть мысли или предложения по альтернативному подходу?

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

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

Многие люди использовали CouchDB для подобных ситуаций. Взгляните на некоторые тематические исследования (http://www.couchbase.com/customers/case-studies) и недавнее сообщение в блоге, которое я написал об использовании CouchDB для синхронизации данных сеансов интерфейсных серверов ( weblog.bocoup.com / storing-php-session-in -couchdb ).

Кроме того, было бы полезно, если бы вы опубликовали дополнительную информацию о вашем деле, чтобы мы могли помочь удовлетворить наши ответы.

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

2 голосов
/ 12 апреля 2011

CouchDB в порядке.У вас могут быть некоторые альтернативы с инструментами Unix.

Самая простая база данных ключ / значение - это файлы в файловой системе.Они отлично работают.Если вам нужно только хранилище ключей / значений с базовой репликацией, тогда rsync может сделать это.Если ваша политика разрешения конфликтов, например, всегда использует последние данные с метками времени, то вам может понадобиться rsync.

Прежде всего, вы, вероятно, используете Unix / Linux.SSH и rsync будут включены, в отличие от CouchDB.

Другое преимущество rsync (фактически его туннель SSH) - это, конечно, идентификация, аутентификация и авторизация.Ваше устройство предположительно Unix / Linux, и существует миллион способов подключить авторизацию Unix.Это не гарантия, но почти все выполнимо: файлы паролей, NIS, LDAP, Kerberos, Samba / Active Directory.Список можно продолжить.

С помощью Couch вам нужно будет определить какую-то систему управления пользователями.

  • Будете ли вы использовать oauth?
  • Придется ли вамнаписать плагин аутентификации?
  • Будете ли вы также копировать базу данных _users?А как насчет конфликтов в базе данных _users?
  • Вместо этого у вас есть центральная база данных _users?Как у вас может быть центральная база данных пользователей, если вы не можете иметь центральную базу данных data ?

Couch, как и MySQL, является полноценным сервером.Это поддержит загрузку, которую rsync не сделает.

  • Не забудьте сжать базы данных, сжать представления и запустить очистку представлений
  • Не забудьте повернуть файлы журнала
  • Возможно, сделайте резервную копию ваших файлов .couch и вашей .ini config

Другими словами, вы можете сделать быстрый и грязный хак rsync или вам нужен полный пакет Couch?

CouchDB - это единая, согласованная платформа независимо от ОС.Это может быть хорошо или плохо.Не зная вашей специфики, я бы предположил, что rsync по SSH - лучший краткосрочный, но Couch - лучший долгосрочный.(Но с таким большим количеством программных проектов, долгосрочные проекты, похоже, никогда не наступят.)

2 голосов
/ 10 апреля 2011

Какой конкретный вопрос?

CouchDB реализует репликацию мастер-мастер, что именно то, что вы просите.

Или?

...