Alibaba Cloud ApsaraDB for PolarDB の利用を検討する際に知っておいた方が良い特徴と便利機能の紹介


インフラエンジニアの寺岡です。
今回はAlibaba Cloudのとあるサービスのお話です。

Alibaba Cloud、クラウドDB「ApsaraDB for PolarDB」など新サービスの国内提供を開始

Alibaba Cloudは20日、同社のパブリッククラウド「Alibaba Cloud」において、リレーショナルデータベース「ApsaraDB for PolarDB」を日本で提供開始することを発表した。

ついに来たか。。。

ということで今回は日本リージョンでもPolarDBをフル活用していきたいということで
実際にサービス用のDBとして活用していく上で便利な機能を紹介していきたいと思います!

ApsaraDB for PolarDBとは

前提としてPolarDBについて軽く触れたいと思います。
PolarDBはMySQL・PostgreSQL・Oracleと互換性のあるマネージド型のリレーショナルデータベースサービスです。
Alibabaが独自開発した次世代マネージド分散RDSと謳われており
高い性能とコストパフォーマンスを発揮することが可能です。

実際に利用してみてもわかるのですが
他社クラウドの対抗馬としてAWSのAuroraをかなり意識した作りになっており
インテル社のテストでは、「Amazon Aurora」と比較してQPSが約1.3倍に向上し
95パーセンタイルのレイテンシー(遅延)が約1.8倍に改善するという結果が出ているようです。※1

Auroraを意識しているとなると気になるのは特徴であったり差別化の部分ですよね。
比較する形でまとめてみたいと思います。

PolarDBの特徴とAuroraとの違い

アーキテクチャ

PolarDB・Aurora共に分散リレーショナルデータベースサービスと呼ばれています。
以下はPolerDBのアーキテクチャ図になりますが、大まかに分けて4つの概念があります。※2

Cluster

1台のPrimary NodeとN台のRead-Only Nodeをまとめた論理グループのようなもので
Clusterに対して作成時にクラスタエンドポイントと呼ばれるDNSレコードが自動で割り振られます。
このエンドポイントに対してアクセスすることでDBに対してSQLを発行することができます。

また、PolarDBのエンドポイントは読み取り/書き込み分離をサポートしています。※3

  • 書き込み要求:Primary Nodeに送信
  • 読み込み要求:各ノードの負荷に応じてプライマリノードまたは読み取り専用ノードに送信

といったように、内部で接続先のノードを自動で判断してくれます。
Auroraは書き込みと読み込みでエンドポイントが分かれていますが
PolarDBは1つのみで内部で適切に分散してくれるので便利ですね。

Primary Node

Cluster内に1台のみ存在する書き込み/読み込み両方を行えるノードです。
DBへの書き込み要求は基本このノードに対して実行されます。
Auroraにはマルチマスターの機能がありPrimary Nodeを複数台利用できますが
PolarDBにはその機能がないため現時点では書き込み要求を複数ノードへ分散させることが出来ません。

Read-Only Node

Cluster内に最大15台まで起動できる読み取り専用のノードです。
手動で増減させることも可能ですが、DAS(Database Autonomous Service)を活用することで
負荷状況に応じてスケールイン/アウトが可能です。※4
AutoScallの機能がある+最大15台まで起動可能はAuroraと同じなので
機能面でもかなり意識していることがわかりますね。

Chunk Server

PolarDB・Aurora共に各ノードのコンピューティング処理とストレージ処理が完全に分離されています。
PolarDBにおけるストレージ処理を担うのがChunk Serverと呼ばれているものです。
DBのデータはこのChunk Serverに保存されており、データの容量に合わせて
自動でストレージ容量を自動でスケールアップ/ダウンすることが可能です。
ストレージの自動スケールはAuroraにもありますが最大拡張容量が異なり
Auroraは最大64TBですが、PolarDBは最大100TBまで拡張可能です。

PolarDBの便利機能

実際に利用した中で便利だと思った機能をご紹介します。

