プロジェクト構造

MarkLogicデータハブでプロジェクトをイニシャライズすると、基本的なディレクトリツリーおよびいくつかのファイルが叩き台として提供されます。フローやステップあるいは他の設定を作成すると、追加のディレクトリやファイルが自動的に作成されます。

ディレクトリの上にカーソルを移動すると説明が表示されます(説明がないものもあります)。

   your-project-root
    ├── build.gradle
    ├── gradle-properties
    ├── gradle-env.properties
    ├── gradlew
    ├── gradlew.bat
    ├── marklogic-datahub-5.2.0.war
    ├── entities
    │   ├── MyEntity1.entity.json
    │   ├── ...
    │   └── MyEntityN.entity.json
    ├── flows
    │   ├── MyFlow1.flow.json
    │   ├── ...
    │   └── MyFlowN.flow.json
    ├── gradle
    │   └── wrapper
    │       ├── gradle-wrapper.jar
    │       └── gradle-wrapper.properties
    ├── mappings
    │   └── MyFlow-MyStep
    │       └── MyFlow-MyStep-0.mapping.json
    ├── src
    │   └── main
    │       ├── entity-config
    │       │   ├── exp-final-entity-options.xml
    │       │   ├── exp-staging-entity-options.xml
    │       │   ├── final-entity-options.xml
    │       │   ├── staging-entity-options.xml
    │       │   └── databases
    │       │       ├── final-database.json
    │       │       └── staging-database.json
    │       ├── hub-internal-config
    │       │   ├── database-fields
    │       │   │   ├── job-database.xml
    │       │   │   └── staging-database.xml
    │       │   ├── databases
    │       │   │   ├── job-database.json
    │       │   │   ├── staging-database.json
    │       │   │   ├── staging-schemas-database.json
    │       │   │   └── staging-triggers-database.json
    │       │   ├── security
    │       │   │   ├── amps
    │       │   │   │   ├── amps-dhf-update-batch.json
    │       │   │   │   ├── amps-dhf-update-job.json
    │       │   │   │   └── dhf-amp-*.json
    │       │   │   ├── privileges
    │       │   │   │   ├── dhf-internal-data-hub.json
    │       │   │   │   ├── dhf-internal-entities.json
    │       │   │   │   ├── dhf-internal-mappings.json
    │       │   │   │   └── dhf-internal-trace-ui.json
    │       │   │   ├── roles
    │       │   │   │   ├── data-hub-admin-role.json
    │       │   │   │   ├── data-hub-admin.json
    │       │   │   │   ├── data-hub-developer.json
    │       │   │   │   ├── data-hub-entity-model-reader.json
    │       │   │   │   ├── data-hub-entity-model-writer.json
    │       │   │   │   ├── data-hub-environment-manager.json
    │       │   │   │   ├── data-hub-explorer-architect.json
    │       │   │   │   ├── data-hub-flow-reader.json
    │       │   │   │   ├── data-hub-flow-writer.json
    │       │   │   │   ├── data-hub-job-internal.json
    │       │   │   │   ├── data-hub-job-reader.json
    │       │   │   │   ├── data-hub-mapping-reader.json
    │       │   │   │   ├── data-hub-mapping-writer.json
    │       │   │   │   ├── data-hub-module-reader.json
    │       │   │   │   ├── data-hub-module-writer.json
    │       │   │   │   ├── data-hub-monitor.json
    │       │   │   │   ├── data-hub-operator.json
    │       │   │   │   ├── data-hub-portal-security-admin.json
    │       │   │   │   ├── data-hub-security-admin.json
    │       │   │   │   ├── data-hub-step-definition-reader.json
    │       │   │   │   ├── data-hub-step-definition-writer.json
    │       │   │   │   ├── flow-developer-role.json
    │       │   │   │   └── flow-operator-role.json
    │       │   │   └── users
    │       │   │       ├── flow-developer-user.json
    │       │   │       └── flow-operator-user.json
    │       │   ├── servers
    │       │   │   ├── job-server.json
    │       │   │   └── staging-server.json
    │       │   └── triggers
    │       │       ├── ml-dh-entity-create.json
    │       │       ├── ml-dh-entity-delete.json
    │       │       ├── ml-dh-entity-modify.json
    │       │       ├── ml-dh-entity-validate-create.json
    │       │       ├── ml-dh-entity-validate-modify.json
    │       │       ├── ml-dh-json-mapping-create.json
    │       │       ├── ml-dh-json-mapping-delete.json
    │       │       └── ml-dh-json-mapping-modify.json
    │       ├── ml-config
    │       │   ├── entities.layout.json
    │       │   ├── database-fields
    │       │   │   └── final-database.xml
    │       │   ├── databases
    │       │   │   ├── final-database.json
    │       │   │   ├── final-schemas-database.json
    │       │   │   ├── final-triggers-database.json
    │       │   │   ├── modules-database.json
    │       │   │   ├── data-hub-staging-SCHEMAS
    │       │   │   │   └── schemas
    │       │   │   └── data-hub-final-SCHEMAS
    │       │   │       └── schemas
    │       │   ├── security
    │       │   │   ├── privileges
    │       │   │   ├── protected-paths
    │       │   │   ├── query-rolesets
    │       │   │   ├── roles
    │       │   │   └── users
    │       │   └── servers
    │       │       └── final-server.json
    │       ├── ml-modules
    │       │   └── root
    │       │       └── custom-modules
    │       │           ├── ingestion
    │       │           │   └── MyStep
    │       │           │       └── main.sjs
    │       │           ├── mapping
    │       │           │   └── MyStep
    │       │           │       └── main.sjs
    │       │           ├── mapping-functions
    │       │           ├── matching
    │       │           │   └── MyStep
    │       │           │       └── main.sjs
    │       │           ├── merging
    │       │           │   └── MyStep
    │       │           │       └── main.sjs
    │       │           ├── mastering
    │       │           │   └── MyStep
    │       │           │       └── main.sjs
    │       │           └── custom
    │       │               └── MyStep
    │       │                   └── main.sjs
    │       └── ml-schemas
    └── step-definitions
        ├── ingestion
        │   └── MyCustomIngestionStep
        │       └── MyCustomIngestionStep.step.json
        ├── mapping
        │   └── MyCustomMappingStep
        │       └── MyCustomMappingStep.step.json
        ├── mastering
        │   └── MyCustomMasteringStep
        │       └── MyCustomMasteringStep.step.json
        └── custom
            └── MyCustomOtherStep
                └── MyCustomOtherStep.step.json

