AlloyDBのPrivate previewに参加し、Google I/Oでコメントが引用されました

こんにちは、エンジニアの oga です。

5/12(日本時間)にGoogle I/Oで AlloyDB と呼ばれる新しいデータベースプロダクトがアナウンスされました。
アナウンスブログ: AlloyDB for PostgreSQL を発表:高額なレガシー データベースからの解放 | Google Cloud Blog

PLAIDでは、Private previewの段階で紹介をして頂き非常に興味深いものだったのでpreviewに参加して検証を行なっていて、以下の様なコメントを寄稿させて頂きました。
alloydb_plaid_quote.png
Introducing AlloyDB, a PostgreSQL-compatible cloud database service より引用

以下和訳

「PLAID では CX (顧客体験) プラットフォーム KARTE を企業向けに開発・提供しています。KARTE は膨大な行動ログから深い洞察を得る先進的なリアルタイム分析機能を持ち、顧客に合わせた最適なコミュニケーションを可能にしています。AlloyDB は PostgreSQL と完全互換であり、透過的に列方向処理を行うことができます。私たちはこれが新しく強力なオプションであると捉えており、OLTP・OLAP・HTAP と分断されたワークロードを統合したシステムデザインを最小限の追加知識で実現する、ユニークな技術的アプローチであると考えています。将来的には Google Cloud の他の強力なデータベース サービスとの連携も強化され、私たちのKARTEが提供する分析機能において、より優れたパフォーマンス、スケーラビリティ、拡張性をもたらすことを期待しています。」

この記事では、AlloyDBの特徴とPLAIDで今後どの様に使っていきたいかをご紹介します。



はじめに

AlloyDBはPreviewフェーズである為、今後の機能追加や仕様変更も多く発生すると思われます。
この記事では、現時点の仕様情報とそれに基づく見解を記載しています。
最新の情報は必ずGCPの公式ドキュメントをご確認下さい。

AlloyDBの特徴

  • PostgreSQLとの完全互換
  • 高パフォーマンス
  • columnar engine(高速なOLAP)
  • 柔軟で高い可用性を持った構成
  • 機械学習による自動化されたリソース管理
  • シンプルな料金体系

PostgreSQLとの完全互換

文字通り、PostgreSQLを使用するアプリケーションやエコシステムはAlloyDBで変更する必要無くそのまま適用することができます。
弊社ではそういったアプリケーションは無かったものの、検証においてCLI,GUIツールなど今まで培われてきたPostgreSQLのものをそのまま使用でき、
開発や運用に関わるベストプラクティスも大部分は同じ様に適用できそうなので非常に効率良く移行ができると感じました。

サポートされるパラメータや拡張は決まっている為、既存のPostgreSQLインスタンスを移行する場合や実現したい機能に必要な拡張があるかは事前に以下のドキュメントで確認することができます。

マイグレーションに関しては、Database Migration Serviceでサポートされることになると思われます。また、異なるDBを使用しているなど複雑で支援が必要な場合ではDatabase Migration Programで移行支援も受ける事ができます。

高パフォーマンス

パフォーマンス面は大きく優位性があるとのことで、標準のPostgreSQLと比較してOLTPが4倍、OLAPでは100倍のパフォーマンスであると発表されています。

OLTP OLAP
alloydb_4x.png alloydb_100x.png

Introducing AlloyDB, a PostgreSQL-compatible cloud database service より引用

PostgreSQLと互換性を保ちながら、内部のストレージやキャッシュシステム等は独自的なものに変更されている様です。
特にストレージについては別のブログポストで解説されていますが、ストレージを分離することでストレージのスケーラビリティを向上させつつI/Oによるブロック時間を極力低減させる構造を作り、トランザクション処理の高速化やレプリケーションの低遅延などを実現している様です。
AlloyDB for PostgreSQL intelligent scalable storage | Google Cloud Blog

実際にはそれぞれのワークロードの特性やコストバランスに依るところが大きいにしても、
既に運用しているPostgreSQLをそのまま置き換えることを検証する価値はあると感じます。

columnar engine(高速なOLAP)

alloydb_columnar_engine.png
Introducing AlloyDB, a PostgreSQL-compatible cloud database service より引用

PLAIDでも最も注目し検証している機能が、このcolumnar engineです。
OLAPの100倍高速化、という特徴はこのcolumnar engineにより実現されています。

