2017-06-27 17 views
0

私はいくつかの答えをstackoverflowで読んだ。しかし、まだ質問があります。 私は宝くじゲームのようなものを書いています。データベース - MS SQL - 宝くじゲーム -

デザインで - ユーザーがゲームを選択できます。そしてチケットを買う。 今、ユーザーは多くのチケットを購入できます。ユーザーが1000〜2000のチケットを購入できるとします。 (私はunpossibleケースのようなその音を知っているが、生産に行く前にeverythinkチェックしたい)私は1Mのユーザーを持っているとき(50のゲーム*例えば40 ticekts) いいえ、私はちょうどケースを考えると、それぞれが2Kのチケット を買う

1Mユーザー* 2Kチケットは各ユーザー= 2Bチケットです。

今、私はテーブルを持っているように:

Id | UserId | GameId | TicketId | IsActive | TimeInsert 

ユーザーIDとGameidは - 私は各チケットの行ないインデックス

そして今日です。 2B ticektsの場合のその平均 - 私は2B行を持っています。

私のデザインチケットにはユニーク番号があります。ユーザーは1つのチケットをキャンセル/削除できます。


質問: 私は、データベース内の2B行ことを理解 - よくありません。 (非常に悪い))))

質問 - このようなデータを保存するベストプラクティスは何ですか?

私はそのストアに表示されているオプションの1つ そのストアチケットをBLOBに入れます。 たとえば、 50ゲーム* 40チケット===> 50行。 BLOBには40個のチケットが格納されています。

P.S英語の文法に申し訳ありません。

+0

通常、宝くじは一定数のチケットを発行します。実際に発行されるチケットは個別に追跡する必要があります。私が知っている宝くじは実際にゲームごとに20億枚のチケットを発行することはないので、それは懸念事項ではありません。ユーザーが購入するチケットの数ではなく、チケットの総数が重要な要素です。 50種類のゲームを同時に進行させることも難しいようです。たとえ* 20億行を格納しなければならない場合でも - 何が?私は、60億以上の行を含むテーブルを持つデータベースを維持しています。 –

+0

ありがとうございます。私はC#でコードを書く。したがって、最善の方法はSQLクエリ(ADO .NET)を作成し、ORMを使用しないことです。 –

+0

簡単な解決策を考えてください。行ごとに1つのチケットです。データベースが構築されており、最適化されています。データをブロブに束ねることで、あなたの人生はひどくなります。そのデータからどのように選択するかを想像してみてください。索引はあなたに役立ちません。そして、あなたが本当に壁に当たったら、SQL Serverにはまだ[パーティショニング](https://www.sqlshack.com/database-table-partitioning-sql-server/)があります。だから私はそれについて心配しないだろう。ドキュメントには、行の制限として利用可能なストレージが記載されています。 –

答えて

0

このような狭いテーブルでは、チケットごとに1行ずつ保存します。 2B行は狭いテーブルではそれほど悪くありません。

+0

すぐにお返事ありがとうございます。 –

関連する問題