build.gradle

このファイルにより、Gradleを使ってデータハブインスタンスを設定および管理できるようになります。詳細は、Gradleのドキュメントを参照してください。

gradle.properties

このpropertiesファイルでは、データハブのインストールおよび実行を適切に行うために必要な変数を定義しています。このファイルを使って、データハブのすべてのインスタンスに適用される値を格納します。

gradle-env.properties

データハブ はプロジェクトの環境を指定します(例:devqaprod、local)。これはハブプロジェクトのオーバーライドファイルに基づきます。新しい環境を作成するには、ダッシュの後に新しい環境名が付いたオーバーライドファイルを新規作成してください。例えば、ローカル環境用のgradle-local.propertiesファイルには、gradle.propertiesの変数をオーバーライドする設定が含まれてます。

gradlew

Unix/Linux実行ファイルで、gradleディレクトリ内のGradleラッパーを実行します。

gradlew.bat

Windows実行ファイルで、gradleディレクトリ内のGradleラッパーを実行します。

entities

このディレクトリにはエンティティ定義が含まれています。エンティティとはドメインオブジェクトのことです(EmployeeやSalesOrderなど)。
注: entitiesディレクトリはデータハブの利用のために予約されています。またデプロイ処理において特別なものとして扱われます。

flows

このディレクトリにはフロー定義が含まれています。フローはデータを処理するステップ(読み込み、マッピング、マスタリングなど)から構成されています。

gradle

このディレクトリにはGradleラッパーが含まれています。これはGradleのカスタムなローカル版です。このためGradleを別途インストールする必要はありません。このGradleラッパーは、新規データハブプロジェクトをイニシャライズした際にインストールされます。

mappings

このディレクトリにはモデル間のマッピング設定のアーティファクトが含まれています。詳細については、マッピングについてを参照してください。

src/main/entity-config

このディレクトリには、optionsファイルおよび、STAGINGおよびFINALに関する2つのデータベース設定ファイルが含まれています。これらのファイルを修正することで、インデックスを設定できます。

src/main/hub-internal-config

このディレクトリには、データハブが機能するうえで最小限必要な設定を表すJSONファイルおよびサブディレクトリが含まれています。

hub-internal-configには内部サーバーおよびデータベース(STAGINGおよびJOBSサーバーとデータベースなど)に関する設定ファイルが含まれています。ml-configには、FINALサーバーおよびデータベースに関する同様のファイルが含まれています。

重要: このディレクトリ内のものは決して変更しないでください。このディレクトリ内の設定をオーバーライドする必要がある場合、ml-configディレクトリ配下に同じファイル名とディレクトリ構造を持つファイルを作成し、オーバーライドしたいプロパティを追加します。

上記のJSONファイルのそれぞれは、以下を作成するうえでMarkLogic REST APIに準拠しています。

  • データベース
  • 権限
  • ロール
  • ユーザー
  • サーバー

