MySQL HeatWave on AWS という分析DBの選択

最近健康診断から人間ドックにランクアップした、潮です。

普段AWSのデータベース系サービス、特にAmazon RDSやAmazon Aurora等のRDB系のサービスを中心に検証や構築、チューニング等々しています。

今回はちょっと変わったDBとして、Oracle社がAWS上で動かすDBとして提供している「MySQL HeatWave on AWS」をご紹介します。

MySQL HeatWave on AWSとは?

MySQL HeatWave on AWSは、OLTP系の処理はMySQLで捌き、OLAP系の処理は分析用にデザインされたHeatWaveノードにオフロードして捌く、という、OLTPとOLAPの両利きを目指したデータベースです。名前の通りAWS上で稼働するため、会社全体でAWSを基盤インフラとして全面採用している場合や、アプリはじめフロントエンドがAWS上にある場合に、レイテンシや通信セキュリティ上のメリットがあります。また、最近のアップデートで、MySQL HeatWave on AWS外からのインバウンドレプリケーションができるようになったことで、今あるMySQLに格納されているデータを分析にかけてみたい、という要望に対して、単にスレーブを追加する感覚で分析用DBを追加できるようになりました。

このMySQL HeatWaveは、元々はOracle Cloud Infrastructure(OCI)上で提供されているサービスでしたが、これがAWS上でも使えるようになりました、というのがMySQL HeatWave on AWSです。なお、on Azureも存在します。

アーキテクチャは以下の通りで、Oracle社管理のAWSアカウント上で稼働しているMySQL/HeatWaveノードに対して、カスタマーAWSアカウント(別にそれ以外でもいいですが)からアカウント越しにアクセスすることになります。

MySQLノードは通常のMySQL同様データを永続化ディスクに持ちますが、HeatWaveノードではインメモリです。全てのデータをHeatWaveノードに持たせる必要はなく、OLAP系処理が見込まれるテーブルのみHeatWaveノードにロードする、ということもできます。

全てのクエリは一度MySQLノードで受けるのですが、ここでオプティマイザがHeatWaveよりもMySQLで実行した方が早いと判断した場合は、たとえ対象テーブルがHeatWaveにロードされていてもMySQLノードで処理してくれます。

分析処理の高速化確認

MySQL HeatWave on AWSで分析処理がどの程度早くなるか、確認します。今回は、伝票処理でデータが大きく育ってしまってMySQLでは時間がかかるようになってきてしまった、という状況を想定します。クエリは実際にソフトウェア上で動いているものをベースにしており、処理の概要とレコードの概数は以下の通りです。

処理概要 対象テーブル内レコード数
特定条件ごとの仕訳伝票数出力 30,000,000
特定条件ごとの仕訳明細数出力 200,000,000
特定条件ごとの仕訳明細数出力+除外条件 200,000,000
特定条件ごとの台帳残高出力 90,000,000

これらクエリを、MySQLとHeatWaveそれぞれで処理させた場合の処理時間は以下でした。

処理概要 MySQL(InnoDB) HeatWave
特定条件ごとの仕訳伝票数出力 9 s 0.2 s
特定条件ごとの仕訳明細数出力 44 s 0.4 s
特定条件ごとの仕訳明細数出力+除外条件 55 s 0.4 s
特定条件ごとの台帳残高出力 210 s 0.2 s

処理時間は劇的に改善しており、クエリによっては1000倍以上のレスポンスです。これならほとんどの性能要求は満たしてくれそうです。

とはいえ、このくらいのレスポンス速度は、データウェアハウス系の製品であればそれほど特筆して早いというものでもありません。MySQL HeatWave on AWSのいいところは、この性能がOLTP用途で使っているDBそのもので出せること、フロントにMySQLがいるため従来のMySQL用に書かれたアプリでもアプリに大きな変更なく使えること、AWS上で動いているため他コンポーネントがAWS上にあるシステムでの性能上・セキュリティ上のメリットがあること、などです。

まとめ

AWSではAmazon Athenaをはじめとして、MySQL中にあるデータを分析ツールからクエリできるようにするサービスもあります。しかしながら、既成のMySQL互換アプリがあって変更が困難な場合、Amazon Athena等の分析サービスでは十分な性能水準に達しない場合等、これまで分析を諦めざるを得なかったユースケースに対して、新たな選択肢として考えられそうです。

タイトルとURLをコピーしました