カタログを作成します

カタログを管理するに data-client は、プロジェクトへの依存関係としてモジュールを追加します。

カタログを設定します

カタログ設定には、次の表に示すプロパティが含まれています。 必須のプロパティは 太字で示しています。

注 : カタログ ID

カタログ ID はカタログ HERE リソースネーム の一部であるため、公開されています。 カタログ ID を指定する場合は、非公開または会社の機密情報を含めないでください。 カタログ名は既定で非公開になっています。つまり、このフィールドに非公開情報または機密情報を追加できます。

プロパティ 説明
ID ID は、カタログの HERE リソースネーム ( HERE リソースネーム )の一部です。
名前 カタログの短縮形の名前。
概要 カタログを説明する 1 つの文の要約。 この概要は、プラットフォームポータルでカタログのリストを参照すると表示されます。
説明 カタログおよびその内容の詳細な説明。 この情報は、プラットフォームポータルでカタログを開くと、 [ 概要 ] タブに表示されます。
レイヤー カタログ内のレイヤー。
タグ プラットフォームポータルでカタログを検索するときに役立つキーワードがあります。
通知が有効になりました 有効にすると、カタログの通知トピックが作成されます。 このトピックでは、カタログが更新されたときにアプリケーションが通知を受け取ることを許可します。
自動 VersionDeletion 設定すると、カタログバージョンの自動削除を有効にしてストレージコストを管理し、バージョンレイヤーのライフサイクル管理を有効にします。
領域スキーム(areaScheme) カタログ全体で使用されるエリアスキームのHEREリソース名(HRN)。 値が設定されていない場合は、カタログに領域スキームが適用されません。
SubsetRestrictions カタログのsubsetRestrictionsが有効かどうかを示します。 SubsetRestrictionsは、プロジェクト内で定義されているカタログに対してのみ有効にできます。 エリアスキームを設定する必要があります。 カタログサブセット制限が無効になっている場合、サポートされているレイヤのサブセット制限はデフォルトで無効になります。

レイヤー設定には、以下の表に示すプロパティが含まれています。

プロパティ 説明
ID ID は、カタログ内のすべてのレイヤーで一意である必要があります。
名前 レイヤーの短縮形の名前。
概要 レイヤーを説明する 1 つの文の要約。 この概要は、プラットフォームポータルでレイヤーのリストを参照すると表示されます。
説明 レイヤーおよびその内容の詳細な説明。 この情報は、プラットフォームポータルでレイヤーを開くと、「概要」タブに表示されます。
LayerType レイヤーによって提供されるデータのタイプ。バージョン管理、揮発性、ストリーム、インデックス、相互アクティブマップ、またはオブジェクトストアです。
volumeType データが物理的に保存されているボリュームを記述するプロパティです。永続または揮発性です。
パーティション分割 このレイヤーのパーティション分割スキームの名前。 generic または heretile です。 このプロパティは、 objectstore レイヤータイプではサポートされていません。
contentType レイヤーに保存されているデータの MIME タイプ。 このプロパティはオブジェクト ストア レイヤータイプではサポートされていません。
contentEncoding データが圧縮されているかどうかを示すインジケータ。 現在、 gzip がサポートされています。
カバレッジ 管理者領域の文字列のセット ( 国および地域の ISO 3166 2 文字コード、およびオプションで 'DE' 、 'PL' 、 'CN-HK' などのサブディビジョンの 3 文字までのコード ) 。このレイヤーがカバーする地理的領域を定義します。
タグ プラットフォームポータルで検索するときにレイヤーを見つけるのに役立つキーワードのリストです。
請求タグ 請求記録をグループ化するために使用される、自由形式のタグの請求タグのリスト。 指定する場合は、 4 ~ 16 文字の英数字の ASCII 文字 (a ~ z 、 A ~ Z 、 0 ~ 9) のみを使用する必要があります。
スキーマ このレイヤーのデータスキーマの HERE リソースネーム 。
ダイジェスト データパブリッシャがレイヤー内の各パーティションのチェックサムを生成するために使用するダイジェストアルゴリズム。 データ利用者は、レイヤーから取得したデータの整合性を確認するためにこのレイヤーを使用できます。 現在、 MD5 、 SHA-1 、および SHA-256 がサポートされています。
CRC このレイヤーのパーティションのチェックサムを計算するために使用される CRC アルゴリズム。 現在、 CRC-32C がサポートされています。

