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

ApsaraDB for SelectDB:データレイクハウス

最終更新日:Jan 15, 2025

このトピックでは、ApsaraDB for SelectDB が提供する統合クエリテクノロジーを使用して、データレイク、データベース、リモートファイルなどの外部データソースに対して統合分析を実行する方法について説明します。これにより、シンプルで高速なデータ分析エクスペリエンスが提供されます。

概要

ApsaraDB for SelectDB は、データレイクやデータベースなどの外部データソースに接続して、シンプルで高速なデータ分析を行うためのマルチカタログ機能を提供します。マルチカタログ機能に基づいて、ApsaraDB for SelectDB は新しい 3 層のメタデータ階層を提供します。catalog -> database -> table。カタログは外部データソースを直接マッピングします。ApsaraDB for SelectDB でサポートされている外部データソースの詳細については、「データレイク分析」をご参照ください。

ApsaraDB for SelectDB は、テーブル値関数(TVF)も提供しています。これを使用して、Amazon Simple Storage Service(Amazon S3)や Hadoop Distributed System(HDFS)などの一般的なリモートストレージ内のファイルデータを ApsaraDB for SelectDB のテーブルにマッピングできます。これにより、ファイルデータの分析が容易になります。詳細については、「ファイル分析」をご参照ください。

このトピックでは、カタログの用語と使用方法について説明します。マルチカタログ機能は ApsaraDB for SelectDB の機能を拡張し、ApsaraDB for SelectDB は内部データを管理できるだけでなく、外部データソースを効率的に統合およびクエリすることもできます。カタログを使用すると、ApsaraDB for SelectDB から異なるデータウェアハウスおよびストレージシステムに格納されているデータに効率的にアクセスして分析できます。これにより、より柔軟で包括的なデータ管理と分析を実装できます。

用語と操作

  • 内部カタログ

    ApsaraDB for SelectDB の既存のデータベースとテーブルはすべて内部カタログに属します。内部カタログは、ApsaraDB for SelectDB の組み込みのデフォルトカタログであり、変更または削除することはできません。

  • 外部カタログ

    CREATE CATALOG ステートメントを実行することで、外部カタログを作成できます。SHOW CATALOGS ステートメントを実行してすべてのカタログを表示するか、SHOW CREATE CATALOG <catalog_name>; ステートメントを実行してカタログの作成ステートメントをクエリできます。

  • カタログへの切り替え

    ApsaraDB for SelectDB にログオンすると、デフォルトで内部カタログが使用されます。SWITCH ステートメントを実行して、カタログに切り替えることができます。例:

    SWITCH internal;
    SWITCH hive_catalog;

    カタログに切り替えた後、SHOW DATABASESUSE <db_name> などのステートメントを実行して、カタログ内のすべてのデータベースを表示したり、カタログ内のデータベースに切り替えたりできます。ApsaraDB for SelectDB は、カタログを使用して外部データソースのデータベースとテーブルに自動的にアクセスします。内部カタログを使用するのと同じ方法で、外部カタログのデータを表示およびアクセスできます。ApsaraDB for SelectDB は、外部カタログのデータへの読み取り専用アクセスをサポートしています。

  • カタログの削除

    外部カタログのデータベースとテーブルは読み取り専用です。ただし、必要に応じて、DROP CATALOG <catalog_name>; ステートメントを実行して外部カタログを削除できます。内部カタログは削除できません。

    説明

    この操作は、ApsaraDB for SelectDB のカタログに関するマッピング情報を削除するだけであり、外部データソースの内容を変更することはありません。

列タイプのマッピング

外部データソースのカタログを作成した後、ApsaraDB for SelectDB は外部データソースからカタログにデータベースとテーブルを自動的に同期します。さまざまなタイプのカタログとテーブルについて、ApsaraDB for SelectDB は列タイプ間のマッピングを実行します。

UNIONINTERVAL など、ApsaraDB for SelectDB の列タイプにマッピングできない外部データタイプの場合、ApsaraDB for SelectDB はそれらを UNSUPPORTED にマッピングします。次のサンプルコードは、マッピングされたタイプと UNSUPPORTED タイプのクエリ結果を示しています。

-- 同期後のテーブルスキーマ:
k1 INT,  // k1 整数型
k2 INT,  // k2 整数型
k3 UNSUPPORTED, // k3 サポートされていない型
k4 INT  // k4 整数型

