假设有一个拥有100,000个用户的网站,每个用户最多有1000个唯一的字符串,因此总共最多有100,000,000个字符串。如果有一个表,每个字符串都是一个记录,以及它的所有者id,那会不会更好。因此最终得到一个包含100,000,000条记录和2个字段(文本和用户id)的表。
或者有100,000个表,每个用户一个表,表的名称是用户的id。然后每个表中有1000条记录,只有一个字段(文本)。
或者不是将字符串存储在数据库中(有关于SMS消息长度的字符限制),而只是存储到文本文件的链接,其中目录中有100,000,000个文本文件,并且每个文件都有唯一的名称(随机数字和/或字母),并包含其中一个字符串?(或者每个用户都有一个目录,然后他们的字符串就在该目录中?)
目录和数据库哪个选项是最有效的,那么它们中的哪个子选项是最有效的?
(对于我来说,这个问题显然是理论上的,但是像twitter这样的网站是做什么的呢?)
(效率指的是使用最少的资源和时间)
发布于 2010-07-07 02:40:15
或有100,000个表
看在$DEITY的份上,不行!这将导致可怕的代码-这不是数据库设计的目的。
您应该有一个包含100,000,000条记录的表。数据库服务器是为处理大型表而构建的,如果需要,您可以使用索引和分区等来提高性能。
发布于 2010-07-07 02:39:48
选项#1
存储一个包含用户id和文本的表将会更容易。为每个用户创建一个表并不会更有效率。
尽管在实践中,你可能想要一个Mongo分片集群,而不是一个单独运行MySQL的服务器。
发布于 2010-07-07 02:40:10
您应该有一个表,其中包含USER_ID上的索引。
为了提高速度,您可以对表进行分区、复制,使用缓存、云、分片……
https://stackoverflow.com/questions/3189156
复制相似问题