【发布时间】:2015-12-10 11:14:11
【问题描述】:
我有一个 MySQL 表,其中有一个 ID 列。它是一个自增整数,是表的主键。
我需要为表中的每一行维护一个字符串(标签)队列(对于您可以说的每个 ID,因为这是主键)。
例如:- ID = 1 的队列可能是 'hello'、'idontknow'、'bye'
ID = 2 的队列可能是 'idontknow'、'whoareyou'、'bye'
队列的最大长度可以达到 10。
在我的服务器上运行的定期脚本每次都会从队列中删除所有 ID 的成员(字符串)。并将剩余的更新到表中。例如:对于 ID = 1,'hello','idontknow','bye', 'hello' 将被删除,更新后的列值将是 'idontknow','bye'。
所有这一切都在大规模发生。只需单击一下,即可将新成员(字符串)添加到表中所有行的队列中。
管理此问题的最佳方法是什么?我是否应该在我的表中有一个列(队列中的成员的逗号分隔字符串),每次都将一个成员添加到队列(列)中?并在检索时删除成员并更新列中的更新值。
或者我应该在数据库中有单独的表,每个 ID 都有多行。这些行将分别包含队列的成员。在这种情况下,可能会同时发生 10k 次插入。在检索时,可能会同时发生 10k 次删除。
你有什么建议?哪种方式更具可扩展性?
第二种方法的数据库结构:
客户表
身份证、姓名
现在需要为另一个表中的每个客户维护队列。
队列表
ID(此表的主键),CustomerID(来自客户表的外键), String(队列中成员的字符串)
所以我需要通过 CustomerID 从队列表中获取。
【问题讨论】:
标签: php mysql queue scalability