2011-08-21 106 views
0

我需要1用户可以成为其他用户的朋友。 所以我认为,我可以使用2台:SQL Server:朋友类“脸谱”

  • UserId, Name, Date, Etc.
  • FriendsUserId, Friend_UserId

这些表,我可以匹配1个用户的其他好友用户。 问题是,对于1000个用户,有1000 * 1000 = 1.000000或行。

我不知道SQL Server中可以存储多少行,但是我的问题是 对于1百万用户发生了什么? SQL Server进入崩溃?

任何人都可以分享Friends-Class的经验(在OOP概念中,我记得这是名字)!

+0

SQL Server可以肯定** **处理多万行 - 而不是在所有问题。 ..... –

+2

您的设计是好的。一百万行对于SQL Server没有任何意义。 –

回答

0

良好的SQL服务器背后的众多原因之一是专门持有和查询许多行。没有任何问题(除了可能的物理服务器资源,例如硬盘空间),这将阻止表中的1,000,000行。

1

在你的例子中1000 * 1000意味着每个用户都是每个人的朋友。为什么要存储协会?

这是真的吗?或者你只是在测试理论极限?

你打算存储每个关联的两个副本吗?说用户1和用户2是朋友。你是否要有一张具有这两行的表格:

UserId, Friend_UserId 
1   2 
2   1 

这会使所需数据量增加一倍。你应该规定两个ID中的较低者总是在一列中。

当然,请确保您索引两列。

+0

只是一个例子。这个概念是,如果它有权使用一个标签来映射这两个ID ... – Dada

0

但我的问题是100万用户发生了什么? SQL Server进入崩溃?

是的,如果你在你的手机上运行它。

在appareriate hardare nad上运行它,它可以轻松处理表中数以百亿计的数十亿行。数据仓库项目一直都在这样做。

+0

我认为一个真正的案例是10万用户,所以大约有10亿。我将查询映像为“获取用户1的朋友”。我需要什么硬件? – Dada

+0

对于10b行,您需要开始考虑索引,以及如何设计围绕索引的查询。你现在使用什么样的硬件?记住,SQL性能不仅仅是一个表可以存储多少行,它还关乎你运行什么类型的查询以及这些查询运行的频率。我建议你阅读一本关于SQL服务器的书籍,让你对此有更多的了解。 – deutschZuid

+0

是的。显然,你应该拥有好的硬件 - 但是现在这样很便宜。 SuperMicro可容纳4个RU电脑,可容纳72张碟片......而IO +则需要大量内存;) – TomTom

1

您可以存储1000个用户和朋友的服务器上,你可以储存10000个用户和朋友的服务器上,你也许可以1M用户和朋友们存储在服务器上,但可以肯定,你将不能够存储100M用户和朋友,并且对写入/读取数据库的响应有适当的延迟。使用社交网络级应用程序,根本没有可以处理成功应用程序的单一框。这就是为什么游戏的名称是向外扩展和分片的原因。您可以选择和get real并且现在忽略该问题。或者您可以选择design a for it。另请参阅Sharding With SQL Azure,值得一读other alternatives