Комментарии 4
Складываете изменения в Kafka и забираете когда и кому нужно...
в системах с 1 млн товаров и 60 офлайн-магазинами передача данных об остатках в интернет-магазин может занимать более суток
Я не специалист в таких системах, но что это за SQL запросы такие гигантские? Имхо, обновление поля "остаток" 60 миллионов строк должно занимать, ну минут 5... Если конечно не открывать отдельный коннект и транзакцию на каждую цифру.
Пример: бэкофис со своим сервером в офисе, онлайн-магазин в ДЦ. Обновление по API. API дальше может уже складывать себе в Кафку. В таком контексте тут уже не просто SQL запросы.
Еще сталкивался с таким.. даже не знаю как назвать).. в BI систему перезагружали вообще все данные за последние пару дней... А если документ и источнике был изменен более ранним числом, перезагружали данные за весь этот период (по отдельному запросу пользователей, когда данные переставали сходиться).
Имхо, batch insert/update нужно делать подготовленным файлом, например CSV, и делать его load средствами базы. Конечно, в каждом конкретном случае свое решение, но на каждое обновление дергать API - не рационально.
Ну вот складская программа передает остатки на сайт.. тут никуда особо не денешься)
И как раз тут надо передавать данные пакетами, хотя бы раз в минуту (чтобы накопить данные, а не по одной записи через интернет гонять), предложенное решение в статье как раз делается на стороне wms.
А на сайте, уже надо думать как правильно записывать в базу этот пакет (и в Вашем комментарии как раз один из вариантов)... если текущая статья зайдет, попробую один из вариантов быстрой записи пакета расписать в следующей статье.
Для профи что текущая статья, что правильная запись пакетов - это само собой разумеющееся, но ведь полно тех, кто такую задачу решает в первый раз и тут есть вероятность, что такие простые статьи помогут)
Эффективный обмен данными между информационными системами