すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE EXTERNAL DATABASE

最終更新日:Nov 19, 2025

Hologres V3.0 以降では、外部データベースがサポートされています。このトピックでは、外部データベースの定義について説明します。また、外部データベースを使用して外部データソースのテーブルを管理し、内部テーブルと外部テーブルを使用してフェデレーテッドクエリを実装する方法についても説明します。

背景

CREATE EXTERNAL DATABASE 文は、Hologres インスタンスに外部データベースを作成するために使用されます。外部データベースを使用して、外部データソースのメタデータを Hologres にロードできます。これにより、Hologres で内部データと外部データを管理でき、レイクハウスアーキテクチャを使用して一元的なメタデータ管理を実装するのに役立ちます。

内部データとは、Hologres の標準ストレージタイプと低頻度アクセス(IA)ストレージタイプに格納されているデータを指します。外部データとは、MaxCompute および Data Lake Formation(DLF)データレイクに格納されているデータを指します。 Hologres は MaxCompute とシームレスに統合されています。 Hologres では、MaxCompute から直接データを読み書きして、高速データ交換を実装できます。また、DLF を使用して Object Storage Service(OSS)データレイクのデータを管理し、Hologres Query Engine(HQE)を使用して、Apache Paimon、Hudi、Delta Lake などのデータレイクのデータの パフォーマンス専有型 の読み取りと書き込みを実現することもできます。

外部データベースはグローバルに表示されます。Hologres のデータベースに接続した後、ext_db.ext_schema.ext_table 形式で外部テーブルを指定することで、外部データソースからデータを読み書きできます。外部データベースに接続して SQL 文を実行し、GUC パラメーターを設定することもできます。

外部データベースの権限は、MaxCompute や DLF などの外部データソースによって管理されます。Hologres は ID を外部データソースに渡すだけです。デフォルトでは、Hologres サービスリンクロールが ID パススルーに使用されます。外部データソースにアクセスする前に、Alibaba Cloud アカウントまたは必要な権限を持つ RAM ユーザーを使用して、サービスリンクロールに権限を付与する必要があります。詳細については、「Hologres のサービスリンクロール」をご参照ください。Hologres では、RAM ロールを使用して外部データソースにアクセスすることもできます。これにより、外部データソースにアクセスするためのポリシーをカスタマイズできます。詳細については、「RAM ロールの概要」をご参照ください。BASIC アカウントなど、Alibaba Cloud アカウントまたは RAM ユーザーではないアカウントを使用する場合は、CREATE USER MAPPING 文を実行してアカウントの関連付けと権限付与を実行できます。

前提条件

  • Hologres インスタンスでデータレイクアクセラレーションが有効になっていること。データレイクアクセラレーションを有効にするには、Hologres コンソールにログインします。[インスタンス] ページで、Hologres インスタンスを見つけて、インスタンスデータレイク アクセラレーションアクションインスタンスの詳細 列の をクリックします。次に、表示されるメッセージの をクリックします。 Hologres インスタンスの ページでデータレイクアクセラレーションを有効にすることもできます。

  • DLF がアクティブ化されていること。詳細については、「はじめに」をご参照ください。 DLF がサポートされているリージョンについては、「サポートされているリージョンとエンドポイント」をご参照ください。

  • DLF 1.0 を使用する場合は、OSS がアクティブ化されており、OSS に必要な権限が付与されていることを確認してください。外部テーブルを使用して OSS のデータにアクセスする場合は、OSS へのアクセス権限が付与されている必要があります。そうでない場合、外部テーブルが作成されていても、OSS のデータにクエリを実行することはできません。 OSS に権限を付与する方法の詳細については、「バケットポリシー」をご参照ください。

  • オプション。OSS-HDFS を使用する場合は、OSS-HDFS が有効になっていることを確認してください。詳細については、「OSS-HDFS を有効にし、アクセス権限を付与する」をご参照ください。