DTSによるデータ移行支援

PolarDBを新規に利用する場合は考慮する必要はありませんが
既存サービスのDBから乗り換えたい場合は以下のことを考慮する必要が出てきます。

  • 既存DBのデータをどのように移行すれば良いか
  • PolarDBへの切り替え時のダウンタイムを減らすにはどうすれば良いか

このような時にPolarDBではDTS(Data Transmission Service)を利用することが可能なので
データ移行の導線が用意されているのはとても良いなと思います。※5

オンラインスケールアップ/ダウン

PolarDBはオンラインの状態でスケールアップ及びダウンを行うことが可能です。
Auroraの場合は一時的にノードを停止させる必要があるので最も差別化出来ている部分ではないでしょうか。

スペック変更時のダウンタイムが気になったので以下のようなテスト用のDBを作り

CERATE DATABASE TEST;
 CREATE TABLE test (
     column int(10) DEFAULT NULL
 ) ENGINE=InnoDB;

スペック変更時にupdateを1秒おきに発行し続けて確認してみました。

update test set column=unix_timestamp();

コンソール上は最大で30秒程度接続できなくなる旨のメッセージが出ますが
実際は変更作業が完了するまでの総時間は10分で、そのうちコネクションエラーが発生したのは10秒程度でした。

一方でAuroraはスペックを変更するときにノードを停止させる必要があるので
大凡5分〜10分のダウンタイムが発生してしまいます。
これを避けるために、一般的なプラクティスとしてAuroraでは
希望のスペックを選択した上で読み込み専用ノードを新しく追加し
そのノードを手動でフェイルオーバーさせて書き込みノードに昇格させることで
ダウンタイムを最小限に抑えるという対応を取ることが多いです。

フェイルオーバーで対応した場合でも体感ですが10秒以上はかかるので
PolarDBの方が確実に早いと思います。

10秒程度であればダウンタイムを許容するという選択肢が取れそうですね!

モニタリング項目の充実

PolarDBはデフォルトで確認できるメトリック(※6)が充実しています。
CPUなどのリソースだけでなくInnoDB周りのパフォーマンスメトリックも確認できるのでとても良いです。

Auroraの場合はパフォーマンスインサイトで同様のメトリックを確認できますが追加で料金がかかります。
PolarDBは料金ページ(※7)に記載がないので無料で使えそうです。

また、CloudMonitorを利用してアラートの設定をすることも可能です。
実はCloudMonitorも無料で利用できるんですよね、素晴らしい。。。!

まとめ

今回は運用目線で考えた場合のPolarDBの特徴と便利機能を紹介してみました。
実際に構築するときの手順などはこの記事の内容には含めていませんが
プロジェクトでの新規利用や、他のRDBから乗り換えるときに特徴や機能を把握しておく必要があるので
PolarDBの利用を検討している方のお力になれると嬉しいです。
また、私自身も今後のPolarDBのアップデートについてはウォッチしていきたいと思います。

出典

※1 https://www.intel.com/content/www/us/en/products/docs/storage/alibaba-cloud-polardb-solution-brief.html
※2 https://www.sbcloud.co.jp/entry/sol/polardb/
※3 https://www.alibabacloud.com/help/ja/doc-detail/68510.htm
※4 https://www.alibabacloud.com/help/doc-detail/169686.htm
※5 https://jp.alibabacloud.com/product/data-transmission-service
※6 https://www.alibabacloud.com/help/ja/doc-detail/68555.htm
※7 https://www.alibabacloud.com/help/ja/doc-detail/68498.htm


この記事をかいた人

About the author

寺岡佑樹

2016年新卒入社、現在5年目。
SREとして、社内の運用業務の仕組みの検討・実装をしつつ
社外で技術的な登壇を行うエバンジェリスト的な側面も持つ。

・GitHub
https://github.com/nezumisannn

・登壇経歴
https://github.com/nezumisannn/my-profile

・発表資料(SpeakerDeck)
https://speakerdeck.com/nezumisannn