-- クエリ結果:
SELECT * FROM testtable;                // エラー: 'k3' にサポートされていない型 'UNSUPPORTED_TYPE' があります。
SELECT * except(k3) FROM testtable;     // クエリ OK。
SELECT k1, k3 FROM testtable;           // エラー: 'k3' にサポートされていない型 'UNSUPPORTED_TYPE' があります。
SELECT k1, k4 FROM testtable;           // クエリ OK。

SHOW DATA TYPES; ステートメントを実行することで、ApsaraDB for SelectDB でサポートされているデータタイプを表示できます。さまざまな外部データソースでサポートされているデータタイプの詳細については、「データレイク分析」をご参照ください。

権限管理

デフォルトでは、ApsaraDB for SelectDB は独自の権限管理機能を使用して、外部カタログのデータベースとテーブルへのアクセスを制御します。マルチカタログ機能に加えて、権限管理がカタログレベルで追加されます。詳細については、「権限管理」をご参照ください。

データベース同期管理

カタログの include_database_list パラメーターと exclude_database_list パラメーターを構成することで、同期するデータベースを指定できます。

  • include_database_list: 同期するデータベース。このプロパティで指定されたデータベースのみが同期されます。データベース名はカンマ(,)で区切ります。デフォルトでは、すべてのデータベースが同期されます。データベース名は大文字と小文字が区別されます。

  • exclude_database_list: 同期する必要のないデータベース。データベース名はカンマ(,)で区切ります。このパラメーターはデフォルトでは空であり、すべてのデータベースが同期されることを示します。データベース名は大文字と小文字が区別されます。

重要
  • exclude_database_list パラメーターは、include_database_list パラメーターよりも優先されます。データベースが include_database_list パラメーターと exclude_database_list パラメーターの両方で指定されている場合、データベースは同期されません。

  • カタログを使用して Java Database Connectivity(JDBC)データソースに接続する場合、上記の 2 つのパラメーターを only_specified_database パラメーターと共に使用する必要があります。詳細については、「JDBC データソース」をご参照ください。

メタデータの更新

デフォルトでは、テーブルや列の作成と削除など、外部データソースのメタデータの変更は ApsaraDB for SelectDB に同期されません。メタデータを更新するには、次のいずれかの方法を使用できます。

手動更新

REFRESH ステートメントを実行して、メタデータを手動で更新します。

構文

REFRESH CATALOG catalog_name; // カタログ catalog_name を更新します
REFRESH DATABASE [catalog_name.]database_name; // データベース database_name を更新します
REFRESH TABLE [catalog_name.][database_name.]table_name; // テーブル table_name を更新します

カタログを手動で更新すると、パーティションキャッシュ、スキーマキャッシュ、ファイルキャッシュなど、オブジェクト関連のキャッシュが無効になります。

  1. カタログを更新します。

    REFRESH CATALOG hive; // hive カタログを更新します
    
  2. データベースを更新します。

    REFRESH DATABASE ctl.database1; // ctl カタログの database1 データベースを更新します
    REFRESH DATABASE database1; // 現在のカタログの database1 データベースを更新します
    
  3. テーブルを更新します。

    REFRESH TABLE ctl.db.table1; // ctl カタログの db データベースの table1 テーブルを更新します
    REFRESH TABLE db.table1; // 現在のカタログの db データベースの table1 テーブルを更新します
    REFRESH TABLE table1; // 現在のデータベースの table1 テーブルを更新します
    

スケジュール更新

カタログを作成するときに、properties の metadata_refresh_interval_sec パラメーターを指定することで、スケジュール更新を有効にできます。スケジュール更新間隔は秒単位で測定されます。このパラメーターを指定すると、FE マスターノードはこのパラメーターの値に基づいてカタログを定期的に更新します。次の 3 種類のデータソースのみがスケジュール更新をサポートしています。

  • Hive Metastore Service(HMS)

  • Elasticsearch

  • JDBC データソース

-- カタログの更新間隔を 20 秒に設定します。
CREATE CATALOG es PROPERTIES (
    "type"="es",
    "hosts"="http://127.0.0.1:9200",
    "metadata_refresh_interval_sec"="20" // metadata_refresh_interval_sec を 20 に設定します
);

自動更新

Hive データソースの特定のイベントのみがカタログに自動的に更新されます。詳細については、「Hive データソース」トピックの「Hive データソース」セクションをご参照ください。