本来行指向データベースであるPostgreSQLに列指向データベースとしての特性を透過的に加えることができ、セットアップを行うとインメモリ上でカラムデータを保持する様になり、クエリ側は特殊な記法などは無く列指向のスキャンが行えるかは内部で自動判断されます。
また、完全にcolumnar engineで列指向スキャンされるカラムに対してはindexが不要になる為、削除することで負荷削減に繋がります。

インメモリに対してどのテーブルのどのカラムを保持するべきか、実行されたクエリに基づき判断するレコメンデーション機能が用意されているので、既存のデータとワークロードを移行しつつ、強く意識せずにOLAP処理を高速化するという導入の仕方も可能かと思います。(弊社では検証の特性上、手動での管理で行なっていました)

列指向はより巨大なデータを扱うDWHで特に採用されることが多く、大量データの分析処理に適しています。
つまりAlloyDBで従来の行指向データベースとしての適所であるOLTPのワークロードをカバーしつつ、
列指向の特性を加えてOLAPのワークロードも同データベースでカバーできる可能性があるということです。
マスターとして使用するRDBMSから主にデータ分析用途などでDWHにデータをロードするという流れは良くに行われていると思いますが、
統合されたシンプルなアーキテクチャを実現しつつ同時に高速化を狙う選択肢が持てるのは魅力的です。

柔軟で高い可用性を持った構成

AlloyDBではClusterという単位毎に1つのPrimaryとオプショナルで複数のRead poolインスタンスを構成することができます。
adb-resource-tree.png
Hierarchical resource structure より引用

PrimaryはHAを選択すれば自動フェイルオーバーするStand-byが構成されます。
Read poolは読み取り専用のレプリカとして使用でき、特にリソースを多く使う分析クエリはRead pool側に流すという構成を取ることで書き込み処理に影響を与えず処理を載せることができます。複数構成することができるので、例えば負荷特性の異なる機能に応じてRead poolを分け、マシンスペックやノード数、パラメータをそれぞれで調整するといったことも簡単に行えます。
ただし、Read poolは非常に短時間ながらPrimaryに対してラグがある為、完全な一貫性が必要で無い機能で使用することになります。

機械学習による自動化されたリソース管理

alloydb_autopilot.png
Introducing AlloyDB, a PostgreSQL-compatible cloud database service より引用

詳細な仕様についてはまだ情報が無い様ですがコストやパフォーマンスに関わるDB管理の自動化が行われる機能があり、経験値と手間が必要なベーシックなチューニング作業は任せることもできそうです。

シンプルな料金体系

https://cloud.google.com/alloydb/pricing

現状は非常にシンプルで、CPU・メモリ/ストレージ/NWによりテーブルが決まります。NWはEgressのみが課金です。
プレビュー期間中はFair Usage Limitsに基づき無料で試すことができます。

PLAIDで行なっていた検証と今後どの様に使っていきたいか

上記の通りAlloyDBはPostgreSQLとの完全な互換性があり、すでにPostgreSQLを使用しているアプリケーションを変更すること無く移行が可能なことが特徴の一つですが、弊社では既存システムで使っている訳では無いので、分かりやすい検証事例はまだありません。

PLAIDでは OLTP/HTAP/OLAP 様々なデータ処理においてBigtableやSpanner、BigQueryといったGoogle Cloudのデータベースプロダクトを使い倒していますが(ご参考)、
その上でもcolumnar engineをはじめとしてして分析機能での活用で大きなパフォーマンス改善につながるポテンシャルを持っていると考え特にOLAPの拡張の観点を中心に検証を行なっています。

その為、上に挙げた様な他のGoogle Cloudのデータベースとのインテグレーション機能の追加にも強く期待しており、今後の機能拡張もウォッチしながら引き続き検証を進めていく予定ですので、また折々でご紹介できればと思います。

最後に

弊社では KARTE をはじめ、事業においてデータを中心におき展開しています。
より大量のデータを、より早く、柔軟に処理する為に様々なデータベースを活用しており、今後もよりもっと多くのデータベースを試し導入しながら良いプロダクトを作っていきたいと考えています。
データベースが好きな方にとってはとても楽しい環境だと思うので、ぜひ興味のある方は弊社採用ページ または Wantedly からお気軽にご連絡ください!