mysql — анализ больших данных и их актуализация

Я использую PHP для решения этой задачи. Но дело не в этом.

Каждое утро я получаю четыре файла, каждый из которых содержит около 6000-8000 записей, имеющих следующую форму:

  • Наименование товара
  • пакет
  • Режиссер
  • Цена с налогом
  • Годен до
  • Остальное
  • Серии

Разбирая эти записи, я получаю таблицу продуктов. Позже клиенты делают заказы, поэтому мне нужно сохранить идентификатор товара в таблице заказов. (клиенты хотели бы видеть историю покупок)

Все хорошо. Возникающая проблема заключается в том, что в один прекрасный день любой из поставщиков может отправить совершенно другой прайс-лист. То есть некоторые продукты будут удалены, а другие будут добавлены. Поэтому было бы совершенно неправильно полагаться на заказ в прайс-листе.

Я пришел к тому, что разбираю каталог вслепую, добавляя все элементы один раз. Каждый раз, когда я получаю каталог, мне нужно добавлять только новые элементы и удалять старый из БД. (хотя на самом деле не удаляется, а просто помечается как удаленный, чтобы новые покупки были невозможны)

Чтобы решить, является ли товар новым или нет, я извлеку запись по записи из файла Excel и проверим поля «Название продукта», «пакет», «производитель», «серия» в сочетании с таблицей с продуктами.

Если такой элемент не найден, я предполагаю, что это новый элемент, и добавлю его в БД.

Что делать с удаленными элементами? Я не предупрежден об их удалении. Поэтому я не могу узнать, какие элементы отсутствуют в новом файле Excel. Решение состоит в том, чтобы сканировать БД по элементам и видеть, присутствуют ли все элементы в БД в файле Excel. Если какой-то элемент отсутствует, я отмечу его как удаленный.

После того, как удаленные предметы могут быть возвращены для продажи. Поэтому мне нужно будет выбрать все удаленные элементы и проверить по одному на файл Excel. Если элемент появляется в файле Excel — я добавляю его обратно.

Стоит отметить, что некоторые поставщики на данный момент предоставляют свои каталоги в виде файлов Excel, а другие — в виде файлов DBF. Кто знает, какие форматы появятся в будущем. Также должно увеличиться количество поставщиков (в следующем месяце в игру вступят еще 2).

Мой вопрос. Есть ли лучший способ сделать это более эффективным? Я боюсь, что мой метод слишком прост.

Имея 8000 записей и выполнив 3 проверки, я получу O ^ 2 сложности для каждого прайс-листа, делая полный поиск через MySQL Db. Возможно, он будет работать для 8000 записей, но я уверен, что он потерпит неудачу, когда однажды я получу прайс-лист с, скажем, 10 ^ 5 записями.

Есть ли лучший способ организовать это?

Благодарю.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …