私が作成しなければならない Web アプリケーション (以下に概説) に適したデータベースとレイアウトを選択するための助けが得られることを願っています。任意の方法で照会されます。
Web アプリでは、基本的に、レコードを構成する条件の任意の組み合わせを使用して多数のレコードのクエリを実行できます。日付は唯一の必須項目です。レコードは 8 つの項目 (以下) だけで構成されますが、1 日に約 300 万の新しいレコードが作成され、重複するレコードはほとんどありません。当日のデータはリアルタイムで常にデータベースに挿入されます。
最大の関心は、過去 6 か月から 1 年分のデータにあることはわかっていますが、残りは同じタイプのクエリで利用できる必要があります。
どのデータベースがこれに最も適しているか、またどのように構造化するかはわかりません。データベースは、かなり強力なサーバー上にあります。私は基本的に、優れたデータベース設計から始めて、クエリがどのように実行されるかを確認したいと考えています。次に、最適化を行うか、より強力なハードウェアを投入するかを判断できます。基本データベースの設計をやり直す必要はありません。時間があるが$$$ではない多くの最適化を行っている場合、最初は問題ありません。
オラクルなどではなく、オープンソースを使用する必要があります。現在、私はpostgresに傾いています。
レコードは次のもので構成されます。
1 日付
2 符号なし整数
3 符号なし整数
4 符号なし整数
5 符号なし整数
6 符号なし整数
7 テキスト 16 文字
8 テキスト 255 文字
年次スキーマ、月次テーブルを作成し、日付のレコード テーブルにインデックスを作成する予定です。
使用パターンを分析して最も人気のあるクエリが何であるかを確認した後、おそらくもう 1 つまたは 2 つのインデックスを追加できるでしょう。人気のあるクエリをキャッシュする限り、アプリサイトで多くのトリックを実行できますが、実際にはデータベース側で支援が必要です。フィールド 8 には重複する値がいくつかあるため、その列を結合するルックアップ テーブルの ID にする予定です。それを超えて、残りのフィールドはすべて1つの月次テーブルになると思います...
私はそれを毎週のテーブルに分割し、クエリにビューを使用することもできるので、アプリは複雑なクエリを組み立てようとすることに対処する必要がありません....
とにかく、フィードバックや支援に感謝します!