このトピックでは、Hologres におけるアカウント、ユーザーロール、インスタンス、データベース、スキーマ、内部テーブル、外部テーブル、パーティションテーブルの基本概念について説明します。
アカウント
-
Alibaba Cloud アカウント
Alibaba Cloud アカウント(ルートアカウントとも呼ばれます)は、Hologres インスタンスの作成および管理に使用されます。他のユーザーに管理者権限を付与できます。
次の表は、Alibaba Cloud アカウントでサポートされているフォーマットを示しています。
アカウントフォーマット
説明
例
ALIYUN$<AccountName>@aliyun.com
<AccountName> は Alibaba Cloud アカウントのログイン名です。
ALIYUN$company@aliyun.com<AccountName>@aliyun.com
company@aliyun.com<Account ID>
Alibaba Cloud アカウントの ID です。
1344445678xxx -
Resource Access Management (RAM) ユーザー
RAM ユーザー(サブアカウントとも呼ばれます)は、Alibaba Cloud アカウントから付与された権限の範囲内で、インスタンス内のデータベースおよびテーブルの作成・管理が可能です。
次の表は、RAM ユーザーでサポートされているフォーマットを示しています。
アカウントフォーマット
説明
例
p4_<Account ID>
-
p は小文字です。
-
<Account ID> は Alibaba Cloud アカウントの ID です。
p4_12345678xxx<subUserName>@<Account Name>.onaliyun.com
-
<subUserName> は RAM ユーザーのログイン名です。
-
<AccountName> は Alibaba Cloud アカウントのログイン名です。
-
<AccountID> は Alibaba Cloud アカウントの ID です。
holouser@company.onaliyun.com<subUserName>@<Account Name>
<subUserName>@<Account ID>.onaliyun.com
RAM$<subUserName>
RAM$<AccountName>:<subUserName>
RAM$<Account ID>:<subUserName>
<subUserName>@<Account ID>
-
ユーザーロール
-
スーパー管理者
インスタンス購入時に使用した Alibaba Cloud アカウントは、デフォルトでスーパー管理者(Superuser)となります。Superuser はインスタンス全体に対するすべての権限(データベースの作成・削除、ロールの作成、ロールへの権限付与など)を持ちます。
-
一般ユーザ
一般ユーザは、Superuser から付与された権限の範囲内でインスタンスにアクセスし、データ開発を実行できます。また、Superuser 権限を付与されることもあります。
インスタンス
インスタンスは、データベースストレージサービスを管理するために使用するエンティティです。すべてのデータベース操作はインスタンス内で実行されます。
データベース
データベースは、データ構造に基づいてデータを整理・保存・管理するリポジトリです。データベース内では、テーブルの作成・更新・削除や関数に関する操作を実行できます。
Hologres インスタンスを購入すると、システムにより postgres という名前のデータベースが自動的に作成されます。このデータベースには少量のリソースが割り当てられており、管理用途のみに使用されます。業務開発には新しいデータベースを作成してください。新しいデータベースの作成方法については、「CREATE DATABASE」をご参照ください。
スキーマ
スキーマは、ファイルシステムのディレクトリと同様に、データベースオブジェクトの集合です。 インスタンス内のテーブルや関数などのオブジェクトは、スキーマに格納されます。
データベース作成後、システムにより public という名前のデフォルトスキーマが作成されます。インスタンスオブジェクトに対するすべての操作は、デフォルトでこのスキーマ内で実行されます。新しいスキーマを作成することも可能です。詳細については、「CREATE SCHEMA」をご参照ください。
-
スキーマはネストできません。
-
スキーマ内ではオブジェクト名が一意である必要があります。
-
異なるスキーマ間では、同じ名前のオブジェクトを持つことができます。
テーブル
テーブルは、行と列で構成されるデータストレージ単位です。列の数と順序は固定されており、各列には名前が付けられます。行の数は可変であり、特定時点でのテーブルに格納されているデータ量を示します。
テーブルの各列には、その列に格納される値の型を指定するデータの型があります。詳細については、「データの型のまとめ」をご参照ください。
Hologres には、次の 2 種類のテーブルがあります。
-
内部テーブル
データが Hologres 内に格納されるテーブルです。テーブル内のデータの型は、Hologres がサポートする任意の型を使用できます。
-
外部テーブル
データを Hologres 内に格納せず、外部データソースのフィールドにマップするテーブルです。外部テーブルのデータは読み取り専用です。データ操作言語(DML)文の実行やインデックスの作成はできません。
Hologres では、MaxCompute などの外部データソースからのデータクエリを高速化するために、外部テーブルを作成できます。
Hologres での外部テーブルの作成方法については、「CREATE FOREIGN TABLE」をご参照ください。
パーティションテーブル
パーティションテーブルは、キー値に基づいてパーティションと呼ばれるより小さなサブセットに分割される親テーブルです。異なる種類のデータは、異なるパーティションに格納されます。Hologres は現在、単一キー値によるリストパーティションのみをサポートしています。クエリ実行時には、パーティションキーでクエリ文をフィルターすることで、関係のないパーティションを除外し、クエリパフォーマンスを向上させることができます。
Hologres でのパーティションテーブルの作成または削除方法については、「CREATE PARTITION TABLE」および「DROP PARTITION TABLE」をご参照ください。
エンジンコンポーネント
Hologres は分散リアルタイムデータウェアハウスであり、多くの内部コンポーネントを含んでいます。すべてのコンポーネントを理解する必要はありませんが、主要なコンポーネントを把握することで、Hologres をより効果的に活用できます。
-
フロントエンド(FE)
Hologres フロントエンド(FE)は、SQL 認証、解析、最適化を担当します。インスタンスには複数の FE が存在します。Hologres は PostgreSQL 11 エコシステムとの互換性を備えており、標準的な PostgreSQL 構文を使用した開発が可能です。また、PostgreSQL 互換の開発ツールやビジネスインテリジェンス(BI)ツールを直接 Hologres に接続できます。
クエリエンジン(QE)はクエリの実行を担当します。QE には次の主要コンポーネントがあります。
-
HQE(Hologres Query Engine)
Hologres Query Engine(HQE)は、Hologres 向けに開発された独自の実行エンジンです。スケーラブルな Massively Parallel Processing(MPP)アーキテクチャを採用して完全な並列計算を実現します。ベクトル化オペレーターにより CPU の計算能力を最大限に活用し、最適なクエリパフォーマンスを提供します。QE は主に HQE で構成されています。
-
PQE(Postgres Query Engine)
このエンジンは PostgreSQL との互換性を保ちながら拡張機能を提供します。PostGIS や PL/JAVA、PL/SQL、PL/Python などのユーザー定義関数(UDF)を含む、PostgreSQL エコシステムのさまざまな拡張コンポーネントをサポートします。HQE でまだサポートされていない一部の関数およびオペレーターは PQE で実行されます。各バージョンで継続的な最適化が行われており、最終的には PQE を非推奨にするのが目標です。
-
SQE(Seahawks Query Engine)
このエンジンは MaxCompute 実行エンジンとシームレスに接続し、MaxCompute へのネイティブアクセスを提供します。データを移行またはインポートすることなく、さまざまな MaxCompute ファイル形式やハッシュクラスタリングテーブル、レンジクラスタリングテーブルなどの複雑なテーブルに高パフォーマンスかつ完全互換でアクセスできます。これにより、ペタバイト規模のオフラインデータのインタラクティブ分析が可能になります。
-
-
ストレージエンジン(SE)
ストレージエンジン(SE)は、データの作成・読取・更新・削除(CRUD)操作を含む、データの管理および処理を担当します。