エンベロープパターン

概要

MarkLogicデータハブは、エンベロープパターンを使用してデータをカプセル化します。エンベロープパターンでは、元のコンテンツおよび関連するメタデータを同一エンベロープ(「エンティティ」)に格納します(それぞれの独立性は維持されます)。これにより、元のコンテンツを保持しながら、メタデータを追加できます。

   {
    "envelope": {
      "headers": [],
      "triples": [],
      "instance": {
        "your original data": "goes here"
      }
    }
  }
   <envelope>
    <headers/>
    <triples/>
    <instance>
      your original data goes here
    </instance>
  </envelope>

例:エンベロープパターン

MarkLogicデータハブでは、元のデータを保持する一方、メタデータをエンベロープに追加することで、フィールド名や形式が異なるデータをハーモナイズできます。

例えば、2つのデータソースに性別情報が含まれているが、それぞれのフィールドの名前と形式が異なっている場合を考えます。

source-1.json source-2.json
   {
    "gender": "f",
    "age": "32",
    ...,
    "firstName": "Rebecca"
  }
   {
    "gndr": "female",
    "age": "39",
    ...,
    "firstName": "Leona"
  }

エンベロープでは、これらのフィールドを1つのフィールドに標準化して、このエンベロープ内にメタデータとして保存できます。

harmonized-1.json harmonized-2.json
   {
    "headers": [
      { "normalizedGender": "female" }
    ],
    "triples": [],
    "instance": {
      "gender": "f",
      "age": "32",
      ...,
      "firstName": "Rebecca"
    }
  }
   {
    "headers": [
      { "normalizedGender": "female" }
    ],
    "triples": [],
    "instance": {
      "gndr": "female",
      "age": "39",
      ...,
      "firstName": "Leona"
    }
  }

アプリケーションは、データソースが異なっていてもこの同じフィールド名(normalizedGender)でデータハブに対してクエリを実行でき、同一の形式(female)で結果を得られます。