バージョン管理されたレイヤー構成

バージョン管理レイヤーには、次の追加設定フィールドがあります。

プロパティ 説明
secureHandles レイヤメタデータとblobがセキュアなデータハンドルのサポートモードになっているかどうかを示すブール型のフラグ。 カタログ領域スキームを設定する必要があり、レイヤの階層分割のみをサポートします。
SubsetRestrictions レイヤのsubsetRestrictionsが有効かどうかを示すブールフラグ。 SubsetRestrictionsは、プロジェクト内で定義されているカタログのレイヤーに対してのみ有効にできます。 カタログのエリアスキームを設定する必要があります。 サポートされているレイヤーSubsetRestrictionsは、カタログでSubsetRestrictionsが有効になっている場合、デフォルトで有効になっています。 Layer SubsetRestrictionsでは、catalog subsetRestrictionsを有効にする必要があります。 カタログサブセット制限が無効になっている場合、サポートされているレイヤのサブセット制限はデフォルトで無効になります。 階層パーティショニングを使用するレイヤでのみサポートされます。

ボラタイル レイヤー設定

揮発性レイヤーには、次の追加の設定フィールドがあります。

プロパティ 説明
TTL このレイヤー内のデータの有効期限 ( ミリ秒 ) 。 データは、指定された制限時間が経過すると自動的に削除されます。 揮発性レイヤーの場合、 TTL 値は 60000 ( 1 分) ~ 604800000 ( 7 日)の範囲である必要があります。
データ冗長性 揮発性レイヤーのデータ冗長性。 列挙型 (enum) に指定できる値は single-instance 、または multi-instanceです。 単一インスタンスのレイヤーにはデータの冗長性がありませんが、複数インスタンスのレイヤーには冗長性があります。
storageCapacityMb メガバイト単位で指定されたレイヤーのストレージ容量。増分ステップは 100 です ( 例 : 100 、 500 、 600 、 2000 )。 揮発性レイヤーの場合、ストレージ容量は 100 ( 100 MB ) ~ 21000 ( 21 GB )の範囲である必要があります。
secureHandles レイヤメタデータとblobがセキュアなデータハンドルのサポートモードになっているかどうかを示すブール型のフラグ。 カタログ領域スキームを設定する必要があり、レイヤの階層分割のみをサポートします。
SubsetRestrictions レイヤのsubsetRestrictionsが有効かどうかを示すブールフラグ。 SubsetRestrictionsは、プロジェクト内で定義されているカタログのレイヤーに対してのみ有効にできます。 カタログのエリアスキームを設定する必要があります。 サポートされているレイヤーSubsetRestrictionsは、カタログでSubsetRestrictionsが有効になっている場合、デフォルトで有効になっています。 Layer SubsetRestrictionsでは、catalog subsetRestrictionsを有効にする必要があります。 カタログサブセット制限が無効になっている場合、サポートされているレイヤのサブセット制限はデフォルトで無効になります。 階層パーティショニングを使用するレイヤでのみサポートされます。

インデックス レイヤー設定

インデックスレイヤーには、次の追加の設定フィールドがあります。

プロパティ 説明
インデックス定義 公開されたパーティションをインデックス化するインデックスキー定義のコレクション。
TTL インデックス レイヤーでインデックス化されたデータの存続可能時間。 指定しない場合、デフォルトで 7 日に設定されます。

各インデックスキー定義には、次の設定フィールドが含まれています。

プロパティ 説明
名前 インデックスキーの名前。 名前の最大長は 64 文字です。 名前は Unicode 文字で始まる必要があります。 後続の文字には、文字、アンダースコア (_) 、数字 (0 ~ 9) を使用できます
indexType インデックスキーのタイプ。 サポートされているタイプ : int 、 bool 、 String 、 TimeWindow 、および HereTile です。
期間 TimeWindow タイプの duration 属性の範囲は 600000 (10 分 ) である必要があります。 86400000 ( 24 時間ミリ秒)
zoomLevel HereTile タイプの zoomLevel 属性は 0 にする必要があります。 14 レンジ

サポートされているインデックスキータイプ :

