2009-09-24 2 views
14

я столкнулся следующий вызов:Ведения распределенных баз данных, синхронизированных в нестабильной сети

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

Любые предложения о том, как я могу это достичь.

Спасибо.

+0

Вы ищете инструмент? Разработка пользовательского решения? –

ответ

8

Мне не известны никакие базы данных, которые предоставят вам эту функциональность из коробки; здесь сложная сложность возникает из-за необходимости обеспечения согласованности и разрешения конфликтов (например, что происходит, если сеть делится на две половины, а вы обновляете что-то до значения 123, а я обновляю ее на другой половине до 321, а затем сети снова подключиться?)

Возможно, вам придется сворачивать самостоятельно.

Для некоторых идей о том, как это сделать, проверить дизайн PNUTS системы Yahoo,: http://research.yahoo.com/node/2304 и Динамо Амазонки: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

+0

+1. Хорошие ссылки! – David

+0

Бумага Yahoo очень интересная. Идея разработки моего собственного решения уже была на моем уме. Я хотел бы иметь что-то вроде GIT для баз данных. – jassuncao

+2

Что касается Git, это означает, что вы выполняете ручное слияние при наличии противоречивых обновлений. Это, как правило, не является жизнеспособным вариантом для баз данных. Поэтому вам нужна модель согласованности, которая приводит к как можно меньшим количеством сюрпризов. – SquareCog

0

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

Хранение связки небольших баз данных, синхронизированное, является довольно сложной задачей для правильной работы. Существует ли какая-либо возможность иметь только одну централизованную базу данных, а также иметь прямое подключение к ней клиентских приложений или (мое предпочтительное решение) писать некоторые веб-службы для обработки доступа/обновления данных, а не иметь кучу клиентских баз данных?

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

17

Это проблема, с довольно установленным сводом исследований (из которых люди, очевидно, не знает) , Я предлагаю не изобретать плохое, дефектное колесо, если это не совсем необходимо (например, такие необычные требования, чтобы разрешить тривиальное решение).

Некоторые ключевые слова: replication, mobile DBMSs, distributed disconnected DBMSs.

Кроме того, эти исследовательские работы актуальны (в качестве примера этой области исследований):

  1. Distributed disconnected databases,

... и так далее.

+0

Большой сбор информации. Спасибо. – jassuncao

+0

Добро пожаловать. – MaD70

3

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

+0

Да. Я уже посмотрел на него и закружил. Выглядит довольно бога. Подходит для использования. – jassuncao

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