4

2 億 5000 万の Web サイト URL を含むファイルがあり、それぞれに IP アドレス、ページ タイトル、国名、サーバー バナー (「Apache」など)、応答時間 (ミリ秒単位)、画像数などがあります。現時点では、これらのレコードは 25 GB のフラット ファイルにあります。

このファイルから次のようなさまざまな統計を生成することに興味があります。

  • 国ごとに表される IP アドレスの数
  • 国ごとの平均応答時間
  • 画像数 v 応答時間

などなど

私の質問は、このタイプと規模の処理をどのように達成するか、またどのプラットフォームとツールを (合理的な時間内に) 使用するかということです。

Windows 上の MS SQL から Solaris 上の Ruby まで、すべての提案を受け入れます :-) DRY のボーナス ポイント (同じことを繰り返さないでください)。必要。

何が機能し、何を避けるべきかについてのコメントは大歓迎です。

4

10 に答える 10

7

ステップ1:大量のデータを処理できるDBMSにデータを取得します。適切に索引付けします。

ステップ2:SQLクエリを使用して、対象の値を判別します。

回答したい個別の質問ごとに、新しいクエリを作成する必要があります。しかし、それは避けられないと思います。これにより、残りの作業を複製する手間が省けます。

編集:

おそらく単一のテーブルに単純なアップロードを行うことができますが、単一のテーブルにデータをロードした後にデータを正規化すると、クエリのパフォーマンスが向上する可能性があることに注意してください。これは完全に些細なことではありませんが、データの量を減らす可能性があります。データを正規化するための適切なプロシージャ(おそらくストアドプロシージャではない)があることを確認すると役立ちます。

于 2008-10-20T17:33:28.477 に答える
4

データを SQL Server (またはその他の主流のデータベース) データベースのテーブルにロードし、クエリを記述して必要な統計を生成します。データベース自体と、データと対話するために使用される UI (SQL Server 用の SQL Server Management Studio、Oracle 用の TOAD または SqlDeveloper など) 以外のツールは必要ありません。

于 2008-10-20T17:28:20.313 に答える
3

Windows を使用している場合は、Log Parserを参照してください。スタンドアロンのダウンロードとして入手でき、 IIS リソース キットの一部としても含まれています。

Log Parser は、ログを読み取り、データベースにアップロードできます。


データベースに関する考慮事項:

データベース サーバーには、高速なもの (Microsoft SQL Server、IBM の DB2、PostgreSQL、または Oracle) が必要です。mySQL も役立つかもしれませんが、大規模なデータベースを使用した経験はありません。

余裕のあるすべてのメモリが必要になります。データベースを定期的に使用する場合は、少なくとも 4 GB だと思います。より少ない量で実行できますが、パフォーマンスに大きな違いがあることに気付くでしょう.

また、余裕がある場合はマルチコア/マルチ CPU サーバーを選択し、このデータベースを定期的に使用する場合も同様です。

もう 1 つの推奨事項は、実行するクエリの王様を分析し、それに応じてインデックスを計画することです。注意: インデックスを作成するたびに、追加のストレージ領域が必要になります。

もちろん、大量のデータをロードする前に、インデックス作成をオフにするか、インデックスを破棄してください。これにより、ロードが大幅に高速化されます。データ ロード操作の後で、インデックスを再作成するか、インデックスを再作成します。

ここで、このデータベースが進行中の操作である場合 (つまり、何かを調査/分析して破棄するだけではない場合)、カタログおよび詳細テーブルを使用してデータベース スキーマを設計することができます。これはデータベースの正規化と呼ばれ、必要な正規化の正確な量は使用パターン (データ ロード操作とクエリ操作) によって異なります。このデータベースが継続的に使用され、パフォーマンス要件がある場合は、経験豊富な DBA が必要です。


PS

ここに明らかなことを含めるリスクを冒しますが...

Log Analyzerに興味があるかもしれません。これらは、Web サーバーのログ ファイルから統計情報を生成するコンピューター プログラムです (ftp、sftp、およびメール サーバーのログ ファイルも分析できるものもあります)。

