mihail430899
@mihail430899
Веб-мастер и спортсмен)

Как правильно обновить данные в базе?

Получаю по API с другого ресурса 130 товаров и засовываю их в таблицу в БД. Дальше примерно 1 раз в неделю мне надо делать по новой запрос к API, получать товары и если есть какие-то изменения, то надо и в базе обновить. Вопрос в том как?

Самый простой вариант конечно, это удалить все из таблицы и заполнить ее по новой актуальными данными. Или делать так:
if(кол-во товаров в БД != кол-во полученное от сервера), но это так себе, т.к. к примеру 2 товара может удалиться и 2 добавиться и получается те же 130, но содержимое чуть другое.

Либо еще такой вариант - получить массив данных из БД и сравнить его на эжквивалентность с массивом полученным от API, правда я не знаю есть ли функции, которые это делают (массивы многомерные).
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 2
BojackHorseman
@BojackHorseman
...в творческом отпуске...
insert on duplicate key update

те, которые не обновились или не добавились, - удалять

а вообще, самый правильный способ для обхода лочек - это две таблицы. одна транкейтится, наполняется, другая в этот момент читается. после обновления меняешь таблицу для чтения
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Феншуйно это бы выглядело так:
- временная таблица, куда "всасываются" свежие данные,
- (опционально) некий инструмент визуального контроля корректности данных и сравнения с текущими
- обновление отличающихся (с отметками что именно менять)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы