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

Hologres:外部データベースの作成

最終更新日:Mar 13, 2026

Hologres V3.0 以降では、外部データベースがサポートされています。このトピックでは、外部データベースの概要を説明し、外部データソース内のテーブルを管理および内部テーブルと外部テーブルに対するフェデレーテッドクエリを実行する方法について解説します。

背景情報

CREATE EXTERNAL DATABASE ステートメントを使用すると、Hologres インスタンス内に外部データベースを作成し、外部データソースからメタデータをロードできます。これにより、内部データと外部データを単一のシステムで統合的に管理でき、データレイクハウスアーキテクチャにおけるメタデータの一元管理を実現できます。

内部データは、Hologres 内で標準ストレージおよび低頻度アクセスストレージを使用して保存されます。対応している外部データソースには、MaxCompute および Data Lake Formation (DLF) データレイクが含まれます。Hologres は MaxCompute とシームレスに統合されており、MaxCompute ストレージに対して直接読み取りおよび書き込みを行うことで、データウェアハウス内での高速なデータ交換を実現します。Hologres は Alibaba Cloud Data Lake Formation (DLF) を使用して OSS データレイク内のデータを管理します。また、Hologres は自社開発の High-QPS Engine (HQE) を活用し、Paimon、Hudi、DeltaLake などのデータレイクフォーマットに対して高性能な読み取りおよび書き込みを実現します。

外部データベースはグローバルに可視化されます。つまり、Hologres の任意のデータベースから ext_db.ext_schema.ext_table のような完全なパスを参照することで、外部データソースへのアクセスおよび書き込みが可能です。また、外部データベースに直接接続して各種 SQL ステートメントを実行したり、Grand Unified Configuration (GUC) パラメーターを設定したりすることもできます。

外部データベースに対する権限は、MaxCompute や DLF などの外部システムによって完全に制御されます。Hologres は ID のパススルーのみを実行します。ユーザーが外部データベースにアクセスする際には、デフォルトでサービスリンクロール (SLR) を使用した ID パススルーが適用されます。外部データソースにアクセスする前に、Alibaba Cloud アカウントまたは権限付与済みの RAM ユーザーを使用して、SLR に必要な権限を事前に付与する必要があります。詳細については、「Hologres サービスリンクロール」をご参照ください。また、Hologres では RAM ロールを用いた外部データソースへのアクセスもサポートしており、外部アクセスポリシーをカスタマイズできます。詳細については、「RAM ロールの概要」をご参照ください。Alibaba Cloud アカウントおよび RAM ユーザー以外(例:Hologres BASIC アカウント)の場合、Hologres は CREATE USER MAPPING ステートメントを提供し、アカウントのバインドおよび権限付与を実装します。詳細については、「CREATE USER MAPPING」をご参照ください。

前提条件

  • Hologres コンソールの [インスタンス一覧] または [インスタンスの詳細] ページで、対象インスタンスのデータレイクアクセラレーションを有効化します。具体的には、目的のインスタンスを見つけ、[操作] 列の [データレイクアクセラレーション] をクリックし、表示されるダイアログボックスで [確認] をクリックします。

  • DLF を有効化しました。詳細については、「クイックスタート」をご参照ください。DLF が利用可能なリージョンについては、「利用可能なリージョンとエンドポイント」をご参照ください。

  • DLF V1.0 を使用する場合、OSS の有効化および必要な権限付与も完了している必要があります。外部テーブルを介して OSS データにアクセスするには、アカウントが適切な OSS アクセス権限を保持している必要があります。そうでない場合、外部テーブルの作成は成功してもデータのクエリは実行できません。OSS の権限付与に関する詳細については、「バケットポリシー (Java SDK V1)」をご参照ください。

  • (任意)OSS-HDFS 機能を利用する場合は、OSS-HDFS サービスを有効化する必要があります。詳細については、「OSS-HDFS サービスの有効化」をご参照ください。