Web ログ アナライザーは、統計を含むレポートを生成します。通常、レポートは HTML ファイルとして生成され、グラフィックが含まれます。深度分析とオプションにはかなりの種類があります。非常にカスタマイズ可能なものもあれば、そうでないものもあります。商用製品とオープン ソースの両方が見つかります。

管理するデータの量については、各候補製品を再確認し、処理速度と処理能力を詳しく調べてください。

于 2008-10-20T17:56:09.290 に答える
1

データをインポートするときに覚えておくべきことの1つは、実行したい種類のクエリを実行できるようにするインデックスを作成することです。クエリを実行するフィールドの種類と、それらのクエリがどのようになるかを考えてください。これは、必要なインデックス作成を決定するのに役立ちます。

于 2008-10-20T17:35:28.287 に答える
0

私にはperlの仕事のように聞こえます。必要な統計を数えてください。正規表現を使用して行を解析します。そのサイズのファイルを解析するのにおそらく10分もかかりません。私のコンピューターは、perlを使用して約45秒で2ギガのファイル(1300万行)を読み取ります。

于 2008-10-21T00:09:43.920 に答える
0

25GBのフラットファイル。このファイルを読むために自分でコンポーネントを書くのは良い考えではないと思います。

SQLのインポートに行き、すべてのデータをSQLServerに取り込むことをお勧めします。SQL Serverでこのデータを取得するには時間がかかることに同意しますが、SQL Serverに到達すると、このデータを使用して任意の操作を実行できます。

このデータをDBに入れたら、25GBのフラットファイルではなく、情報のデルタを取得できることを願っています。

于 2008-10-20T17:28:41.170 に答える
0

これは 1 回限りのことですか、それとも毎日、毎週のように処理しますか? いずれにせよ、logparser について素晴らしいことを聞いた vmarquez の回答を確認してください。http://awstats.sourceforge.net/もチェックしてください。これは本格的な Web 統計アプリケーションです。

于 2008-10-20T19:28:56.700 に答える
0

フラットファイル内のデータがどのように編成されているかについては言及していません。RDBMS の提案は賢明ですが、フラット ファイルが何らかの区切り形式でフォーマットされており、db インポートが比較的単純なタスクであると仮定します。そうでない場合は、最初に、分析を実行できる一連のフィールドにデータをきれいに逆コンパイルするという困難なタスクがあります。

どちらの方法も言っておらず、考えられる問題のこの部分に誰も答えていないため、データは適切な CSV または TXT ファイルではないと推測します。

データが規則的な構造を持っている場合は、クリーンなフィールド区切り文字がなくても、 Informaticaなどの ETL ツールをジョブに適用できる場合があります。あなたは技術者であり、これは 1 回限りの仕事であるため、必要な部分を抽出するためにいくつかの正規表現比較を行い、データベースにロードできるファイルを吐き出す独自のコードを作成することを検討する必要があります。 . いずれにせよ、データの解析とクレンジングに多大な労力を費やす必要があるため、これを簡単な作業とは考えないでください。

独自のコードを作成する場合は、コンパイル済み言語を選択し、データを一度に 1 行ずつ処理することをお勧めします (または、読み取りを管理可能なチャンクにバッファリングする方法で)。

いずれにせよ、データに適用するプロセスの結果が一貫して実行されていることを確認するというかなり大きな仕事が必要になるため、計算で IP アドレスが 10 進数として表示されることは望ましくありません。その規模のデータでは、そのような障害を検出するのは難しい場合があります。

それを解析したら、RDBMS はデータを保存して分析するための正しい選択だと思います。

于 2008-10-20T19:17:23.027 に答える
0

SQL Server Analysis Servicesは、まさにそのようなデータ分析を行うように設計されています。学習曲線は少し急ですが、スキーマをセットアップすると、必要なあらゆる種類の分野横断的なクエリを非常に迅速に実行できるようになります。

于 2008-10-20T21:10:10.613 に答える
0

複数のコンピューターを自由に使用できる場合、これはMapReduceにとって最適な仕事です。

于 2008-10-20T21:19:30.860 に答える