src/main/hub-internal-config/databases

このディレクトリには、内部データベース(STAGING-* データベースやJOBSデータベースなど)の設定が含まれています。

src/main/hub-internal-config/security

このディレクトリには、STAGINGサーバー用のセキュリティ設定ファイルが含まれています(アンプ、権限、ロール、ユーザーなど)。

  • ampsサブディレクトリには、権限の一時的な増強(amplification)用の設定ファイルが含まれています。
  • privilegesサブディレクトリには、データへのアクセスに関するさまざまな権限やパーミッションを定義する設定ファイルが含まれています。複数の権限は1つのロールにまとめられています。これを必要に応じてユーザーに割り当てます。
  • rolesサブディレクトリには、デフォルトの3つのロール(data-hub-admin-roleflow-developer-roleflow-operator-role)用に事前に準備された設定ファイルが入っています。
  • usersサブディレクトリには、デフォルトの2つのユーザー(flow-developer-userflow-operator-user)用に事前に準備された設定ファイルが入っています。

src/main/hub-internal-config/servers

このディレクトリには、内部サーバー(JOBSサーバーやSTAGINGサーバーなど)の設定が含まれています。

src/main/hub-internal-config/triggers

このディレクトリには、トリガー定義ファイルが含まれています。詳細は、トリガーの概要を参照してください。

src/main/ml-config

このディレクトリには、追加のサブディレクトリおよびデータハブプロジェクトを設定するためのJSONファイルが含まれています。このディレクトリには、カスタムモジュールや変換、その他の設定アセットを追加できます。

hub-internal-configには内部サーバーおよびデータベース(STAGINGおよびJOBSサーバーとデータベースなど)に関する設定ファイルが含まれています。ml-configには、FINALサーバーおよびデータベースに関する同様のファイルが含まれています。

以下のファイルは、ml-config/databasesディレクトリにしか含まれていません。

  • final-database.json
  • final-schemas-database.json
  • final-triggers-database.json
  • modules-database.json
  • final-server.json
重要: カスタムトリガーは、ml-config/databases/database-name/triggersに追加する必要があります。トリガーの詳細については、ml-gradleプロジェクトレイアウトを参照してください。

src/main/ml-config/databases

このディレクトリには、外部データベース(FINAL-* データベースなど)の設定が含まれています。

src/main/ml-config/databases/data-hub-staging-SCHEMAS

このディレクトリには、内部の(staging-*)SCHEMASデータベースの設定が含まれています。

src/main/ml-config/databases/data-hub-final-SCHEMAS

ml-gradle v3.11以降に使用されています。このディレクトリには、外部の(final-*)SCHEMASデータベースの設定が含まれています。ml-gradle v3.10以前については、src/main/ml-schemasの項を参照してください。。

src/main/ml-config/security

このディレクトリには、FINALサーバー用のセキュリティ設定ファイルが含まれています(権限、ロール、ユーザーなど)。

  • privilegesサブディレクトリには、データへのアクセスに関するさまざまな権限やパーミッションを定義する設定ファイルが含まれています。複数の権限は1つのロールにまとめられています。これを必要に応じてユーザーに割り当てます。
  • rolesサブディレクトリには、セキュリティロール用の設定ファイルが含まれています。
  • usersサブディレクトリには、ユーザー用の設定ファイルが含まれています。
注: デフォルトのセキュリティロールおよびユーザーは自動的にsrc/main/hub-internal-config/securityディレクトリ内に作成されますが、これはSTAGINGデータベース用だけで、FINALデータベース用には作成されません。

src/main/ml-config/servers

このディレクトリには、外部サーバー(FINALサーバー)の設定が含まれています。

src/main/ml-modules

このディレクトリは、MODULESデータベースにデプロイされるアーティファクト用のデフォルトのml-gradleの場所です。カスタムディレクトリは、./root/custom-modulesサブディレクトリに格納されている必要があります。

src/main/ml-schemas

ml-gradle v3.101以前に使用されています。このディレクトリには、外部の(final*)SCHEMASデータベースの設定が含まれています。ml-gradle v3.11以降については、src/main/ml-config/databases/data-hub-final-SCHEMAS/schemasの項を参照してください。。

step-definitions

このディレクトリにはステップ定義が含まれています。GradleタスクhubCreateStepDefinitionを実行する場合、結果として得られるステップ定義ファイルは、該当するステップタイプのサブディレクトリに格納されます。

  • ./ingestion
  • ./mapping
  • ./matching
  • ./custom

plugins(以前のバージョンに由来)

注: DHF 4.xからアップグレードしている場合、4.xのフローはpluginsディレクトリ内に保持されます。これらのフローは、GradleタスクhubRunLegacyFlowを使って実行できます。