16

フォローするのに適したデータベースは何ですか? 非リレーショナルNoSQLシステムに関するあなたの経験に特に興味があります。この種の使用に適しているか、どのシステムを使用して推奨するか、または通常のリレーショナル データベース (DB2) を使用する必要がありますか?

監査証跡/ログ タイプの情報を多数のソースから中央サーバーに収集して、レポートを効率的に生成し、システムで何が起こっているかを調べる必要があります。

通常、監査/ロギング イベントは常にいくつかの必須フィールドで構成されます。

  • グローバルに一意の ID (このイベントを生成したプログラムによって何らかの方法で生成されたもの)
  • タイムスタンプ
  • イベントの種類 (つまり、ユーザーがログインした、エラーが発生したなど)
  • ソースに関する情報 (server1、server2)

さらに、イベントには 0 ~ N のキーと値のペアが含まれる場合があり、値は最大で数キロバイトのテキストになる可能性があります。

  • Linuxサーバーで実行する必要があります
  • 大量のデータ(たとえば100GB)で動作するはずです
  • ある種の効率的な全文検索をサポートする必要があります
  • 同時読み取りと書き込みを許可する必要があります
  • 新しいイベント タイプを追加したり、キーと値のペアを新しいイベントに追加/削除したりできる柔軟性が必要です。柔軟 = データベース スキーマを変更する必要はありません。イベントを生成するアプリケーションは、必要に応じて新しいイベント タイプ/新しいフィールドを追加するだけです。
  • データベースに対してクエリを実行すると効率的です。何が起こったのかを報告し、調査するため。例えば:
    • ある期間に発生した type=X のイベ​​ントの数。
    • フィールド A の値が Y であるすべてのイベントを取得します。
    • タイプ X でフィールド A の値が 1 でフィールド B が 2 ではなく、イベントが過去 24 時間に発生したすべてのイベントを取得する
4

3 に答える 3

4

私が見た中で成功したのは、MongoDBCassandraの 2 つです。

于 2010-05-05T15:08:19.147 に答える
2

Redisを使用して、mflow.com にあるすべてのアプリ サーバーのすべての集中ログを作成しました。これは非常に高速で、これらのベンチマークに基づくと、1 秒あたり約 110000 SET、約 81000 GET を実行します。頻繁に使用されない値をディスクにスワップ アウトする VM 実装 (データセットが使用可能なメモリを超えている場合) があります。

これは、文字列、リスト、セット、ソート済みセット、およびハッシュをネイティブにサポートするバイナリセーフ データを格納できる、高度なデータ構造サーバーです。メーリング リストでの議論によると、多くの人が分析を保存するために頻繁に使用しています。

于 2010-09-11T16:06:20.837 に答える
2

通常のリレーショナル データベース (DB2) を使用する必要がありますか?

はい、そうすべきです!何かを保存してスキャンしたいだけなら、ファイルに書き込むこともできます。非常に高速で、オーバーヘッドはありません。しかし、時間経過 (過去 24 時間、または時間 t と t+1 の間) のデータを要約したい分、データをテキスト行以外の何かとして気にするようになると、適切な RDBMS があなたの味方になることは間違いありません。

于 2010-09-18T21:11:41.613 に答える