2011-08-21 101 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