Журнал транзакций для записей базы данных (пакетные обновления) - PullRequest
1 голос
/ 30 ноября 2011

У меня будет несколько не всегда подключенных клиентов к приложению N-Tier с бэкэндом postgres.

Некоторые из этих клиентов могут на несколько дней отставать от остальных. Это для установки в точках продаж.

У меня мало таблиц, только customers, orders, orders_details, products, inventory и некоторые таблицы настроек.

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

Я подозреваю, что журнал транзакций - лучший способ, но я не знаю, как это сделать.

Я думаю о создании таблицы как на клиенте, так и на сервере с:

OperationType | UserId | TimeStamp | Source | JsonData

Но я точно не знаю, как поступить. Могу ли я посмотреть пример реализации? Мне не нужно тяжелое универсальное решение, такое как Sync Framework . Кроме того, мне нужно получить доступ к серверу через клиенты obj-c, python - сервер .net.

Клиенты должны работать автономно, поэтому я не могу зарезервировать записи.

1 Ответ

0 голосов
/ 23 марта 2013

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

  1. Каждый сервер имеет свои собственные таблицы фидов, в которые он пишет, и запрашивает их вместе с основными таблицами данных в ходе обычных операций.

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

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