私の目標は、ビュー3を使用して照会できるDrupal 7を使用して、いくつかの非常に大きなフラットファイルデータソース(CSV、固定幅、XMLドキュメント)に含まれる読み取り専用データにアクセスするための高速で信頼性の高い自動化された方法を作成することですモジュール。すでに利用可能なモジュールを使用することを希望しますが、カスタムモジュールの構築もオプションです。
タスクに適さないモジュールとメソッドを除外するために、ここで作業しているファイルの統計を示します。
- 年間インポート:8,500,000行のCSVファイル。(毎年パージおよび再ロードされます。主キーがあります。)
- 毎週のインポート:350,000行の固定幅ファイル。(毎週パージおよび再ロードされます。主キーはありません。)
- 毎時インポート:3,400行のCSVファイル。(可能な限り頻繁に更新および同期したいが、20分ごとにしたい。主キーがある)
- 毎日のインポート:200アイテムのXMLファイル。(毎日パージおよび再ロードされます。主キーがあります)
3つの形式間での変換は問題ではなく、インポートのパフォーマンスが向上するか、より優れたツールを使用できるようにする場合に実行できます。(CSVへの固定幅のAWKなど)cronおよびshスクリプトを使用すると、取得と変換の自動化は簡単ですが、Drupal 7統合を自動化する必要があります。vewsがリレーションシップを使用してデータを参照できる限り、カスタムテーブルの使用も可能です。
このタイプのデータをDrupal 7と統合するためのベストプラクティスは何ですか?また、データまたは達成しようとしていることに関する重要な詳細を省略していますか?
以下は、解決策を見つけるために現在検討しているプロジェクトです。これを拡張して、大規模なデータインポートで作業する場合に他のユーザーがどのルートを取るかを決定できるようにします。
ノードへのデータのインポート:
- フィード(現在はD7のアルファ)
フィードはデータを確実にインポートします。小さいデータソースでは速度は妥当ですが、300k +テーブルでは速度が遅すぎます。
cronおよびJob Scheduler(現在はAlpha for D7)を使用して自動化が可能です。
ソースデータでインデックスまたは一意のキーを使用できないため、これを使用するのが難しくなります。フィードよりも高速ですが、非常に大きなテーブルのインポートは依然として低速です。
自動化は、drushとcronを介して利用できます。
ノードの代わりのカスタムテーブル
- データモジュール(現在はD7のアルファ)
データモジュールは非常に有望に見えるが、現時点ではD7のための非常にバギーです。自動化とインポート速度の要件は、データを使用して簡単に満たされますが、信頼性が不足しています。ビューの統合は、(リンクはD6のためである)非常に有望に見えます。
- テーブルウィザード(D7では使用不可)
参照用にこれを追加しました。この時点ではD7の候補はありませんが、カスタムモジュールの開始点として使用できます。
- ビュースキーマ(放棄、D6のみ)
参照用にこれを追加しました。これは、Drupal 6のテーブルウィザードによって吸収されたようです。ここでも、参照用にのみ追加されました。
- インポーター(D7のRC2)
ビューの統合にテーブルウィザード(D6のみ)が必要なようです。参照用に追加されましたが、ビューの要件を満たしていません。
@MPD-可能なソリューションとして「カスタムテーブル」を追加し、モジュールを拡張しました。この追加をありがとう。