HTAPデータべースとは
HTAPデータベースとは、データベースのHybrid Transactional and Analytical Processing略で、OLTP(オンライントランザクション処理)とOLAP(オンライン分析処理)の両方のワークロードを同時に処理するハイブリットなデータベースのことです。
これにより、データ分析のためのデータ移行の煩わしさや時間のロスを回避することができ、例えばリアルタイムデータを利用したマーケティングなどが可能となります。
これまで、OLTPと OLAPのデータベースは、それぞれ行指向型と列指向型のデータベースによって別々に管理することが一般的でした。
両者はレイテンシー、スループット、高水準の同時実行処理と厳密な整合性などで求めらえる要件が異なっていたからです。
現在、HTAPデータベースは、Google CloudのAlloyDBやOSSのTiDBなどが有名です。
AlloyDBについて詳しく説明します。
AlloyDBとは
AlloyDBは、Google Cloudが提供するHTAPデータベースで、PostgreSQL互換で、標準のPostgreSQLに比べて最大で4倍のスループット、100倍高速のレイテンシ、99.99%の高可用性を兼ね備えています。利用料金はCPU、メモリ、ストレージの利用量に応じたシンプルな従量課金制になっています。
AlloyDBの構造
AlloyDBは、コンピューティングレイヤとストレージレイヤで分離されてます。
コンピューティングレイヤ
コンピューティングレイヤは、フェイルオーバーを備えたプライマリーとレプリカインスタンスで構成されています。レプリカインスタンスは線形に水平スケールが可能です。
プライマリーインスタンスは、書き込みSQLを受け取ると、データ構造とインデックス構造をインメモリで更新し、先行書き込みログ(WAL)を作成します。commitされるとWALログレコードをストレージレイヤに連携し、書き込み処理の多くのオペレーションをストレージレイヤにオフロードすることで、高速性を実現してます。
また、プライマリーインスタンスからレプリカインスタンスに WALをストリーミングし、各インスタンスのローカルキャッシュを最新に保っています。
ストレージレイヤ
ストレージレイヤでも、コンピューティングとストレージの分離が行われ、低レイテンシーのリージョナルログストレージ、ログ処理サービス(LPS)、シャーディング済みリージョンブロックストレージで構成されています。
データの書き込み
まずプライマリインスタンスから低レイテンシのリージョンログストアにWALが反映されます。
次にLPSが非同期的にWALを取り出し、最新のデータベースブロックを作成し、ブロックストレージに取り込むことで、トランザクションの永続性を確保します。
また、ブロックはコンピューティングレイヤの各インスタンスに戻され、キャッシュの更新などに利用されます。
データの参照
コンピューティングレイヤの任意のインスタンスに参照SQLが届くと、インスタンス内のバッファーキャッシュに必要なブロックが存在するか確認します。そこに無ければ、超高速ブロックキャッシュを確認します。
インスタンス内に必要なブロックが存在しなければ、ストレージレイヤに問い合わせし、LPSのバッファーキャッシュを確認、そこに無ければブロックストレージから取得します。
HTAPの実現
AlloyDBのカラム型エンジンを有効にすると、機械学習と分析モデルを活用しながら、カラム型テーブルと列をインテリジェントに自動で決定し、メモリに保持されます。 また、実行されるクエリオペレーションに基づき、最適な形式とメタデータが決定されます。Googleのパフォーマンス試験にて、分析クエリに対して標準のPostgreSQLに比べ、最大100倍速い性能を記録しました。
クエリプランナーは、カラム型実行プランと行ベースの実行プランの使い分けをします。これにより、管理オーバーヘッドを最小限に抑えながら、さまざまなクエリに対して優れたパフォーマンスを提供できます。
Google Cloud Next'23で発表された新機能
AlloyDB AI(プレビュー)
簡単なSQL関数を使用して、データのエンベディングをし、標準のPostgreSQLに比べ最大10倍高速にベクトルクエリを実行することができます。
AlloyDB omni(プレビュー)
オンプレ、ノートパソコン、クラウドなど、どこでも実行できるように設計されたAlloyDBのダウンロード版です。