Как определять изменившиеся данные в БД
Добавлено: 2020.01.22, 18:35
Привет!
Есть база, там клиенты, договора, платежи, и т.д т.п., нужно собирать инфу и записывать в файл, потом отправлять на сторонний сервер в CSV.
У меня получилось много классов (клиент, платеж, ... ) с ДТО для каждого, каждый наследуется от абстрактного класса в котором подготовка данных к нужным форматам, запись CSV, отправка на сторонний сервер....
В контроллер передается название класса который нужно экспортировать, по названию получаю данные и складываю в массив.
Все запускается через крон.
Задача:
1) При первом запуске тащим все, пишем и отсылаем - тут все ок
2) При последующих запусках нужно выявить изменившиеся данные и отправлять только их и/или добавленные записи (клиент, платеж, ... )
Вопрос: каким лучше способом выявлять изменившиеся данные?
Думаю пока так: в бд сделать табличку:
entity - экспортируемый класc;
entity_id - id записи в основной бд;
hash - собирать md5 из данных (клиент, платеж, ... )
При последующем запуске получать последний entity_id, и запрашивать из бд новые записи.
В нужный момент запрашивать все записи, вычислять hash, в случае его отличия, записывать в файлик ну и....
Вот!
P.S. Бд в которой все лежит MySql, api нет, софт лицензионный, сервак лицензионный требует csv
Есть база, там клиенты, договора, платежи, и т.д т.п., нужно собирать инфу и записывать в файл, потом отправлять на сторонний сервер в CSV.
У меня получилось много классов (клиент, платеж, ... ) с ДТО для каждого, каждый наследуется от абстрактного класса в котором подготовка данных к нужным форматам, запись CSV, отправка на сторонний сервер....
В контроллер передается название класса который нужно экспортировать, по названию получаю данные и складываю в массив.
Все запускается через крон.
Задача:
1) При первом запуске тащим все, пишем и отсылаем - тут все ок
2) При последующих запусках нужно выявить изменившиеся данные и отправлять только их и/или добавленные записи (клиент, платеж, ... )
Вопрос: каким лучше способом выявлять изменившиеся данные?
Думаю пока так: в бд сделать табличку:
entity - экспортируемый класc;
entity_id - id записи в основной бд;
hash - собирать md5 из данных (клиент, платеж, ... )
При последующем запуске получать последний entity_id, и запрашивать из бд новые записи.
В нужный момент запрашивать все записи, вычислять hash, в случае его отличия, записывать в файлик ну и....
Вот!
P.S. Бд в которой все лежит MySql, api нет, софт лицензионный, сервак лицензионный требует csv