データ・レコードは、Dgraphのバルク・ロード・インタフェースを使用して追加または置換できます。
データ・インジェストAPIに加え、バルク・ロード・インタフェースを使用してEndecaデータ・ドメインにレコードを収集できます。バルク・ロードAPIは、単一のendeca_bulk_load.jarファイル(Endeca Serverのapisディレクトリ内)に含まれる一連のJavaクラスの形式で存在します。バルク・ロードAPIのJavadocは、apis/doc/bulk_loadディレクトリにあります。
バルク・ロードの特徴
インタフェースの特徴を次に示します。
- APIがロードできるのは、データ・ソース・レコードのみです。PDR、DDR、管理属性値、GCRまたはDgraphの構成ドキュメントはロードできません。
- Endecaデータ・ドメインの既存データは、更新ではなく置換されます。つまり、置換操作は付加的ではありません。そのため、受信レコードのキー/値ペアのリストによって、既存レコードのキー/値ペアのリストが完全に置換されます。
- 追加または置換されるレコードごとに、主キー属性(レコード指定子とも呼ばれる)が必要です。
- Endecaデータ・ドメインに存在しない標準属性(プロパティ)を割り当てる場合、新しい標準属性が自動的に作成されます(PDRにはシステムのデフォルト値を使用)。このデフォルト値の詳細は、 「新規属性のデフォルト値」を参照してください。
インタフェースでは、収集時に非XML 1.0の文字列が拒否されます。つまり、収集に有効な文字列は、XML 1.0仕様のproduction 2に準拠している文字列である必要があります。無効な文字列が検出されると、次のエラー・メッセージを伴う例外がスローされます。
Character <c> is not legal in XML 1.0
無効な文字列を含むレコードが拒否されました。
収集後の動作
バルク・ロード収集を行うたびに、次の2つの操作を後で実行する必要があります。
- 収集されたレコードを1つの生成にマージします(これにより、データベースが再度索引付けされ、問合せのパフォーマンスが最適化されます)。
- aspellのスペル辞書を再構築します(新たに追加されたデータをスペルのDYMと自動修正で利用できるようにするため)。
BulkIngesterコンストラクタの
doFinalMergeパラメータでは、収集後のマージを行うタイミングを設定できます。
- 設定がtrueの場合、収集後ただちにマージが実施されます。この動作によって、定期的にスケジュールされた更新期間中に発生する膨大な同種データの1回の更新が終了したときに、問合せのパフォーマンスを最大化します。
- 設定がfalseの場合、更新終了時にマージは実施されず、かわりに通常のバックグラウンドのマージ・プロセスに従って、生成が経時的に保持されます。この動作は、更新全体での遅延の低下が重視される異種データの並列更新により適しています。
BulkIngesterコンストラクタの
doUpdateDictionaryパラメータでは、aspellのスペル辞書を更新するタイミングを指定できます。
- 設定がtrueの場合、収集後ただちに辞書の更新が実施されます。
- 設定がfalseの場合、辞書の更新は無効です。後で辞書を更新できます。詳細は、『Oracle Endeca Server管理者ガイド』を参照してください。
複数のバルク・ロード操作を連続して実行する場合は、最後以外のすべての操作で両方のプロパティをfalseに設定できます。