ApsaraDB RDS for PostgreSQL インスタンスで複雑なレポートや分析クエリを実行すると、大量のリソースを消費し、コアビジネスのパフォーマンスと安定性に影響を与える可能性があります。これを解決するために、ApsaraDB RDS for PostgreSQL は DuckDB 分析インスタンスを提供します。このインスタンスは分析ワークロードに特化しており、読み書き分離用の専用ノードを使用し、分析処理 (AP) ワークロードをオンライントランザクション処理 (TP) ワークロードから分離します。このアプローチにより、プライマリインスタンスのパフォーマンスに影響を与えることなく、複雑なクエリの効率が大幅に向上します。
機能
DuckDB 分析インスタンスは、分析クエリ専用の特殊な読み取り専用インスタンスです。次の機能を提供します。
-
読み書き分離とワークロードの分離:専用ノードとして動作し、リソースを大量に消費する分析クエリを、プライマリインスタンス上のトランザクションワークロードから分離します。これにより、コアビジネスのパフォーマンスと安定性が影響を受けないようにします。
-
ゼロ ETL によるリアルタイムなカラムナ変換:物理レプリケーションと論理サブスクリプションを使用して、プライマリインスタンスからのデータをほぼリアルタイムで同期し、カラムナストレージ形式に自動変換します。また、データベースごとに同期ポリシーを設定できます。
-
行ストアとカラムナストレージのハイブリッド:行ストアのコピー (元の形式) と、カラムナストレージのコピー (分析形式) の両方を保持します。カラムナアクセラレーションはデフォルトで有効になっており、複雑な分析クエリをカラムナエンジンにルーティングします。カラムナエンジンでクエリを処理できない場合、互換性のためにシステムが自動的に行ストアエンジンへフォールバックします。また、行ストアの圧縮もサポートします。
前提条件
ApsaraDB RDS for PostgreSQL のプライマリインスタンスは、次の要件を満たしている必要があります。
-
インスタンスのステータス:実行中。
-
メジャーエンジンバージョン:ApsaraDB RDS for PostgreSQL 16.0 以降。
-
Edition:High-availability Edition。
-
課金方法:サブスクリプションまたは従量課金。
-
マイナーエンジンバージョン:20260130 以降。
-
次の インスタンスパラメーター が設定されていること:
wal_levelパラメーターがlogicalに設定されていること、shared_preload_librariesにrds_duckdbが含まれていること、hot_standby_feedbackがonに設定されていること、さらにmax_replication_slots、max_worker_processes、max_wal_sendersが1024以上であること。 -
インスタンスがディザスタリカバリインスタンスではないこと。
課金
DuckDB 分析インスタンスの課金は、標準の読み取り専用インスタンスと同じです。料金は、Edition、インスタンスタイプ、ストレージタイプ、ストレージ容量などの要因によって異なります。最終的な価格は購入ページに表示されます。
注意事項
-
DuckDB 分析インスタンスを作成した後は、プライマリインスタンス上の関連する パラメーター を変更しないでください。
-
同一のプライマリインスタンスに対して複数の DuckDB 分析インスタンスを作成した場合、どのデータベースで自動の行→列変換を有効にするかなどのカラムナストレージ設定は、すべての分析インスタンスに適用されます。
-
プライマリインスタンスですでに rds_duckdb 拡張機能によるカラムナアクセラレーションを使用している場合は、DuckDB 分析インスタンスを作成した後に、プライマリインスタンス側でこの機能を無効にして、ワークロードを完全に分離してください。
-
クエリの互換性を確保するため、DuckDB 分析インスタンスはデータを行ストア形式でも保持します。この行ストアデータは圧縮して、ストレージコストを削減できます。
DuckDB 分析インスタンスの作成
-
ApsaraDB RDS コンソール にログインします。上部メニューでリージョンを選択し、対象インスタンスの ID をクリックします。
-
[基本情報] ページで、[インスタンス配布] セクションの [DuckDB ベースの分析インスタンス] の右にある [追加] をクリックします。