プロパティ 説明
整数 最大 64 ビットの符号付き整数。
ブール ブール型値。
文字列 最大 40 文字の Unicode 文字列。
タイムウィンドウ ( ポイントインタイムではなく ) タイムスライスを表し、データのインデックス付けと後でのクエリーの実行に最も適した時間精度を示します。 時間タイプには時間スライスの長さを表す属性 duration があり、 HERE タイルと同様に変更できません。 here-time 値および here-time duration 属性の両方が、ミリ秒単位で表されます(時間値はエポックからのミリ秒数)。
HereTile HERE Tile マップタイリング方式のタイル ID を表します。 HereTile 型には、タイルのサイズを表す zoomLevel 属性がありますが、変更はできません。

TimeWindow インデックスキーが必要です。 インデックスレイヤーには、 1 つの TimeWindow と 1 つの HereTile インデックスキーを使用できます。 つまり、インデックスレイヤーには、 1 つの TimeWindow インデックスキーと 1 つのオプションの HereTile インデックスキーのみを使用できます。

TTL 値は次のとおりです。

列挙型 (enum) 値 TTL
セブンデーズ 7 日
ティーンエイジャーズ 15 日
1 か月に 1 回 30 日
TwoMonths 60 日
3 か月 90 日
FourMonths 120 日
SixMonths 180 日
1 年目 365 日
ワンアンドハーフイヤー 548 日
2 年 730 日
無制限 無制限

ストリーム レイヤー設定

ストリームレイヤーには、次の追加の設定フィールドがあります。

プロパティ 説明
dataInThroughputKbps 1 秒あたりのキロバイト数で表された、受信データの最大スループット。 インバウンドレートが最大インバウンドスループットを超えると、スロットリングが発生します。 デフォルトは 1000 kbps です。 最小値は 100 kbps 、最大値は 32800 kbps です。 100 kbps の倍数にのみ設定できます。
dataOutThroughputKbps 1 秒あたりのキロバイト数で表された送信データの最大スループット。 すべてのコンシューマへの合計アウトバウンドレートが最大アウトバウンドスループットを超えると、スロットリングが発生します。 デフォルトは 4000 kbps です。 最小値は 100 kbps 、最大値は 65 、 500 kbps です。 100 kbps の倍数にのみ設定できます。
並列化 ストリーム レイヤーの Kafka パーティションの数。 デフォルトは 4 で、最大値は 32 です。
TTL このレイヤー内のデータの有効期限 ( ミリ秒 ) 。 データは、指定された制限時間が経過すると自動的に削除されます。 ストリームレイヤーの場合、 TTL 値は 600000 (10 分 ) ~ 259200000 (72 時間 ) の範囲である必要があります。

注 : ストリーム レイヤープロパティの一般的な推奨事項

(dataInThroughputKbpsdataOutThroughputKbpsおよびparallelization) は、リクエスト内のすべてのリクエストを提供することです。

下位互換性を保つために、コーナーケースはほとんどありません。

  1. ユーザーは dataInThroughputKbps 、と dataOutThroughputKbps のいずれかを入力する必要 parallelizationがあります。
  2. 3 つのフィールドがすべて入力されている場合は、そのまま使用します。
  3. すべてのストリームプロパティがない場合は、デフォルト値 dataInThroughputKbps = 1000, dataOutThroughputKbps = 4000, parallelization = 4 が設定されます

インタラクティブなマップ レイヤー設定

インタラクティブマップレイヤーには、次の追加の設定フィールドがあります。

プロパティ 説明
検索可能なプロパティ インタラクティブなマップレイヤーは、「学習可能なプロパティ」で設定できます。 これは、高速検索のためにインデックスを作成するプロパティを含む文字列のリストです。 検索可能なプロパティはいつでも更新できます。 最大 8 つの検索可能なプロパティを追加できます。

自動バージョン削除の設定

警告 : データの損失

カタログバージョンを削除すると、パーティション メタデータおよびそれらのバージョンに関連付けられているデータが削除され、カタログ内のすべてのバージョン管理されたレイヤーに影響があります。 パーティション メタデータとデータは復旧できません。 現在削除されていないバージョンでまだ使用されているパーティション メタデータおよび削除されたバージョンのデータは削除されないため、削除されていないバージョンは引き続き機能します。

