Эффективная синхронизация складской информации - PullRequest
0 голосов
/ 21 января 2010

Хорошо, давайте посмотрим, сможете ли вы, волшебники, помочь мне с этой проблемой, против которой я бьюсь головой.

Сценарий - довольно стандартная установка с точкой продажи (где я нахожусь) и бэк-офисом, отслеживающим складскую информацию. Проблема в том, что мне нужно синхронизировать базу данных в точке продажи с текущей информацией о запасах из бэк-офиса. Прямо сейчас это делается путем извлечения каталога из бэк-офиса через Интернет. Каталог содержит информацию, такую ​​как доступные в настоящее время единицы, текущая цена и уникальные идентификаторы для каждого типа. В моей базе данных у меня точно такая же информация, и я обновляю ее после загрузки каталога. Мне важно вставлять новые типы единиц по мере их появления, обновлять уже существующие типы информацией о доступности и ценой и, наконец, удалять типы (или помечать их как недоступные), когда они опускаются ниже определенного порога.

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

INSERT INTO store (id, quantity, price)VALUES(x, y, z)
ON DUPLICATE KEY quantity=y, price=z;

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

Есть ли более быстрое решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 21 января 2010
REPLACE INTO store (id, quantity, price) VALUES (x, y, z), (x2,y2,z2);

Я бы также предложил не отправлять их в веб-приложение в виде SQL (ужасная безопасность) и отправлять их большими партиями (по 1000 строк за раз) в каком-то удобном для вас формате. Веб-приложение выполняет все операторы REPLACE и возвращает успех.

0 голосов
/ 21 января 2010

INSERT INTO store (id, quantity, price) VALUES (x, y, z), (x2,y2,z2)

Но я не знаю, как это сочетается с вашим заявлением ON DUPLICATE KEY Вы можете выполнить некоторую логику для разделения данных на группы для обновления и вставки независимо.

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