Здравствуйте, с недавнего времени знакомлюсь с С# и MySQL и столкнулся с задачей, которая как-то не освещается в интернетах, либо я подослеп и виноват. Но понять не могу.
Используется: VS 2015, Windows Forms + MySql.Data.MySqlClient
Задача: приложение-клиент отслеживает изменения таблице БД на сервере, и если произошли изменения (напр., добавлена запись), то происходит последовательность действий (напр., просто получение и вывод, ну в этом нет проблемы). Как при работе с MySQL базой реализуется такое отслеживание? К примеру, пока копал, нашел SqlDependency, через который подобное реализуется для MSSQL.
Первое, что приходит на ум - это самому описать поведение, чтобы клиент по таймеру бомбил БД запросом, допустим, предоставления последней записи и сравнивал со своей последней полученной записью (или сравнить TIMESTAMP или id и т.д.). Если идентичны - изменений не было, если отличаются - то загружаем. Но это не выглядит рационально. Это выглядит брутально).
Сейчас читаю про NET Connector на dev.mysql.com, но не могу подобного явно найти. Объясните, пожалуйста, есть ли какое-то стандартное решение?
Есть такой вариант:
1) Добавляем триггеры к таблицы, которые при INSERT, UPDATE, DELETE логируют изменения в отдельную таблицу.
CREATE TRIGGER articles_log_update AFTER update ON articles
FOR EACH ROW BEGIN
INSERT articles_logs (action, row_id, `date`) VALUES ("update", new.id, NOW());
END
CREATE TRIGGER articles_log_insert AFTER insert ON articles
FOR EACH ROW BEGIN
INSERT articles_logs (action, row_id, `date`) VALUES ("insert", new.id, NOW());
END
CREATE TRIGGER articles_log_delete AFTER delete ON articles
FOR EACH ROW BEGIN
INSERT articles_logs (action, row_id, `date`) VALUES ("delete", old.id, NOW());
END
2) Ставим задачу по крону, чтобы она запускалась каждый час (или день, неделю), дабы проверять таблицу логов и делать необходимые действия.
Однако сразу хочу сказать, что если это ваша база данных и вы ее проектируете, то не должны допускать, чтобы таблица в БД было связующим звеном между частям приложения. Взаимодействие между внутренними и внешними сервисами должно быть реализованно в рамках апишек и контрактов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть проэкт, понадобилось добавить в него таблицуВсё бы хорошо, только таблица не появляется в базе после того как делаю drop database, ну и понятно...
С С# я знаком относительно недавно, всегда занимался веб-программированием
Есть текстовые файлы с PCL разметкой, их необходимо перекодировать в PDFЕдинственная некоммерческая программа которую я нашел - ghostpcl, при...
Пытаюсь получить текущего работающего пользователя, через WMIНо происходит не понятная мне ошибка