为数据库中的每个 ID 维护一个字符串队列

Maintain a Queue of Strings for each ID in Database

我有一个 MySQL table,其中有一个 ID 列。它是一个自动递增的整数,是 table.

的主键

我需要为我的 table 中的每一行维护一个字符串(标签)队列(对于您可以说的每个 ID,因为这是主键)。

例如:- ID = 1 的队列可以是 'hello'、'idontknow'、'bye'

ID = 2 的队列可以是 'idontknow'、'whoareyou'、'bye'

队列的最大长度可以达到 10。

我服务器上的周期性脚本运行 每次都会从队列中删除一个成员(字符串),用于所有 ID。并将剩余的更新为table。例如:对于 ID = 1,'hello'、'idontknow'、'bye'、'hello' 将被删除,更新后的列值为 'idontknow'、'bye'.

所有这一切都在大规模发生。单击一下,可以将新成员(字符串)添加到 table.

中所有行的队列中

管理此问题的最佳方法是什么?我是否应该在我的 table 中有一列(队列中以逗号分隔的成员字符串),每次都向队列(列)添加一个成员?并在检索时删除成员并更新列中的更新值。

或者我应该在数据库中有单独的 table,每个 ID 会有多行。这些行将单独包含队列的成员。在这种情况下,可能会同时发生 10k 次插入。在检索时,可能会同时发生 10k 次删除。

你有什么建议?哪种方式更具可扩展性?

第二种方法的数据库结构:

客户Table

身份证、姓名

现在需要为另一个 table 中的每个客户维护队列。

队列Table

ID(这个table的主键), CustomerID(来自Customer Table的外键), String(队列中成员的字符串)

因此我需要通过 CustomerID 从队列 table 中获取数据。

您可以将 table 更改为:

id | CusomterID | string
---+------------+----------
 1 |          1 | hello
 2 |          1 | idontknow
 3 |          1 | bye
 4 |          2 | something

那么你的整个table就是队列。它使读取队列中的下一个作业变得非常简单,并且使更新队列变得非常简单。