制限事項

  • この文を実行するには、スーパーユーザー権限が付与されている必要があります。

  • 内部データベースに接続した後、ext_db.ext_schema.ext_table 形式でテーブルを指定することで、外部データベースのテーブルにアクセスできます。ただし、外部データベースに接続した後は、内部データベースのテーブルにアクセスすることはできません。

  • 外部データベースを作成して外部データソースのデータをマッピングした後、Hologres は外部データソースのメタデータを 5 分間キャッシュします。これはアクセス効率の向上に役立ちます。キャッシュの タイムアウト 期間は変更できません。

  • 外部データソースが MaxCompute プロジェクトの場合、MaxCompute 内部プロジェクトのみがサポートされます。外部プロジェクトはサポートされていません。

構文の説明

MaxCompute データソース

構文

CREATE EXTERNAL DATABASE <ext_database_name> WITH 
  metastore_type 'maxcompute'
  mc_project 'project_name' 
  [comment 'xxx'];

パラメータ

パラメータ

説明

必須

デフォルト値

metastore_type

外部データソースのメタデータストレージタイプ。MaxCompute の値は maxcompute です。値では大文字と小文字は区別されません。

はい

デフォルト値なし

mc_project

データをマッピングする MaxCompute プロジェクトの名前。MaxCompute 内部プロジェクトのみがサポートされます。

はい

デフォルト値なし

comment

データベースの説明。

いいえ

デフォルト値なし

DLF データソース

構文

DLF の構文
説明
  • DLF はマネージドストレージモードのみをサポートします。CREATE EXTERNAL DATABASE 文を実行して Hologres でメタデータマッピングを作成する場合、DLF 関連のパラメーターを指定するだけで済みます。

  • DLF は Apache Paimon カタログのみをサポートします。Hologres でメタデータマッピングを作成する場合、metastore_type パラメーターを dlf-paimon に設定する必要があります。

  • DLF のマネージドストレージモードに基づき、Hologres ではサービスリンクロールまたは RAM ロールを使用して外部データソースにアクセスできます。デフォルトでは、ID パススルーにサービスリンクロールが使用されます。サービスリンクロールを使用する前に、サービスリンクロール AliyunServiceRoleForHologresIdentityMgmt に権限を付与する必要があります。詳細については、「Hologres のサービスリンクロール」をご参照ください。RAM ロールを使用して権限を定義する場合は、CREATE USER MAPPING 文を実行します。

CREATE EXTERNAL DATABASE <ext_database_name> WITH
  
catalog_type 'paimon'
  
metastore_type 'dlf-rest'
  dlf_catalog '<dlf_catalog_name>' 
  [comment 'xxx']; 
DLF-Legacy の構文
説明
  • DLF-Legacy は、OSS ストレージと、Apache Paimon、Hudi、Delta Lake、ORC、Parquet、CSV などの複数のレイクフォーマットをサポートしています。詳細については、「データレイクアクセラレーション」をご参照ください。

  • DLF-Legacy を使用して外部データベースを作成する場合は、metastore_type パラメーターを dlf に設定し、認証のために DLF および OSS エンドポイントと AccessKey ペアを提供する必要があります。

  • DLF-Legacy では、認証にサービスリンクロールまたは RAM ロールを使用することはできません。

CREATE EXTERNAL DATABASE <ext_database_name> WITH
  metastore_type 'dlf'
  dlf_region ' ' 
  dlf_endpoint ' '
  dlf_catalog ' ' 
  oss_endpoint ''
  [comment 'xxx']; 

パラメータ

パラメーター

必須

説明

metastore_type

はい

外部データソースのメタデータストレージタイプ。

  • DLF-Legacy: dlf に設定します。

  • DLF: dlf-paimon に設定します (現在有効な値はこれのみです)。フォーマット: dlf-xxx。

catalog_type

はい

マッピングする外部データソース内のテーブルのタイプ。有効な値:

  • DLF-Legacy: paimon、hudi、deltalake、orc、parquet、csv、および sequencefile

  • DLF: Paimon

説明

DLF-Legacy の場合、catalog_type を設定する必要はありません。

dlf_region

はい

DLF サービスが存在するリージョンの ID。例: ap-southeast-1。詳細については、

サポートされているリージョンとエンドポイント」をご参照ください。

dlf_endpoint

はい

