0

メディア RSSiTunes ポッドキャストRSS フィードをデータベースに保存できるようにしたいと考えています。ここでの要件は、フィード内の要素またはその属性を見逃したくないということです。フィード内の最も一般的な要素をすべて見つけて、データベースに個別の列として保存することは理にかなっています。ここでの問題は、標準ではないフィード固有の要素が存在する可能性があることです。私も彼らを捕まえたい。彼らが何者なのかわからないので、彼ら専用のコラムはありません。

現在、feeds と feed_entries という 2 つのテーブルがあります。エンクロージャ、カテゴリなどの RSS 2.0 タグについては、feeds/feed_entries と関連付けられた別のテーブルがあります。フィードの解析に feedzirra を使用しています。Feedzirra では、解析したいフィード内の要素を知る必要があるため、feedzirra が理解できる以上の要素がフィードに含まれているかどうかはわかりません。

これらのフィードをデータベースに保存し、わずかな情報も見逃さないようにするには、どうすればよいでしょうか? (ほとんどの属性を照会する必要があるため、フィード全体をそのままデータベースにダンプしても機能しません)。どのパーサーが最適でしょうか? Feedzirra はパフォーマンスのために選択されましたが、フィード内のすべてのデータをデータベースに取得することが優先事項です。

アップデート

データベースとしてMySQLを使用しています。

4

2 に答える 2

1

フィードとエントリでもデータベースをモデル化し、RSS、RDF、Atomのフィールドをクロスマッピングしたので、必要なデータフィールドを開始点としてキャプチャできました。次に、タグ付けとフィードの内部要約用に他のいくつかを追加し、さらにいくつかのハウスキーピングとメンテナンスのフィールドを追加しました。

Feedzirraから移動する場合は、実際のフィードXMLをステージングテーブルに一時的に保存して、 Nokogiriを使用して後処理できるようにすることをお勧めします。そうすれば、HTTPプロセスがテキストの処理に行き詰まることはなく、コンテンツを取得してファイリングし、処理時間のレコードを更新するだけなので、いつ再確認するかがわかります。後処理では、保存されたXMLから必要なフィード情報を抽出してデータベースに保存し、レコードを削除できます。つまり、フィードを可能な限り迅速に定期的に取り込むプロセスと、基本的にバックグラウンドで実行されるプロセスがあります。

また、Typhoeus / HydraHTTPClientはどちらも、複数のHTTPリクエストを適切に処理でき、セットアップも簡単です。

于 2011-02-03T08:48:39.243 に答える
0

XMLをCLOBとして格納します。ほとんどのデータベースには、SELECTステートメントの一部としてXPathタイプのクエリを含めることができるXML処理拡張機能があります。

それ以外の場合、DBMSがXMLクエリをサポートしていない場合は、言語のXPath実装を使用してCLOBをクエリします。クエリを高速化するには、特定の要素をテーブルの列に抽出する必要があります。

于 2011-02-03T05:33:21.873 に答える