我有一个MySQL表,其中有一列ID。它是一个自动增量的整数,是表的主键。
我需要为表格中的每一行维护一个字符串(标记)队列(对于你可以说的每个ID,因为这是主键)。
例如: - ID = 1的队列可能是'你好' idontknow'再见'
ID = 2的队列可能是' idontknow',' whoareyou',' bye'
队列的最大长度可以达到10。
在我的服务器上运行的定期脚本每次都会从队列中删除所有ID的成员(字符串)。并将剩余的更新到表中。例如:对于ID = 1,' hello',' idontknow',' bye',' hello'将被删除,更新后的列值将被“忘记”,“再见”。
所有这一切都在大规模发生。只需单击一下,就可以将新成员(字符串)添加到表中所有行的队列中。
管理此问题的最佳方法是什么?我的表中是否有一个列(队列中以逗号分隔的成员字符串),每次都会向队列(列)添加一个成员?在检索时,删除成员并更新列中的更新值。
或者我应该在DB中有单独的表,每个ID都有多行。行将单独包含队列成员。在这种情况下,10k插入可能同时发生。在检索时,10k删除可能同时发生。
你有什么建议?哪种方式更具可扩展性?
第二种方法的数据库结构:
客户表
ID,姓名
现在需要为另一个表中的每个客户维护队列。
队列表
ID(此表的主键),CustomerID(来自客户表的外键), String(队列中成员的字符串)
所以我需要通过CustomerID从队列表中获取。
答案 0 :(得分:1)
您可以将表格更改为:
id | CusomterID | string
---+------------+----------
1 | 1 | hello
2 | 1 | idontknow
3 | 1 | bye
4 | 2 | something
然后你的整个表就是队列。它使得读取队列中的下一个作业变得非常简单,并且它使得更新队列变得非常简单。