MaxCompute と Hologres が DLF にアクセスするために使用する内部エンドポイント。例: dlf-share.ap-southeast-1.aliyuncs.com。詳細については、「サポートされているリージョンとエンドポイント」をご参照ください。

dlf_catalog

はい

DLF データソースが属するカタログ。

dlf_access_id

はい

DLF へのアクセスに使用される Alibaba Cloud アカウントの AccessKey ID。

dlf_access_key

はい

DLF へのアクセスに使用される Alibaba Cloud アカウントの AccessKey シークレット。

oss_endpoint

はい

OSS へのアクセスに使用されるエンドポイント。

  • ネイティブ OSS へのアクセス: 内部エンドポイントを使用してアクセスパフォーマンスを向上させます。

  • OSS-HDFS へのアクセス: 内部エンドポイントのみがサポートされます。詳細については、「EMR Hive または Spark から OSS-HDFS にアクセスする」をご参照ください。

oss_access_id

はい

OSS へのアクセスに使用される Alibaba Cloud アカウントの AccessKey ID。

oss_access_key

はい

OSS へのアクセスに使用される Alibaba Cloud アカウントの AccessKey シークレット。

COMMENT

いいえ

データベースの説明。

関連操作

インスタンス内のすべての外部データベースをクエリする

SELECT database_name, options FROM hologres.hg_external_databases();

外部データベースのメタデータを更新する

REFRESH CACHE FOR EXTERNAL DATABASE <EXT_DB_NAME> WITH( cache_level = 'metadata');

メタデータ更新間隔の変更

  • デフォルトでは、metadata_refresh_interval_sec は単一のフロントエンド (FE) ノードの完全更新間隔を制御します。完全更新では、スキーマリスト、テーブルリスト、およびすべてのテーブルメタデータが更新されます。metadata_refresh_interval_sec のデフォルト値は 7200 秒です。更新間隔を変更するには、次のコマンドを使用します:

ALTER EXTERNAL DATABASE <EXT_DB_NAME> WITH metadata_refresh_interval_sec 1800;

MaxCompute データソース

説明

2 層モデルを使用する MaxCompute プロジェクトの場合、Hologres で MaxCompute プロジェクトの外部データベースを作成すると、外部データベースのテーブルはデフォルトで ext_db.ext_schema.mc_table 形式で表示されます。外部データベースのテーブルからデータをクエリする場合、3 層形式でテーブルを指定する必要があります。スキーマ名はデフォルトで default です。例: SELECT xxx FROM ext_db.default.mc_table

-- 外部データベースを作成します。
CREATE EXTERNAL DATABASE ext_database_mc WITH 
  metastore_type 'maxcompute'
  mc_project 'mc_3_layer_project' 
  comment 'mc 3 層プロジェクト';
  
-- データをクエリします。
SELECT * FROM ext_database_mc.mc_schema.mc_table;

DLF データソース

DLF

-- 外部データベースを作成します。
CREATE EXTERNAL DATABASE ext_database_dlf WITH
  metastore_type 'dlf-rest'
  catalog_type 'paimon'
  

dlf_catalog 'dlf_paimon_catalog' 
  comment 'DLF paimon catalog'; 

-- データをクエリします。
SELECT * FROM ext_database_dlf.dlf_db.paimon_table;

DLF-Legacy

-- 外部データベースを作成します。
CREATE EXTERNAL DATABASE ext_database_dlf1 WITH
  metastore_type 'dlf'
  dlf_region 'cn-beijing' 
  dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com'
  dlf_catalog 'hive_catalog' 
  oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com'
  comment 'DLF 1.0 hive カタログ'; 

-- 現在のユーザーのユーザーマッピングを作成します。
CREATE USER MAPPING FOR current_user
EXTERNAL DATABASE ext_database_dlf1
OPTIONS
  (
      -- DLF 1.0 の場合
      dlf_access_id 'LTxxxxxxxxxx',
      dlf_access_key 'y8xxxxxxxxxxxxx',
      oss_access_id 'LTxxxxxxxxxx',
      oss_access_key 'y8xxxxxxxxxxxxx'
  );

-- データをクエリします。
SELECT * FROM ext_database_dlf1.dlf_db.hive_table;