MySQL - лучший способ синхронизировать базу данных с несколькими клиентами - PullRequest
1 голос
/ 30 июня 2011

Существуют сотни клиентов, которые будут использовать систему Windows, в которой они управляют своей собственной информацией.Эта информация отправляется на сервер для анализа (веб-система).

И клиенты, и сервер будут иметь одинаковую структуру базы данных.Есть некоторые таблицы, которые будут обновляться через Windows-клиенты и другие таблицы через веб-систему.Немногие из таблиц могут быть обновлены в обоих.

Проблема заключается в том, что нам необходимо синхронизировать эти базы данных.Текущий подход заключается в том, чтобы хранить в таблице все операторы «INSERT, UPDATE, DELETE» и один раз в день обновлять клиентов (при открытии) и сервер (при закрытии).

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

Я только что перешел на использование MariaDB и читал об Aria Storage Engine:

Aria может воспроизводить практически все из журнала.(Включая создание / удаление / переименование / усечение таблиц).Поэтому вы делаете резервную копию Aria, просто копируя журнал.

Вопросы:

  • Как вы думаете, возможно лииспользовать Aria Logging для решения моей проблемы (чем это отличается от текущего подхода)?

  • Кто-нибудь имеет опыт работы с подобным случаем (синхронизация с несколькими клиентами)?

  • У меня просто есть опыт работы с MyISAM и InnoDB ... есть ли другой механизм хранения, который мог бы быть лучше для этого случая?

### ОБНОВЛЕНИЕ (2 июля) ###

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

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

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

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