0

Web サービスへの http 呼び出しを行い、応答をキャプチャして解析するスクリプトがあります。

トランザクションごとに、次のデータをリレーショナル DB に保存したいと考えています。

  1. HTTP リクエスト時間
  2. HTTP リクエスト ヘッダー
  3. HTTP 応答時間
  4. HTTP 応答コード
  5. HTTP 応答ヘッダー
  6. HTTP レスポンスの内容

このスキーマを視覚化するのに苦労しています。私の最初の考えは、2 つのテーブルを作成することでした。

Table 'Transactions': 
1. transaction id (not null, not unique)
2. timestamp (not null)
3. type (response or request) (not null)
3. headers (null)
4. content (null)
5. response code (null)

「トランザクション ID」は、タイムスタンプとヘッダー テキストを組み合わせて得られた、ある種のチェックサムになります。

このトランザクション ID を計算する理由は、2 つのトランザクションを区別できる一意の ID を持つためですが、同時に要求と応答をリンクするために使用されます。

このテーブルは何に使用されますか? スクリプトは 5 分ごとに実行され、これらすべてが DB に記録されます。さらに、実行するたびに、スクリプトは最後にトランザクションが成功した時間をチェックします。また、1 日の終わりに、スクリプトはその日に行われたすべてのトランザクションの概要を生成し、電子メールで送信します。

このデザインをどのように改善できるかについてのアイデアはありますか? このスキーマにどのような正規化および/または最適化手法を適用する必要がありますか? これを 2 つ以上のテーブルに分割する必要がありますか?

4

1 に答える 1

0

これには NoSQL アプローチを使用することにしましたが、うまくいきました。MongDBを使用しました。ドキュメント構造の柔軟性と、固定数の属性を持つ必要がないことは、非常に役立ちました。おそらく問題の最善の解決策ではありませんが、複合インデックスを使用してパフォーマンスを最適化することができました。

于 2014-04-14T19:11:10.367 に答える