2017-06-27 59 views
0

我在stackoverflow閱讀了幾個答案。但還是有問題。 我想寫一些彩票遊戲。數據庫 - MS SQL - 彩票遊戲 -

設計中 - 用戶可以選擇遊戲。並買票。 現在用戶可以購買很多門票。假設用戶可以購買1000-2000張門票。 (50場比賽* 40個ticekts例如) 沒有我想想的情況下,當我有100萬用戶,每一個購買2K票 (我知道這聽起來像是unpossible情況,但希望纔去生產檢查everythink)

1M用戶*每位用戶2K票= 2B票。

現在我有表所示:

Id | UserId | GameId | TicketId | IsActive | TimeInsert 

用戶ID和遊戲ID - 是指數

,今天我就排了每張票。它的意思是在2B的情況下 - 我會有2B行。

在我的設計票中有uniq號 - 用戶可以取消/刪除1個特定票。


問題: 我明白數據庫中的2B行 - 不好。 (非常差))))

問題 - 存儲這種數據的最佳做法是什麼?

我看到它存儲的選項之一 它在BLOB中的商店門票。 例如 50個遊戲* 40個門票===> 50行。並在BLOB商店購買40張門票。

對不起,我的英語語法。

+0

通常,彩票發行固定數量的門票。實際發放的門票需要單獨跟蹤。我知道沒有彩票會每場發行20億張彩票,所以這不是問題。總票數,而不是用戶購買多少張票是重要的因素。同時進行50個不同的遊戲似乎也不太可能。即使*如果*你必須存儲20億行,但是 - 那又如何?我維護一個包含超過60億行的表的數據庫。 –

+0

謝謝。我在C#上編寫代碼。所以最好的方法是編寫SQL查詢(ADO .NET),不使用任何ORM,對吧? –

+0

簡單的解決方案,每行一張票。這是數據庫所建立的目標,並且爲此進行了優化。通過將數據捆綁到blob中,您將使您的生活變得糟糕透頂。試想一下,你將如何從這些數據中選擇。沒有索引會幫助你。如果你真的遇到了困難,那麼SQL Server中仍然存在[分區](https://www.sqlshack.com/database-table-partitioning-sql-server/)。所以我不會爲此擔心。由於文件說行限制是可用的存儲。 –

回答

0

對於這樣一個狹窄的桌子,我會繼續爲每張門票存儲一行。在一張狹窄的桌子裏,2B排並不是那麼糟糕。

+0

謝謝你快速回答。 –