-
事前チェックが自動的に実行されます。事前チェックが成功すると、[確認して有効化] をクリックします。
事前チェックが失敗した場合、[ワンクリック修正] をクリックし、修正する時間を選択します。システムが必要な依存関係を自動的に設定します。修正が完了したら、[DuckDB ベースの分析インスタンス] の右側にある [追加] を再度クリックして事前チェックページに戻ります。次に、[確認して有効化] をクリックします。
重要インスタンスのメジャーエンジンバージョンが要件を満たしていない場合は、手動で メジャーエンジンバージョンをアップグレード する必要があります。
-
DuckDB 分析インスタンスのパラメーターを設定します。
パラメーター
説明
[課金方法]
-
[サブスクリプション]:長期利用に適しています (一括払い)。
-
[従量課金]:短期利用に適しています (時間単位の課金)。要件を満たすことを確認するために、まず従量課金の DuckDB 分析インスタンスを作成し、その後サブスクリプションに変更できます。
[エディション]
-
[ベーシックエディション]:単一ノードの DuckDB 分析インスタンスです。コスト効率が高く、学習またはテストに適しています。障害復旧と再起動には時間がかかります。
-
[高可用性エディション] (デフォルト):プライマリノードとセカンダリノードを含み、DuckDB 分析インスタンスの高可用性を実現します。本番環境に適しており、ほとんどのシナリオで推奨します。
説明[エディション] を選択した場合は、プライマリノードのゾーン、デプロイタイプ (マルチ AZ 配置またはシングル AZ 配置)、およびセカンダリノードのゾーンも指定する必要があります。
[アーキテクチャ]
[Standard Edition] のみがサポートされています。
詳細については、「製品タイプ」をご参照ください。
[ゾーン]
ゾーンは、リージョン内の独立した物理エリアです。同一リージョン内のゾーンは機能的に同一です。マルチ AZ 配置は、シングル AZ 配置とは異なり、ゾーンレベルのディザスタリカバリを実現します。
[インスタンスタイプ]
[専用] インスタンスタイプのみがサポートされています。利用可能な仕様は、 ApsaraDB RDS for PostgreSQL 読み取り専用インスタンスのインスタンスタイプ と同じです。
[容量]
ストレージ容量には、データ、システムファイル、先行書き込みログ (WAL) ファイル、トランザクションファイルの領域が含まれます。ストレージ容量調整の最小増分は 5 GB です。
説明DuckDB 分析インスタンスのストレージ容量は、プライマリインスタンスのストレージ容量以上である必要があります。各インスタンスタイプのストレージ容量については、 ApsaraDB RDS for PostgreSQL 読み取り専用インスタンスのインスタンスタイプ をご参照ください。
-
-
[次へ: インスタンス設定] をクリックし、次のパラメーターを設定します。
パラメーター
説明
[ネットワークタイプ]
デフォルト値は、プライマリインスタンスと同じネットワークタイプ、[VPC]、およびプライマリノードの VSwitch です。
[インスタンスリリース保護]
[請求方法] が従量課金の場合、インスタンスの インスタンスリリース保護 を有効にすることで、インスタンスが誤って解放されるのを防ぐことができます。 詳細については、「リリース保護の有効化または無効化」をご参照ください。
[リソースグループ]
デフォルトではプライマリインスタンスのリソースグループと同じであり、変更できません。
[タイムゾーン]
デフォルトでは、プライマリインスタンスのタイムゾーンと同じです。
[SLR Authorization]
設定は不要です。プライマリインスタンスの購入時に権限が付与されています。
[インスタンス名]
識別しやすいようにインスタンスの名前を設定します。
-
[次へ: 注文の確認] をクリックします。
-
[パラメーター設定]を確認し、サブスクリプションプランを選択した場合は[数量]と[サブスクリプション期間]を選択し、[注文の確定]をクリックして支払いを完了します。
カラムナストレージの設定
分析クエリを高速化するため、DuckDB 分析インスタンスではカラムナストレージを使用します。そのためには、プライマリインスタンスの行ストア形式のデータを最初に変換する必要があります。
ビジネス要件とリソース状況に応じて、単一テーブルをオンデマンドで変換するか、データベース全体を自動変換できます。
前提条件
開始する前に、ApsaraDB RDS for PostgreSQL のプライマリインスタンスが次の要件を満たしていることを確認してください。
-
DuckDB 分析インスタンス が作成されており、ステータスが実行中であること。
-
特権アカウント が作成されていること。
-
対象データベースに少なくとも 1 つのテーブルが含まれていること。
注意事項
-
カラムナストレージデータの生成には追加のストレージ領域が必要で、通常は元データ容量の 20%~50% を消費します。DuckDB 分析インスタンスに十分なストレージの空き容量があることを確認してください。
-
大規模なデータベースでは、データベース全体の変換に時間がかかる場合があります。変換時間は、ディスク帯域幅やメモリなど、インスタンスの仕様などの要因によって異なります。
方法 1:テーブルのオンデマンド変換
この方法では、指定したテーブルをカラムナストレージに変換します。低速な SQL クエリのピンポイント最適化 (クエリに含まれるテーブルを変換) や、分析インスタンスのリソースが限られている場合のストレージ節約に適しています。変換されていないテーブルがクエリに含まれる場合、互換性を維持するためにシステムは自動的に行ストアエンジンにフォールバックします。
手順
ApsaraDB RDS for PostgreSQL のプライマリインスタンスに接続し、対象データベースで次の SQL 文を実行します。
-- rds_duckdb 拡張機能が存在しない場合は作成します。
CREATE EXTENSION IF NOT EXISTS rds_duckdb;-- 指定したテーブルをカラムナストレージ形式に変換します。
SELECT rds_duckdb.create_duckdb_table('your_table_name');
方法 2:データベース全体の変換
この方法では、コンソールを使用して、指定したデータベース内の既存のすべてのテーブルをカラムナストレージ形式に自動変換します。データベース全体の包括的な分析が必要なシナリオに適しています。
このプロセスでは、後から追加されたテーブルは自動変換されません。新しいテーブルはコンソールで再設定する必要があります。
-
ApsaraDB RDS コンソールにログインします。 左側のナビゲーションペインで、インスタンス をクリックします。 上部のナビゲーションバーで、リージョンを選択します。
-
インスタンスリストで、 (
アイコンで示される) プライマリインスタンスを見つけ、ドロップダウンリストを展開します。 -
DuckDB 分析インスタンスの ID をクリックします。

-
左側のナビゲーションペインで、[データベース管理] をクリックします。
-
[データベース管理] ページで、カラムナストレージに自動変換するデータベースのチェックボックスを選択し、[一括カラムナストレージ設定] をクリックします。
-
表示されるダイアログボックスで、[OK] をクリックします。