Стратегия базы данных для синхронизации на основе изменений - PullRequest
2 голосов
/ 08 декабря 2010

У меня есть бэкэнд Spring + Hibernate + MySQL, который выставляет мою модель (8 различных объектов) клиенту для настольного компьютера. Чтобы сохранить синхронизацию, я хочу, чтобы клиент регулярно запрашивал у сервера последние изменения. Процесс может быть следующим:

  • Точка A: клиент подключается к в первый раз и получает все модель с сервера.
  • Точка B: клиент запрашивает сервер за все изменения, начиная с пункта А.
  • Точка C: клиент запрашивает сервер за все изменения, начиная с пункта B.

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

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

Кто-нибудь знает хорошую стратегию для моей цели? Сначала я хотел сохранить контроль над синхронизацией и избегать использования «автоматических» инструментов синхронизации.

Большое спасибо

1 Ответ

1 голос
/ 08 декабря 2010

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

Очистка очереди может вызвать проблемы, если у вас несколько клиентов .... возможно, придется подумать о дизайне, чтобы справиться с этим случаем.

Есть несколько дизайнов, с которыми вы можете пойти, все с компромиссами. Ранее я использовал дизайн очереди, но он копировал данные только в одно место назначения, а не в несколько.

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