エンティティ

概要

エンティティは、エンタープライズ内の業務要素をまとめる際の軸となるものです。例えば、社員製品発注書業務部門などが考えられます。

MarkLogicデータハブでは、MarkLogicのエンティティサービスを使用して、ビジネスエンティティのモデルを作成し、このモデルに基づいてコードの叩き台の生成、データベース設定、インデックス設定、検証を行えます。エンティティサービスは、API呼び出しによってモデル定義とエンティティインスタンスエンベロープドキュメントを処理します。自分独自の抽象エンティティを作成する場合は、こういったフレームワークを自分で指定する必要があります。

注: MarkLogicではエンティティサービスを使用することを強く推奨します。エンティティサービスでできないことがある場合以外は、必ずこれを使用してください。

MarkLogicデータハブ では、エンティティに関するすべてのデータを(コンテキストと履歴を含めて)1つのレコードにまとめます。これによりサイロに分断されていたデータの全体像を把握できます。

注: エンティティモデルは、生データの読み込み時には必要ではありません。しかしながら、マッピングの際に必要となります。
次の方法でエンティティを作成できます。

複雑なエンティティ

エンティティモデルに他のエンティティを含めたり、他のものとリンクしたりできます。

  • ローカルなエンティティの参照」では、ホストエンティティ内に入れ子になっているエンティティをプロパティの値として参照します。プロパティの値が各ホストエンティティにおいて違う場合、入れ子のエンティティを使用します。例えば、エンティティFullNameをエンティティEmployeeに入れ子にします。というのも、各社員(employee)の名前(full name)はそれぞれ異なるためです。
  • 外部のエンティティの参照」 では、別個に格納されているエンティティがあり、ホストエンティティはそのリンクだけを持ちます。プロパティの値が各ホストエンティティで共通の場合、エンティティへのリンクを使用します。例えば、エンティティProductをエンティティOrder,内でリンクとして利用できます。というのもSKUや製品の説明はどの注文においても同じだからです。
  • 入れ子のエンティティ(ローカルなエンティティ参照)をマッピングする場合、ソースデータの要素のタイプは以下のいずれかになります。
    • 1つのオブジェクト(Cardinality1..1の場合)
    • オブジェクトの配列(Cardinality1..∞の場合)
  • リンクされたエンティティ(外部のエンティティ参照)をマッピングする場合、ソースデータの要素のタイプは文字列(リンクされたエンティティのURIを含む)である必要があります。

入れ子になったエンティティオブジェクトのそれぞれには、エンティティモデルの名前とプロパティが含まれています。以下の例では、エンティティPersonにプロパティnameaddressが含まれています。プロパティnameには、エンティティモデルFullNameに基づく入れ子エンティティが含まれています。

   "instance": {
    ...,
    "Person": {
      "name": {
        "FullName": {
          "title": "Mr.",
          "first": "John",
          "middle": "Doe",
          "last": "Smith"
        }
      },
      "address": "..."
    }
  }