SQL Server:朋友类“脸谱”
我需要1用户可以成为其他用户的朋友。 所以我认为,我可以使用2台:SQL Server:朋友类“脸谱”
- 表
User
(Id, Name, Date, Etc.
) - 表
Friends
(UserId, Friend_UserId
)
这些表,我可以匹配1个用户的其他好友用户。 问题是,对于1000个用户,有1000 * 1000 = 1.000000或行。
我不知道SQL Server中可以存储多少行,但是我的问题是 对于1百万用户发生了什么? SQL Server进入崩溃?
任何人都可以分享Friends-Class的经验(在OOP概念中,我记得这是名字)!
良好的SQL服务器背后的众多原因之一是专门持有和查询许多行。没有任何问题(除了可能的物理服务器资源,例如硬盘空间),这将阻止表中的1,000,000行。
在你的例子中1000 * 1000意味着每个用户都是每个人的朋友。为什么要存储协会?
这是真的吗?或者你只是在测试理论极限?
你打算存储每个关联的两个副本吗?说用户1和用户2是朋友。你是否要有一张具有这两行的表格:
UserId, Friend_UserId
1 2
2 1
这会使所需数据量增加一倍。你应该规定两个ID中的较低者总是在一列中。
当然,请确保您索引两列。
只是一个例子。这个概念是,如果它有权使用一个标签来映射这两个ID ... – Dada
但我的问题是100万用户发生了什么? SQL Server进入崩溃?
是的,如果你在你的手机上运行它。
在appareriate hardare nad上运行它,它可以轻松处理表中数以百亿计的数十亿行。数据仓库项目一直都在这样做。
我认为一个真正的案例是10万用户,所以大约有10亿。我将查询映像为“获取用户1的朋友”。我需要什么硬件? – Dada
对于10b行,您需要开始考虑索引,以及如何设计围绕索引的查询。你现在使用什么样的硬件?记住,SQL性能不仅仅是一个表可以存储多少行,它还关乎你运行什么类型的查询以及这些查询运行的频率。我建议你阅读一本关于SQL服务器的书籍,让你对此有更多的了解。 – deutschZuid
是的。显然,你应该拥有好的硬件 - 但是现在这样很便宜。 SuperMicro可容纳4个RU电脑,可容纳72张碟片......而IO +则需要大量内存;) – TomTom
您可以存储1000个用户和朋友的服务器上,你可以储存10000个用户和朋友的服务器上,你也许可以1M用户和朋友们存储在服务器上,但可以肯定,你将不能够存储100M用户和朋友,并且对写入/读取数据库的响应有适当的延迟。使用社交网络级应用程序,根本没有可以处理成功应用程序的单一框。这就是为什么游戏的名称是向外扩展和分片的原因。您可以选择和get real并且现在忽略该问题。或者您可以选择design a for it。另请参阅Sharding With SQL Azure,值得一读other alternatives。
SQL Server可以肯定** **处理多万行 - 而不是在所有问题。 ..... –
您的设计是好的。一百万行对于SQL Server没有任何意义。 –