クラスメソッド株式会社主催の DevelopersIO 2022 で登壇した資料です。 https://classmethod.jp/m/developers-io/
話題の AlloyDB は 本当に凄いデータベースなので プレビューを使い倒した アライアンス統括部 大栗宗
View Slide
2Disclaimer本資料は 2022 年 6月時点での情報です。AlloyDB for PostgreSQL は資料作成時点でプレビューです。一般提供時の仕様とは異なる可能性があります。パフォーマンスについての言及をしていますが、ベンチマーク等の具体的な数値結果の公表は行いません。
3自己紹介大栗 宗(@maroon1st)アライアンス統括部某SIer → クラスメソッド →某外資 → クラスメソッド(2 回目)現在のクラメソ歴は半年(累計 6 年)です!パートナー様のサービスをメインに取り扱っています。ウィスキー、シガー、パイプをこよなく愛してます。Cloudflare, Google Cloud, AWS, etc
4AlloyDB の前にGoogle Cloud のデータベースの振り返りから
サードパーティデータベース Google 独自実装のデータベース5Google Cloud のマネージドデータベースCloud BigtableCloud SQL Cloud SpannerMemorystore Cloud Firestoreインメモリ リレーショナル ドキュメント ワイドカラムRedisMemcachedMySQLPostgreSQLSQL Server
6Google Cloud の RDBMSOSS が主体の Cloud SQL と NewSQL である Cloud Spanner• OSS DB には豊富な実績とエコシステムがあるが、商用製品の機能性と差がある。• Cloud Spanner は極めて高い可用性で書き込みスケール可能だが、NewSQL 独自のチューニングが必要。• ユーザーは OSS DB のエコシステムと共に商用グレードのパフォーマンスや機能性を求めている。Cloud SQL Cloud Spanner
サードパーティデータベース Google 独自実装のデータベース7Google Cloud のマネージドデータベースCloud BigtableCloud SQL Cloud SpannerMemorystore Cloud Firestoreインメモリ リレーショナル ドキュメント ワイドカラムRedisMemcachedMySQLPostgreSQLSQL ServerAlloyDBPostgreSQL
8AlloyDB for PostgreSQLPostgreSQL と互換性を持つフルマネージド型のエンタープライズワークロードのためのデータベースサービス• 人気のある OSS DB である PostgreSQL• クラウドネイティブアーキテクチャ• Google の専門のエンジニアチーム• AI/ML の DNA
Read PoolRead Pool9AlloyDB の全体概要Cluster● AlloyDB のリソース管理単位で拡張するストレージを含むPrimary Instance● 読み書きを行うインスタンスFailover Replica● Primary Instance のフェイルオーバー先Read Pool● 読み取り専用のインスタンス群でプールごとに固定 IP を持つRegional Storage LayerFailover ReplicaUltra-fast CacheColumnar EngineOptimized PostgreSQLPrimary InstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLWrite / Read IPRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead IPRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead PoolInstanceUltra-fast CacheColumnar EngineOptimized PostgreSQLRead IP
10AlloyDB for PostgreSQLAlloyDB の特徴1. 優れたパフォーマンスと拡張性2. 業界トップクラスの可用性3. リアルタイムのビジネスインサイト4. 予測しやすく明朗な価格設定5. 機械学習による管理とインサイト
11AlloyDB for PostgreSQL の優れたパフォーマンス標準的な PostgreSQL と比較して 4 倍、競合の類似サービスと比較して 2 倍のトランザクションを処理→ インデリジェントなストレージ標準的な PostgreSQL と比較して分析クエリが最大 100 倍高速→ カラム型エンジン
12インテリジェントなストレージWALPrimary Read PoolUltra-fast Cache Ultra-fast CacheBuffer Cache Buffer CacheLPS LPS LPS LPS LPSOptimized PostgreSQL Optimized PostgreSQLregional block storage分散ファイルシステム - Colossusregional log storageWAL 書き込みDB エンジンと分離したストレージシステム● WAL 書き込みだけで済み DirtyPage の書き込み不要● log processing service (LPS) が実体化したブロックを書く● 読み込み時は各レイヤーのキャッシュと LPS のアクセス● ホットデータは LPS がスケールして対応するシャードの再割り当て読み込み 読み込み
13カラム型エンジン分析クエリのためにカラム型データをオンメモリで保持● トランザクション向けな行形式を分析向けの列形式へ自動変換● AI/ML によりワークロードを学習して適切な列やテーブルを選択● クエリプランナーが適切なフォーマットのデータを判断する● (私見) メモリから大幅に溢れる量のデータの場合は BigQuery などの分析専用サービスを併用Primary or Read PoolUltra-fast CacheScale Out AlloyDB StorageカラムナフォーマットAI/ML により列形式へ自動変換行形式クエリハイブリッドスキャンDRAM
14OLTP と OLAP のワークロードOLTP と OLAP の両方のワークロードをサポートするハイブリッドトランザクション/分析処理(HTAP)● Oracle Exadata● SAP HANA● IBM Db2 with BLU Acceleration● Oracle MySQL HeatWave● PingCAP TiDB● Snowflake Unistore→ ハードウェア/ソフトウェア全てフラッグシップ→ オンメモリ DB でカラム型データ→ OLTP にカラム型キャッシュ→ OLTP にカラム型キャッシュ→ OLAP が行型ストレージエンジンを追加→ 行型と列型のデータを同時に持つ NewSQL
15トランザクションワークロード(OLTP)の傾向ワークロードの前提● クラスタタイプ:高可用性● AlloyDB マシンタイプ:8 vCPU, 64 GB○ パラメータ類:フラグやパラメータは全てデフォルト● 使用ツール:HammerDB 4.4○ TPROC-C:TPC-C ライクで倉庫の在庫管理を模したもの○ warehouse:2000● 参考:HammerDB で RDBMS のベンチマークを取ってみる(PostgreSQL編)https://dev.classmethod.jp/articles/benchmarking-postgresql-with-hammerdb/
16ここでもう一度 Disclaimer本資料は 2022 年 6月時点での情報です。AlloyDB for PostgreSQL は資料作成時点でプレビューです。一般提供時の仕様とは異なる可能性があります。パフォーマンスについての言及をしていますが、ベンチマーク等の具体的な数値結果の公表は行いません。
17OLTP の傾向(スループット)● 極めて良好なパフォーマンスを発揮する● 高多重度の負荷ではパフォーマンスの落ち込みが顕著● 現在プレビューのため 、GA 時に高負荷時のパフォーマンス改善を期待実行ユーザー数
18OLTP の傾向(レイテンシ)● レイテンシの中央値は高負荷でも低いまま● 通常のレイテンシは低いが高負荷時にばらつきが大きくなる● 現在プレビューのため 、GA 時に高負荷時の安定性を期待
19OLTP の傾向(スループット)● Read Pool へ WAL 配布を行う負荷が発生するはず● Read Pool を1台構成すると12〜14%程度のスループットの低下が見られた● Read Pool を2台構成すると15〜22%程度のスループットの低下実行ユーザー数
20分析クエリ(OLAP)の傾向ワークロードの前提● クラスタタイプ:高可用性● AlloyDB マシンタイプ:16 vCPU, 128 GB○ パラメータ類:フラグやパラメータはカラム型エンジンのレコメンド以外は全てデフォルト● 使用ツール:HammerDB 4.4○ TPROC-H:TPC-H ライクで意思決定支援ベンチマーク○ pg_scale_fact:30 ( 62 GB 程度 )
21OLAP の傾向(比較内容)AI/ML により列形式への変換を自動で実施するため既存のクエリ内容で結果が変化パラメータは全てデフォルトかカラム型エンジンの推奨値(手動のチューニングは無し)Primary or Read PoolUltra-fast CacheScale Out AlloyDB StorageカラムナフォーマットAI/ML により列形式へ自動変換行形式クエリハイブリッドスキャンDRAM
22OLAP の傾向(比較内容)以下の状態で実行した時のレイテンシを比較● カラム型エンジンを無効にした AlloyDB● TPROC-H を 5 回実施した統計情報を元にしたカラム型エンジンの推奨値を設定した AlloyDB『最大 100 倍高速』とは比較前提が異なります
23OLAP の傾向(レイテンシ)分析クエリの種類によりレイテンシの変化は異なるが最大で 27.5 倍の高速なクエリがあり、それ以外は概ね120 〜 240 % の高速な結果
24カラム型エンジンを使うクエリの実行計画多数のデータをスキャンする箇所でカラム型エンジンFinalize Aggregate (cost=37819.99..37820.00 rows=1 width=32)-> Gather (cost=37819.77..37819.98 rows=2 width=32)Workers Planned: 2-> Partial Aggregate (cost=36819.77..36819.78 rows=1 width=32)-> Parallel Append (cost=0.00..29316.32 rows=1500690 width=12)-> Parallel Custom Scan (columnar scan) on lineitem (cost=20.00..29312.31 rows=1500689 width=12)Filter: ((l_shipdate >= '1996-01-01'::date) AND (l_shipdate < '1997-01-01 00:00:00'::timestamp withouttime zone) AND (l_discount >= 0.06) AND (l_discount <= 0.08) AND (l_quantity < '25'::numeric))CU quals: ((l_shipdate >= '1996-01-01'::date) AND (l_discount >= 0.06) AND (l_quantity <'25'::numeric) AND (l_shipdate < '1997-01-01 00:00:00'::timestamp without time zone) AND (l_discount <= 0.08))Columnar cache search mode: native-> Parallel Seq Scan on lineitem (cost=0.00..4.01 rows=1 width=12)Filter: ((l_shipdate >= '1996-01-01'::date) AND (l_shipdate < '1997-01-01 00:00:00'::timestamp withouttime zone) AND (l_discount >= 0.06) AND (l_discount <= 0.08) AND (l_quantity < '25'::numeric))
25カラム型エンジンAlloyDB は Query Insights に対応しているのでクエリプランを直感的に把握可能● 最も多い行数と大きいコストがかかる箇所でカラム型エンジンを利用している
26まとめ● AlloyDB は PostgreSQL と互換性を持つフルマネージド型のエンタープライズワークロードに対応するデータベースサービス● インテリジェントなストレージで高速化と高可用性● 内容次第だがカラム型エンジンで分析クエリを高速に● 現在プレビューなので GA までにアップデートを期待● プレビュー中は無料で利用できるため自分のワークロードに合うか検証を気軽に行える