1日に約500.000件のリクエストを処理するAPIサーバーが実行されています。私たちは、これらのすべてのレギュュストをデータベースに保存して、データを分析できるようにしたいと考えています。私たちは、のようなものをログ: 大規模なログテーブルを格納するデータベース
- HTTP応答コード
- (URL) のために頼まれた何APIリソース
- キャッシュレスポンス(ブール)
- +++
これらのログを3か月間保存したい場合は、そのデータベースに約45,000,000レコードが記録されます。レコードが3ヶ月以上経過すると、レコードは削除されます。
これらの4,500万レコードをSQLデータベースに格納することは可能ですが、これらのデータを分析するのは実際には遅いです。先週の同じ日に比較して、特定のユーザーが今日どのくらい多くのリクエストをしたかといったような広範な分析をしたいと思いますか?他の日と比較して今日何パーセントのリクエストが失敗したか?リクエスト数が増減しているかどうかを示すトレンドダイアグラムを参照してください。特定の時間に求められている上位10のリソースを参照してください。あなたはそれを得る - 我々はこのようなすべての種類の分析を行うことができるようにしたい。
これらのログをリアルタイムで(またはほぼリアルタイムで)分析できるようにするためのアドバイスはありますか?これには良いことがある任意のnosqlデータベースですか?アズール?私は紺碧のSQLデータウェアハウスと呼ばれるものがあることがわかります、これに使用することができますか?私はMicrosoft Power Biを見てきましたが、これはおそらくこれらのデータの分析には最適ですが、どこにデータを保存するのですか。
誰かが私のためにいくつかの提案を持っているなら、本当に感謝します。
SQL Serverが遅い45Mレコードを管理していると書いたのはなぜですか?うまく構成されたSQLサーバーの場合、45M行は少量のデータです。 –
これは4500万レコードを処理することができます。私はそれをテストしましたが、すべての種類の集約を行うのは遅いです(ユーザとリソースのグループ化、エラーコードを含む行のカウントは長い時間がかかります)。だから、もし私がそれをチューニングするのに十分な時間を費やすなら、通常のSQLサーバでこれを行うことは可能かもしれないが、私はそれがこの場合正しいツールではないと感じている。 – rgullhaug
45m行のSQL Serverの場合、クエリをサポートするインデックスが必要です(例: (User、resourcerl、error-code)の列に含まれています。 Columnstoreインデックスは最高のパフォーマンスを提供します。また、テーブルの分割などを調べることもできます。オンデート。これにより、ETLの複雑さは増しますが、I/Oを減らすことでクエリの処理速度が向上します。 –