У меня есть таблица MySQL, в которой есть столбец для ID. Это автоинкрементное целое число и является первичным ключом таблицы.
Мне нужно поддерживать очередь строк (тегов) для каждой строки в моей таблице (для каждого идентификатора, который вы можете сказать, так как это первичный ключ).
Например: — Очередь для ID = 1 может быть «привет», «idontknow», «пока»
Очередь для ID = 2 может быть «idontknow», «whoareyou», «пока»
Максимальная длина очереди может доходить до 10.
Периодический скрипт, выполняющийся на моем сервере, будет каждый раз удалять элемент (строку) из очереди для всех идентификаторов. И обновил бы оставшееся в таблицу. Например: для ID = 1 «hello», «idontknow», «bye», «hello» будут удалены, а обновленное значение столбца будет «idontknow», «bye».
Все это происходит в масштабе. Одним щелчком мыши новый элемент (строка) может быть добавлен в очереди для всех строк в таблице.
Каков наилучший способ справиться с этим? Должен ли я иметь столбец (разделенную запятыми строку членов в очереди) в моей таблице, которая добавляет члена в очередь (столбец) каждый раз? И после извлечения удаляет член и обновляет обновленное значение в столбце.
или я должен иметь отдельную таблицу в БД, которая будет иметь несколько строк для каждого идентификатора. Строки будут содержать членов очереди индивидуально. В этом случае до 10 тыс. Вставок может произойти одновременно. И при извлечении, удаление 10 тыс. Может происходить одновременно.
Что ты предлагаешь? Какой способ более масштабируемый?
Структура БД для второго метода:
Таблица клиентов
ID, Имя
Теперь необходимо вести очередь для каждого клиента в другой таблице.
Таблица очередей
ID (первичный ключ этой таблицы), CustomerID (внешний ключ из таблицы клиентов),
String (строка члена в очереди)
Так что мне нужно будет извлечь из таблицы очередей, по CustomerID.
Вы можете изменить свой стол на это:
id | CusomterID | string
---+------------+----------
1 | 1 | hello
2 | 1 | idontknow
3 | 1 | bye
4 | 2 | something
Тогда вся ваша таблица — это очередь. Это делает чтение следующей работы в очереди действительно простым, и делает обновление очереди действительно простым.
Других решений пока нет …