私たちは、受け取った請求の時間の経過とともに多数の値フィールドを取得するアドホック分析用のテーブルを設計しています。テーブル構造は基本的に (疑似コード) です。
table_huge (
claim_key int not null,
valuation_date_key int not null,
value_1 some_number_type,
value_2 some_number_type,
[etc...],
constraint pk_huge primary key (claim_key, valuation_date_key)
);
すべての値フィールドはすべて数値です。要件は次のとおりです。 テーブルには、最近 12 年以上 (できればそれ以上) の受理されたクレームが含まれている必要があります。各請求には、請求の開始から現在の日付までの各月末の評価日が含まれます。典型的な請求開始件数は、年間 50,000 ~ 100,000 件です。
これらすべてを合計すると、行数が 1 億程度のテーブルが予測されますが、ビジネスのニーズによっては、何年にもわたって 5 億にも達する可能性があります。テーブルは毎月再構築されます。消費者は選択するだけです。毎月の更新を除いて、更新、挿入、または削除は行われません。
私はこれをビジネス (消費者) 側から考えていますが、このテーブルの分析値を維持しながら IT コストを軽減することに関心があります。テーブルからの迅速なリターンについて圧倒的に心配しているわけではありませんが、テーブルに数十のクエリを投げて、1 日か 3 日ですべての結果を取得する必要がある場合があります。
議論のために、テクノロジ スタックが最新のハードウェアの 80 パーセンタイルにあると仮定しましょう。
私が持っている質問は次のとおりです。
- 大量のテーブルに対するクエリの頻度が低いことを考えると、インデックスの費用対効果が過剰になるポイントはありますか?
- SO コミュニティは 1 億行以上のテーブルの経験があり、管理方法に関するヒントを提供できますか?
- データベース テクノロジの問題は IT に任せて解決するべきか、それともビジネス要件を抑えることを真剣に検討すべきか (そしてその理由は?)
これらはややソフトな質問であることは承知しており、構築する前にテストできる提案ではないことを読者が理解してくれることを願っています。
説明が必要な場合はお知らせください。読んでくれてありがとう!