サポートされている自動バージョン削除タイプ :

プロパティ 説明
VersionsToKeep の数 設定され、最大バージョン数に達すると、新しいバージョンが作成されるたびに、最も古いバージョンが削除されます。

自動バージョン削除を無効にする方法については 、「自動バージョン削除を無効にする」を参照してください

カタログを作成します

カタログを設定および作成するには、次のものを追加します。

Scala
Java
val catalogId = "creating-catalog-test-" + someIdentifierSuffix
val catalogConfig =
  WritableCatalogConfiguration(
    id = catalogId,
    name = catalogId,
    summary = "This is a catalog summary.",
    description = "This is what the catalog is for.",
    tags = Set("tag1", "tag2", "tag3"),
    automaticVersionDeletion =
      Some(AutomaticVersionDeletion.builder.withNumberOfVersionsToKeep(10L).build),
    areaScheme = Some(HRN.fromString("hrn:here:areascheme::olp-here:default-countries")),
    subsetRestrictions = Some(true),
    layers = Seq(
      WritableLayer(
        id = "layer-0",
        name = "INFO",
        summary = "This is a layer summary.",
        description = "This is a layer description.",
        layerType = VersionedLayerType(),
        partitioning = GenericPartitioning,
        volume = Volumes.Durable,
        contentType = "application/x-protobuf",
        digest = Some(DigestAlgorithm.MD5),
        crc = Some(CrcAlgorithm.CRC32C)
      ),
      WritableLayer(
        id = "layer-1",
        name = "SCHEMAS",
        summary = "This is a layer summary.",
        description = "This is a layer description.",
        layerType = VersionedLayerType(),
        partitioning = GenericPartitioning,
        volume = Volumes.Durable,
        contentType = "application/x-protobuf"
      ),
      WritableLayer(
        id = "layer-2",
        name = "VOLATILEDATA",
        summary = "This is a layer summary.",
        description = "This is a layer description.",
        layerType =
          VolatileLayerType(secureHandles = Some(true), subsetRestrictions = Some(true)),
        partitioning = HereTilePartitioning(tileLevels = 1 :: Nil),
        volume = Volumes.Durable,
        contentType = "application/octet-stream",
        contentEncoding = Some(ContentEncoding.gzip),
        coverage = Some(Coverage(Set[String]("DE", "CN", "US")))
      ),
      WritableLayer(
        id = "layer-3",
        name = "INDEX",
        summary = "This is a layer summary.",
        description = "This is a layer description.",
        layerType = IndexLayerType(
          indexDefinitions = Seq(
            IndexDefinition("someIntKey", IndexType.Int),
            IndexDefinition("someStringKey", IndexType.String),
            IndexDefinition("someTimeWindowKey",
                            IndexType.TimeWindow,
                            duration = Some(3600000)),
            IndexDefinition("someHereTileKey", IndexType.HereTile, zoomLevel = Some(8))
          ),
          ttl = Ttl.OneMonth
        ),
        partitioning = NoPartitioning,
        volume = Volumes.Durable,
        contentType = "application/octet-stream",
        digest = Some(DigestAlgorithm.SHA256),
        crc = Some(CrcAlgorithm.CRC32C)
      ),
      WritableLayer(
        id = "layer-4",
        name = "OBJECTSTORE",
        summary = "This is layer summary",
        description = "This is layer description",
        layerType = ObjectStoreLayerType(),
        partitioning = NoPartitioning,
        volume = Volumes.Durable
      ),
      WritableLayer(
        id = "layer-5",
        name = "INTERACTIVEMAP",
        summary = "This is layer summary",
        description = "This is layer description",
        layerType = InteractiveMapLayerType(
          interactiveMapProperties = Some(
            InteractiveMapProperties(searchableProperties = Seq("abc"),
                                     versionsToKeep = Some(123L)))
        ),
        partitioning = NoPartitioning,
        volume = Volumes.Durable
      )
    )
  )

