マスタリング:マッチングとマージング

データハブにおけるマスタリング(マッチングとマージング)の概要。

MarkLogicデータハブにおけるマスタリングについて

スマートマスタリングは、同じエンティティを参照するレコードを、定義したルールに基づいて検索し、該当したレコードを指定したしきい値に基づいてマージする(まとめる)MarkLogicの技術です。

MarkLogicデータハブでは、マスタリングステップに次の2つの処理および関連するルールセットが含まれています。

  • マッチング。レコード間の類似性と比較の重みに基づいて、2つのレコードがマージの候補であるかどうかを判断します。マッチングルールでは、比較するプロパティ、比較する方法、および超過時にアクションを実行するしきい値を定義します。
    • マッチオプションは、レコードの比較方法を定義します。
    • マッチしきい値は、制限と、制限を超えた場合に実行するアクションを定義します。
  • マージング。しきい値に基づいて、候補レコードを処理します。マージングルールでは、データ内の2つ以上のレコードをマージする方法を定義します。作成したマージングルールに従って、元のレコードのコンテンツを組み合わせた新しいレコードが作成されます。元のレコードはデータベース内に残り、アーカイブとしてタグ付けされます。
    • マージオプションでは、候補レコードのプロパティを組み合わせる方法を定義します。
    • マージ戦略は、名前を付けて再使用できるマージオプションのセットです。
    • マージコレクションは、同じコレクションタグを持つレコードのセットです。

マッチング

1つあるいは複数のルールを作成して、2つ以上のレコードがマッチするかどうかを判断できます。各ルールでは、候補レコード内の1つのプロパティの値を比較します。比較には、次のいずれかのタイプがあります。

  • Exact。2つ以上のレコードの指定されたプロパティの値がまったく同じかどうかを判断します。
  • Synonym。指定したシソーラスに従って、2つ以上のレコードの指定されたプロパティの値が同義語かどうかを判断します。
  • Double Metaphone。2つ以上のレコードの指定されたプロパティの値が、ダブルメタフォンアルゴリズムに基づいて類似しているかどうかを判断します。例えば、「Smith」は「Schmidt」のように聞こえることがあります。
  • Zip。2つ以上のレコードの郵便番号がマッチするかどうかを判断します。
  • Reduce。特定のマッチの重要性を低減します。例えば、2つのレコードの住所と姓がマッチする場合でも、同じ家族の2人である可能性があるため、その類似性だけでは、2つのレコードが必ずしも同じ人物を示しているとは限りません。
  • Custom。カスタムモジュールで関数を実行し、2つ以上のレコードの指定されたプロパティの値を比較します。

次に、しきい値およびしきい値を超えた場合のアクションを指定できます。例えば、しきい値を超えたときに、次のような処理が考えられます。

  • 自動マージをトリガーする。
  • 通知を送信する。
  • カスタムモジュールを実行する。

マージング

マージでは、新しいレコードを作成し、指定したルールに従って元の複数のレコードの値を結合して新しいレコードにコピーできます。例えば以下のようなものがあります。

  • 新しいレコードにコピーする一意の値の個数を制限できます。
  • 値をコピーするデータソースの数を制限できます。
  • 特定のデータセットのレコードのみをマージ可能に指定できます。また、各ソースに重み付けし、信頼性の高いソースを優先できます。
  • 文字列の長さに重み付けすることもできます。

特定のマージ設定値の組み合わせをマージ戦略として保存すれば、後から参照できます。

カスタムモジュールを使用して、独自のマージを実行することもできます。

マージは非破壊的な操作です。作成したマージルールに従って、元のレコードのコンテンツを組み合わせた新しいレコードが作成されます。元のレコードはデータベース内に残り、アーカイブとしてタグ付けされます。

統合ステップマスタリング vs 分割ステップマスタリング

データハブでは、 マッチングおよびマージングを1つのステップ(マスタリングステップ)あるいは2つのステップ(マッチングステップとマージングステップ)のいずれかの方法で行うことができます。

統合されたステップのマスタリングにおいては、指定されたコレクションやクエリ内のレコードが互いに比較されます。マッチが発見された場合、マージされたレコードが新しく作成され、元のレコードはアーカイブ化されます。マッチングとマージングの両方が同一のマスタリングステップ内で行われます。統合ステップのマスタリングは、必ず1つのスレッドで実行される必要があります。

分割ステップのマスタリングでは、以下のようになります。
  • マッチングステップでは、Source Collectionとしてタグ付けされたレコードを比較します。マッチが発見された場合は、マッチするレコードのURIをリスト表示するマッチサマリーが作成されます。このマッチングはこのステップ内で指定したマッチングルールに基づきます。
  • マージングステップは、このマッチサマリーを読み、指定されたレコードをマージします。このマージングは、このステップ内で指定したマージングルールに基づきます。

ほとんどの場合、分割ステップのマスタリングの方が理想的です。というのも複数のスレッドを使って、より効果的にロックを回避するためです。

分割ステップマスタリングのガイドライン

分割ステップのマスタリングでは、以下のガイドラインを考慮してください。

  • マッチングステップを作成する際には、追加するコレクションタグを指定してください。これにより必要があればマッチングを取り消すことができます。毎回実行するごとに、このコレクションタグを置き換えてください。
  • マッチングステップとマージングステップの両方において、Source DatabaseTarget Database部分の両方に同一のデータベースを指定してください。
  • 同一データベースに対してマッチングステップを実行するのは1回だけにしてください。マージングステップでは、存在しているすべてのマッチサマリーを実行します(異なるデータのスナップショットに対して実行された異なるマッチングステップから得られたサマリーであっても)。
  • 分割マスタリングを実行する際には、マッチングステップが完了してからマージングステップを開始するようにしてください。
  • マッチングステップが終わったらできるだけすぐにマージングステップを実行するようにしてください。
    • これらのステップの間にマッチしたレコードが変更されてもマージは実行されます(もはやマッチング基準に合わなくなってしまった場合でも)。
    • マッチングステップとマージングステップの間に新しくレコードが読み込まれてマッピングされた場合、これらのレコードが自動的に既存のマッチングサマリーに追加されることはありません。

    データが大幅に変更された場合(修正や新規マッピングなど)、マージングステップの実行時には、以前のマッチを取り消してから、再度マッチングステップを実行してください。

  • マッチングステップやマージングステップを実行する前に、既存のマッチングサマリーのリストをチェックし、古くなったマッチに対してマージングを行っていないことを確認してください。
  • 同一のコードが、異なるマッチングステップが作成した複数のマッチサマリーに含まれている場合、マージングにおいては最も直近のマッチが選択されます。

以前のマッチをチェックする

マッチングステップが実行されたこを確認するには、datahubMasteringMatchSummaryで始まるコレクションにタグ付けされたレコードがあるかどうか検索します。このコレクション名では、これに続いてハイフンとエンティティモデル名が続いているはずです。

  1. Browse Dataに移動します。
  2. データベースとして、FINALあるいは選択したデータベースを指定します。
  3. 左側のファセットで、datahubMasteringMatchSummaryコレクションを選択します。

以前のマッチを取り消す

マッチングステップの実行を取り消すには、マッチングステップで作成されたマッチサマリーを削除します。

  1. クエリコンソールに移動します。
  2. datahubMasteringMatchSummaryコレクションタグを持つすべてのレコードを検索します。
  3. 発見されたレコードを削除あるいはアーカイブ化します。