私はいくつかの答えを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英語の文法に申し訳ありません。
通常、宝くじは一定数のチケットを発行します。実際に発行されるチケットは個別に追跡する必要があります。私が知っている宝くじは実際にゲームごとに20億枚のチケットを発行することはないので、それは懸念事項ではありません。ユーザーが購入するチケットの数ではなく、チケットの総数が重要な要素です。 50種類のゲームを同時に進行させることも難しいようです。たとえ* 20億行を格納しなければならない場合でも - 何が?私は、60億以上の行を含むテーブルを持つデータベースを維持しています。 –
ありがとうございます。私はC#でコードを書く。したがって、最善の方法はSQLクエリ(ADO .NET)を作成し、ORMを使用しないことです。 –
簡単な解決策を考えてください。行ごとに1つのチケットです。データベースが構築されており、最適化されています。データをブロブに束ねることで、あなたの人生はひどくなります。そのデータからどのように選択するかを想像してみてください。索引はあなたに役立ちません。そして、あなたが本当に壁に当たったら、SQL Serverにはまだ[パーティショニング](https://www.sqlshack.com/database-table-partitioning-sql-server/)があります。だから私はそれについて心配しないだろう。ドキュメントには、行の制限として利用可能なストレージが記載されています。 –