Beam は、行指向の Delta ストアと PAX 構造の列指向 Base ストアを組み合わせた統合ストレージ設計を採用しており、同時実行性の高い OLTP ワークロードとバッチ書き込みまたは大規模 OLAP スキャンの両方を単一のエンジンで処理します。
Beam は、PostgreSQL 12 のテーブルアクセスメソッドをベースに構築された、AnalyticDB for PostgreSQL の次世代ストレージエンジンです。
Beam は、次の 2 つの部分で構成されています。
-
Delta:リアルタイム書き込み用の行指向形式。
-
Base:バッチ書き込みおよび大規模スキャンシナリオ用の PAX 構造の列指向形式。
ヒープテーブルと比較して、Beam はディスク I/O を大幅に削減し、分析クエリのパフォーマンスを向上させます。また、プライマリキー、書き込みの重複排除、同時更新および削除操作をサポートしており、Data Transmission Service (DTS) を介した直接的なデータ同期を実現します。Beam は、単一のストレージコピーでトランザクション処理 (TP) と分析処理 (AP) の両方のワークロードに対応するため、行指向エンジンと列指向エンジンを個別に用意する必要がありません。
注意事項
-
Beam ストレージエンジンは、v7.0.x のインスタンスでは、Serverless モードでのみサポートされています。
-
Beam はパブリックプレビューを終了し、Serverless モードのバージョン v7.0.6.2 で正式にリリースされました。このバージョンには、パブリックプレビュー期間中の修正が含まれています。できるだけ早く v7.0.6.2 以降にアップグレードしてください。
Beam の機能
高性能なリアルタイム書き込み
Beam ストレージは、行指向 Delta ストアと PAX 構造の列指向 Base ストアで構成されています。Beam は、書き込み方法に基づいてデータを適切なストアに自動的にルーティングします。INSERT INTO VALUES などのリアルタイムストリーミング方式で書き込まれたデータは Delta ストアに格納され、ヒープテーブルに匹敵する書き込みパフォーマンスを実現します。
高スループットなバッチインポート
COPY や INSERT INTO SELECT などのバッチ方式で書き込まれたデータは、列指向 Base ストアに直接格納され、より高いスループットと優れた書き込みパフォーマンスを実現します。
高性能な AP クエリ
Beam は、次の方法で分析クエリのパフォーマンスを最適化します。
-
列プルーニング
-
複数の圧縮アルゴリズムのサポート
-
Zonemap フィルタリングのサポート
-
I/O プリフェッチのサポート
これらの方法により、クエリ中のディスク I/O を削減して I/O 使用率を向上させ、分析クエリのパフォーマンスを大幅に向上させます。
プライマリキーと書き込みの重複排除のサポート
Beam は、PostgreSQL ネイティブのプライマリキーを完全に実装しています。ヒープテーブルと同様に、Beam テーブルにプライマリキーインデックスを作成してデータの重複排除を有効にすることができます。Beam は UPSERT 構文もサポートしています。
DTS 同期のサポート
プライマリキーのサポートにより、Beam テーブルはヒープテーブルと同様に DTS データ同期パイプラインで動作します。DTS タスクのターゲットとして Beam テーブルを設定することで、より優れたクエリパフォーマンスを実現し、行指向テーブルと列指向テーブル間の追加の同期を不要にします。
関連ドキュメント
-
Beam ストレージエンジンの使用方法については、「Beam の使用」をご参照ください。
-
Beam は、複数の圧縮アルゴリズムをサポートしています。辞書エンコーディングは、文字列データを整数データに圧縮することで、ストレージ効率を向上させ、フィルタリングおよび集計クエリを高速化します。詳細については、「辞書エンコーディング」をご参照ください。
-
特定の列に対して範囲クエリまたは等価フィルターを頻繁に実行する場合は、Beam ソートキーを指定してクエリパフォーマンスを向上させることができます。詳細については、「Beam ソートキーの最適化 (V7.0)」をご参照ください。