2

ファイルシステムの「ドロップボックス」ディレクトリに配信されるフラットファイルに依存する毎日のプロセスがあります。これにより、このコンマ区切りの(外部企業のExcelなどからの)データのデータベース、断片的なPerl / Bashアプリケーションへのロードが開始されます、このデータベースは複数のアプリケーションで使用されるだけでなく、いくつかの GUI ツールで直接編集されます。データの一部は、追加の Perl アプリを使用して、私が主に使用するデータベースに複製されます。

言うまでもなく、すべてが複雑でエラーが発生しやすく、入ってくるデータが破損したり、編集によって壊れたりすることがあります。私のユーザーは、データの欠落や不正確さについてよく苦情を言います。フラット ファイルと DB を比較して、プロセスが壊れている場所を分析するには時間がかかり、日を追うごとにどのデータがデータ不足になり、分析が難しくなります。

このデータ転送プロセスの一部またはすべてを修正または書き直す予定です。

これに着手する前に、推奨される読書を探しています。堅牢で障害に強く、自動回復可能な ETL プロセスを作成する方法に関する Web サイトや記事、またはその他のアドバイスをいただければ幸いです。

4

3 に答える 3

1

使用しているデータベースバックエンドはわかりませんが、SQLServerではこれをSSISパッケージとして記述します。メタデータデータベースにもデータを書き込むように設計されたシステムがあり、ファイルが取得された日時、正常に処理されたかどうか、処理されなかった理由を通知します。また、ファイルに含まれる行数なども通知します(これを使用して、現在の行サイズが異常であるかどうかを判断できます)。SSISの利点の1つは、パッケージの接続と変数に構成を設定できることです。これにより、パッケージを開発から製品に簡単に移動できます(構成を取得するたびに、接続を手動で変更する必要はありません)。構成テーブルで設定)

SSISでは、データベースに挿入する前に、データが正しいことを確認するため、またはデータをクリーンアップするためにさまざまなチェックを行います。実際、私たちはたくさんのチェックをします。疑わしいレコードはファイル処理から削除し、dbasが調べて、場合によっては顧客に返すために別の場所に置くことができます。また、さまざまな列のデータ(および、指定されている場合は列名、すべてのファイルにそれらが含まれているわけではない)が期待どおりであるかどうかを確認することもできます。したがって、郵便番号フィールドが突然250文字になった場合、何かが間違っていることがわかり、処理前にファイルを拒否する可能性があります。そうすれば、クライアントが通知なしに姓の列を名の列と交換したときに、100,000個の新しい誤ったレコードをインポートする前にファイルを拒否できます。SSISでは、ファジーロジックを使用して、一致する既存のレコードを見つけることもできます。したがって、ジョン・スミスの記録によると、彼の住所は213Statestにあります。彼が215ステートストリートに住んでいるという記録と一致する可能性があります。

この方法でプロセスを設定するには多くの時間がかかりますが、一度設定すると、優れたデータを処理しているという追加の自信は、金の重さの価値があります。

SSISを使用できない場合でも、これにより、少なくとも、データベースに情報を取り込むために実行する必要のある作業の種類についていくつかのアイデアが得られるはずです。

于 2009-09-22T14:39:33.803 に答える
1

これこそまさに、メッセージ キュー マネージャが設計された目的です。いくつかの例をここに示します。

于 2009-09-21T22:02:42.397 に答える
0

この記事は、実行中の cron ジョブのエラー処理の側面に役立つことがわかりました。

于 2011-09-10T10:11:09.807 に答える