Вот требуемый поток моего PHP-приложения (да, оно расплывчато, но так проще):
- Пользователь отправляет набор, скажем, около 5 объектов по целочисленным идентификаторам. (Это будет больше 15, но для простоты скажем 5).
- Приложение проверяет, была ли эта коллекция отправлена ранее, и сохраняет ее в базе данных MySQL, если не
- Приложение сохраняет эти объекты в базе данных, если они не были сохранены ранее
(Объектов и коллекций много-много, поэтому есть таблица объектов, таблица коллекций и таблица, относящаяся к двум.)
Пара потоков выборки:
- Пользователь отправляет 111, 112, 113, 114
- Этот набор новый! Коллекция сохранена.
- Мы видели объекты 111 и 112, но выбираем и сохраняем данные для 113 и 114, поскольку мы не видели.
- Другой пользователь отправляет 111, 112, 113, 114
- Мы видели эту коллекцию раньше. Не беспокойтесь о сохранении.
- Так как мы видели коллекцию, мы, очевидно, видели объекты. Не беспокойтесь о сохранении.
Шаги 1 и 3 просты. Шаг 2, где я не уверен, как поступить. Кажется излишне тяжелым для базы данных запрашивать отношения для наборов, содержащих эти точные идентификаторы, поэтому я собираюсь опубликовать несколько очевидных решений, таких как простой список идентификаторов и хеширование, но я также хотел бы знать, есть ли еще идеальные решения там.
Спасибо!