val adminApi = DataClient().adminApi()
adminApi.createCatalog(catalogConfig).flatMap { hrn =>
  log.info(s"Created new catalog `$hrn`")
  processCreatedCatalog(hrn)
}
String catalogId = "creating-catalog-test-" + someIdentifierSuffix;
WritableCatalogConfiguration catalogConfig =
    new WritableCatalogConfiguration.Builder()
        .withId(catalogId)
        .withName(catalogId)
        .withSummary("This is a catalog summary.")
        .withDescription("This is what the catalog is for.")
        .withTags(new HashSet<>(Arrays.asList("tag1", "tag2", "tag3")))
        .withAutomaticVersionDeletion(
            AutomaticVersionDeletion.builder().withNumberOfVersionsToKeep(10L).build())
        .withLayers(
            Arrays.asList(
                new WritableLayer.Builder()
                    .withId("layer-0")
                    .withName("INFO")
                    .withSummary("This is a layer summary.")
                    .withDescription("This is a layer description.")
                    .withLayerType(VersionedLayerType.defaultInstance())
                    .withPartitioning(Partitioning.Generic())
                    .withVolume(Volumes.Durable())
                    .withContentType("application/x-protobuf")
                    .withDigest(DigestAlgorithm.SHA256())
                    .withCrc(CrcAlgorithm.CRC32C()),
                new WritableLayer.Builder()
                    .withId("layer-1")
                    .withName("SCHEMAS")
                    .withSummary("This is a layer summary.")
                    .withDescription("This is a layer description.")
                    .withLayerType(VersionedLayerType.defaultInstance())
                    .withPartitioning(Partitioning.Generic())
                    .withVolume(Volumes.Durable())
                    .withContentType("application/x-protobuf"),
                new WritableLayer.Builder()
                    .withId("layer-2")
                    .withName("INDEX")
                    .withSummary("This is a layer summary.")
                    .withDescription("This is a layer description.")
                    .withLayerType(
                        new IndexLayerType.Builder()
                            .addIndexDefinition(
                                new IndexDefinition.Builder()
                                    .withName("someIntKey")
                                    .withIndexType(IndexType.Int)
                                    .build())
                            .addIndexDefinition(
                                new IndexDefinition.Builder()
                                    .withName("someStringKey")
                                    .withIndexType(IndexType.String)
                                    .build())
                            .addIndexDefinition(
                                new IndexDefinition.Builder()
                                    .withName("someTimeWindowKey")
                                    .withIndexType(IndexType.TimeWindow)
                                    .withDuration(3600000L)
                                    .build())
                            .addIndexDefinition(
                                new IndexDefinition.Builder()
                                    .withName("someHereTileKey")
                                    .withIndexType(IndexType.HereTile)
                                    .withZoomLevel(8)
                                    .build())
                            .withTtl(Ttl.OneMonth)
                            .build())
                    .withPartitioning(Partitioning.NoPartition())
                    .withVolume(Volumes.Durable())
                    .withContentType("application/x-protobuf"),
                new WritableLayer.Builder()
                    .withId("layer-3")
                    .withName("OBJECTSTORE")
                    .withSummary("This is layer summary")
                    .withDescription("This is layer description")
                    .withLayerType(ObjectStoreLayerType.defaultInstance())
                    .withPartitioning(Partitioning.NoPartition())
                    .withVolume(Volumes.Durable()),
                new WritableLayer.Builder()
                    .withId("layer-4")
                    .withName("INTERACTIVEMAP")
                    .withSummary("This is layer summary")
                    .withDescription("This is layer description")
                    .withLayerType(
                        new InteractiveMapLayerType.Builder()
                            .withInteractiveMapProperties(
                                new InteractiveMapProperties.Builder()
                                    .withSearchableProperties(
                                        Arrays.asList("some-property1", "some-property-2"))
                                    .build())
                            .build())
                    .withPartitioning(Partitioning.NoPartition())
                    .withVolume(Volumes.Durable())
                    .withContentType("application/geo+json")))
        .build();

AdminApi adminApi = DataClient.get(myActorSystem).adminApi();
adminApi
    .createCatalog(catalogConfig)
    .thenApply(
        hrn -> {
          log.info("Created new catalog `" + hrn + "`");
          return processCreatedCatalog(hrn);
        });

データ クライアント ライブラリ、 CLI 、 REST API 、および HERE platform ポータルに表示されているリストによって返されたカタログのリストに新しいカタログが表示されるまでに数分かかることがあります。

」に一致する結果は 件です

    」に一致する結果はありません