アプリケーションからのログ エントリを格納するデータベース内のテーブルを設計しています。このデザインについていつも以上に考えさせられることがいくつかあります。
- ただし、これらのログ エントリは実行時にシステムが決定を下すために使用されるため、比較的高速にアクセスできる必要があります。
- 彼らはまた、彼らの数が多くなるという問題を抱えています(私の見積もりでは、毎月1250万人が追加されています).
- 決定処理には、せいぜい過去 30 日から 45 日以上は必要ありません。
- サポートと法的な問題のために、それらすべてを 45 日よりずっと長く、おそらく少なくとも 2 年間保持する必要があります。
- テーブルの設計は非常に単純で、すべて単純な型 (blob などはありません) であり、可能な場合はデータベース エンジンを使用して既定のデータ (多くても 1 つの外部キー) を配置します。
- 違いがある場合、データベースは Microsoft SQL Server 2005 になります。
私が考えていたのは、それらをライブテーブル/データベースに書き込んでから、ETLソリューションを使用して「古い」エントリをアーカイブテーブル/データベースに移動することです。これは大きく、低速のハードウェア上にあります。
私の質問は、これが可能な限りうまく機能することを確認するためのデータベース/テーブルの設計に関するヒント、トリック、または提案を知っていますか? また、それが悪いアイデアだと思う場合は、私に知らせてください。より良いアイデアは何であると思いますか。