制限事項

  • このコマンドを実行するアカウントには、Superuser 権限が必要です。

  • 内部データベースにログインしている状態では、完全なパス ext_db.ext_schema.ext_table を指定することで外部データベース内のテーブルにアクセスできます。ただし、外部データベースに接続している状態では、内部データベース内のテーブルにアクセスすることはできません。

  • 外部データベースを介して外部データソースとのマッピングが確立されると、Hologres はデフォルトで 5 分間メタデータをキャッシュしてアクセスパフォーマンスを向上させます。キャッシュの有効期限 (TTL) はカスタマイズできません。

  • 外部データソースが 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 は現在、マネージドストレージモードのみをサポートしています。DLF 関連のパラメーターのみを指定すれば、CREATE EXTERNAL DATABASE ステートメントを使用してメタデータマッピングを作成できます。

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

  • DLF のマネージドストレージモードでは、Hologres は SLR および RAM ロールの 2 種類のユーザー認証方式をサポートしています。デフォルトでは SLR を使用した ID パススルーが適用されます。事前にサービスリンクロール (AliyunServiceRoleForHologresIdentityMgmt) に必要な権限を付与する必要があります。詳細については、「Hologres サービスリンクロール」をご参照ください。RAM ロールを使用してアクセスポリシーを定義する場合は、CREATE USER MAPPING ステートメントを使用できます。詳細については、「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 V1.0 構文
説明
  • DLF V1.0 では、カスタム OSS ストレージおよび Paimon、Hudi、DeltaLake、ORC、Parquet、CSV などの追加データレイクフォーマットがサポートされています。詳細については、「データレイクアクセラレーション」をご参照ください。

  • DLF V1.0 を基盤とする外部データベースを作成するには、metastore_type パラメーターを dlf に設定し、DLF および OSS の両方のエンドポイントと AccessKey ペアを指定する必要があります。

  • DLF V1.0 では、SLR または RAM ロールによるユーザー認証はサポートされていません。

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

パラメーター

パラメーター名

必須

説明

metastore_type

はい

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

  • DLF V1.0 データソースの場合は、「dlf」と設定する必要があります。

  • DLF データソースの場合は、「dlf-xxx」の形式となります。現在は「dlf-paimon」タイプのみがサポートされています。

catalog_type

はい

マッピング対象となる外部データソースのレイクテーブルフォーマット。

  • DLF V1.0:Paimon、Hudi、DeltaLake、ORC、Parquet、CSV、SequenceFile などのフォーマットをサポート。

  • DLF:現在は Paimon テーブルフォーマットのみがサポートされています。

説明

DLF V1.0 の場合は、catalog_type を指定する必要はありません。

dlf_region

はい

DLF サービスが配置されているリージョンです。フォーマットは、cn-beijing のように <nation>-<region> の形式です。DLF でサポートされているリージョンの詳細については、

利用可能なリージョンとエンドポイント

dlf_endpoint

はい

MaxCompute および Hologres が内部ネットワーク経由で DLF にアクセスするために使用するエンドポイント。形式は dlf-share.<nation>-<region>.aliyuncs.com です。詳細については、「利用可能なリージョンとエンドポイント」をご参照ください。

dlf_catalog

はい

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

dlf_access_id

はい

DLF にアクセスするために使用する Alibaba Cloud アカウントの AccessKey ID。

dlf_access_key

はい

DLF にアクセスするために使用する Alibaba Cloud アカウントの AccessKey Secret。

oss_endpoint

はい

OSS にアクセスするためのエンドポイント:

  • ネイティブ OSS ストレージの場合は、アクセスパフォーマンス向上のため、OSS の内部エンドポイントの使用を推奨します。

  • OSS-HDFS は現在、内部ネットワークアクセスのみをサポートしています。ドメイン名の取得方法については、「OSS-HDFS サービスのドメイン名の取得」をご参照ください。

oss_access_id

はい

OSS にアクセスするために使用する Alibaba Cloud アカウントの AccessKey ID。

oss_access_key

はい

OSS にアクセスするために使用する Alibaba Cloud アカウントの AccessKey Secret。

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 秒です。以下の SQL ステートメントを使用してリフレッシュ間隔を変更できます:

ALTER EXTERNAL DATABASE <EXT_DB_NAME> WITH metadata_refresh_interval_sec 1800;

使用例

MaxCompute データソース

説明

Hologres で 2 レイヤーモデルを使用する MaxCompute プロジェクト向けに外部データベースを作成した後、プロジェクトはデフォルトで 3 レイヤー構造として表示されます: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 three layer project';
  
-- データをクエリします。
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 V1.0

-- 外部データベースを作成します。
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 'DLF1.0 hive catalog'; 

-- 現在のユーザー向けにユーザーマッピングを作成します。
CREATE USER MAPPING FOR current_user
EXTERNAL DATABASE ext_database_dlf1
OPTIONS
  (
      -- DLF V1.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;