ファイルまたはデータベーステーブルにログを記録しますか?


12

ユーザー、ユーザーアカウント、ユーザーライセンス、ライセンス価格、請求書など、さまざまなデータにMS SQLを使用するWebアプリケーションを開発しています。

ユーザーのシステムのリアルタイム使用状況をログに記録し、毎月の請求に使用する必要があります。たとえば、ユーザーが特定のページ/ URLを取得するたびにログを記録し、取得したページ数に基づいて月末にユーザーに請求します。

  • これらのログイベントをMS SQLデータベースのテーブルに書き込む必要がありますか?

  • これらのログイベントをSQL以外の追加専用ログファイルに書き込む必要がありますか?

  • これらのログイベントをユーザーごとに異なるログファイルに書き込む必要がありますか?

これは特に大規模なWebサイトではありません。たとえば、最大10,000ユーザーが1日あたり平均5つのログ記録可能なイベントを行う=> 50,000イベント/日= 30イベント/分= 18,000,000イベント/年。

どちらかのオプションが実行可能と思われ、明確な利点があるかどうかわからないので、私は尋ねています。

請求可能なイベントに関連付けられたデータは単純です。たとえば、次のとおりです。

  • ユーザーID(SQLのユーザーテーブルとの外部キー関係)
  • 日時
  • 請求可能なページのURL

この質問に対する私自身の答えは次のとおりです。

  • データベーステーブルにログを書き込むことの利点:

    • 関係の整合性:たとえば、ログに記録されたイベントは有効なユーザーIDに関連付けられます(ユーザーIDをテーブル間の外部キーとして定義することにより)
    • 課金のために読みやすい:例えばSELECT COUNT GROUP BY、ユーザーごとのログイベントの数のカウントを取得する
  • ログファイルへの書き込みのいくつかの利点:

    • より簡単なパフォーマンス:SQLはあまり頻繁に使用されません。たとえば、ユーザーのログインイベントにのみ使用され、ほとんどが読み取りにのみ使用されます
    • 管理の簡素化:データベースから削除/アーカイブする代わりに古いログファイルを移動することにより、年末などに古いデータを簡単にアーカイブできます

答えが間違っている場合はお知らせください。または何かの重要性を誇張します。またはいくつかの重要な考慮事項を忘れています。

そして/またはそれが私の答えと異なる場合、あなたの答えが何であるかを教えてください。


3
一般的なログ情報からビジネス上の意思決定に使用される情報を分離する必要があります。後でアプリケーションで使用されるものはすべてデータベースに保存し、その他のものはログファイルに保存します。
トム14

1
log4netのようなよく知られているパッケージを使用している場合-独自のロールを作成するのではなく、おそらく良いアイデアです-どちらかを行うには、構成を反転するだけの問題である必要があります。@tom-分離は便利ですが、なぜライブデータ用とログのアーカイブ用などの2つのデータベースを単純に持たないのですか?
ジュリアヘイワード14

2
OPは、毎月の請求書だと言っているので、請求ロジックをdbに適用することはフラットファイルよりもはるかに簡単だと思っていたでしょうか?
ジュリアヘイワード14

1
「データベース」を意味するときに「SQL」という用語を使用しました。いくつか修正を加えました。SQLは、データベースの読み取りと書き込みに使用する言語です。MS SQL ServerはRDBMSの名前です。「SQL」だけでは「MS SQL Serverデータベース」を意味しません。
Tulainsコルドバ

1
@gnat私はこれが重複しているとは思いません:もう1つはエラーのログに関するものでしたが、これは請求の使用状況のログに関するものです(この場合、承認され承認された回答はRDBMSを使用することでした)。
ChrisW

回答:


13

この情報を請求目的で使用しているので、簡単にクエリ、集計、レポート、および他のデータと結合できるデータベースでこの情報が必要ない理由はわかりません。

また、ログ情報を含む単一のデータベーステーブルを管理する方が、個別のログファイルを大量に管理するよりもはるかに簡単だと思います。サーバーの負荷についての懸念も同じです。フラットファイルにデータを保持することに頼るよりもはるかに優れた対処方法があります。

ところで、3番目のオプションは両方を行うことです。ほとんどのニーズにはデータベースを使用しますが、監査目的のログファイルが必要です。


3
データベースを使用するもう1つのボーナスは、特定のロギングにトリガーを利用することです。追加のコードは必要ありません。データは、ログメッセージX.インサート表Aに挿入入った場合
グレッグBURGHARDT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.