PR

初めてでも安心! OCIチュートリアルを活用して、MySQLのマネージド・データベース・サービスを体験してみよう

2021年4月21日(水)
高橋 正和

7. MySQLクライアントから接続する

  • 【オラクル先生】
    MDSができるまでの間に、アクセスする側の準備として、仮想マシンインスタンスにMySQLクライアントをインストールしておきましょう。コマンドラインのMySQLクライアントは使ったことがありますか?
  • 【鈴木君】
    はい、簡単なWebアプリを作るときに触りました。
  • 【オラクル先生】
    では、先ほど試したように、SSHで仮想マシンインスタンスにログインしてください。

まず、yumコマンドからオラクルのMySQLリポジトリを追加するパッケージをインストールします。

$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

オラクルのMySQLリポジトリが追加できたら、同じくyumコマンドでMySQLクライアントをインストールしてください。

$ sudo yum install mysql-community-client
  • 【オラクル先生】
    そろそろMDSの作成が完了している頃だと思いますが、Oracle Cloudの画面表示はどうなっていますか?
  • 【鈴木君】
    MDSの情報ページでマークが緑色になっています!
  • 【オラクル先生】
    これで、MDSも準備ができましたね。では、MySQLクライアントからアクセスする先を調べましょう。MDSの情報ページで「エンドポイント」のところにある「プライベートアドレス」に接続先のIPアドレスが表示されています。すぐ右にある「コピー」をクリックして、クリップボードにコピーしておいてください。

図33:MDSの作成が完了したらホスト名を調べる

仮想インスタンスのコマンドラインから、以下のようにMySQLコマンドを起動します。パスワードを聞かれたら、MDSの作成のときに設定したパスワードを入力しましょう。

$ mysql -u <データベースのユーザー名> -p -h <MDSのホスト名>
  • 【鈴木君】
    MySQLのプロンプトが表示されました。
mysql>
  • 【オラクル先生】
    MDSに接続できましたね! では、このコマンドを実行してデータベース一覧を表示してみてください。
mysql> SHOW DATABASES;
  • 【鈴木君】
    表示されました。4つのデータベースがあります。
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

8. サンプルデータベースで試す

  • 【鈴木君】
    いよいよ本番ですね!

サンプルデータベースはGitHubでも公開されています。これを取得するため、まず仮想マシンインスタンスに、yumでgitコマンドをインストールしましょう。

$ sudo yum install git

インストールできたら、git cloneコマンドでサンプルデータをダウンロードします。

$ git clone https://github.com/datacharmer/test_db

git cloneが完了するとtest_dbディレクトリが作成されるので、このtest_dbディレクトリに移動してください。

$ cd test_db

ここで、先ほどと同じように、MySQLクライアントを起動します。

$ mysql -u <データベースのユーザー名> -p -h <MDSのホスト名>

MySQLのプロンプトが表示されたら、ダウンロードしたデータを読み込みます。

> source employees.sql

途中でたくさんメッセージが表示されますが、読み込みが終わったらSHOW DATABASESでデータベース一覧を表示してみましょう。

mysql>  SHOW DATABASES;
  • 【鈴木君】
    先ほどの状態から「employees」というデータベースが増えて、5つのデータベースが表示されています!
> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| employees          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
  • 【オラクル先生】
    では、そのemployeesデータベースを選択して、テーブル一覧をSHOW TABLESで表示してみてください。
> USE employees;
> SHOW TABLES;
  • 【鈴木君】
    8つのテーブルが表示されました!
> SHOW TABLES;
+---------------------0+
| Tables_in_emploees   |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_data |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
+----------------------+
8 rows in set (0.00 sec)
  • 【オラクル先生】
    良いですね。では、私が用意したそこそこ複雑なSQLクエリがあるので、これを実行してみてください。
SELECT departments.dept_name,SUM(salaries.salary) AS sum_salaries
   FROM employees JOIN salaries JOIN dept_emp JOIN departments
     ON employees.emp_no=salaries.emp_no
     AND employees.emp_no=dept_emp.emp_no
     AND dept_emp.dept_no=departments.dept_no
   GROUP BY departments.dept_name
   ORDER BY sum_salaries DESC;
  • 【オラクル先生】
    出力の最後に実行時間が表示されていると思います。どのくらいでしたか?
  • 【鈴木君】
    2.74秒です。
  • 【オラクル先生】
    このSQLクエリを、これからHeatWaveで高速化するので、この実行時間をしっかりと憶えておいてくださいね。

図34:SQLのクエリの結果

おわりに

今回の前編では、初めてOracle Cloudを使用するところからOCIで各種リソースを用意し、MDSを作成してアクセスするところまでを体験しました。このページの内容は、OCIチュートリアルページ「その9 - クラウドでMySQL Databaseを使う」でも確認できます。

次回の後編では、同じSQLクエリをHeatWaveで高速化してみたいと思います。

MySQLのマネージド・データベース・サービス
「MySQL Database Service(MDS)」とは

ここで、MDSとHeatWaveについて、それぞれ概要を簡単に説明します。

MDSはオープンソース・データベースのMySQLをベースとしたマネージド・データベース・サービスです。MySQLは複数の企業買収を経て、現在はオラクル社が管理し、開発しています。そして、オラクル社が提供するパブリック・クラウドサービスであるOCI上で提供しているMySQLのマネージド・データベース・サービスがMDSです。

OCIはクラウド・ネイティブおよびエンタープライズ企業のITワークロードを支えるクラウドサービスで、日本を含む世界中で使われています。オーバーサブスクリプションを徹底的に排除しているため、非常に安定した性能を提供できる上に、サービス利用料も低価格+シンプルで変動要素の少ない料金体系になっているため、コストの面でも安心して利用できます。

MDSの価格は、他社が提供するMySQLベースのマネージド・データベースサービスと比較しても、非常に安価で提供されています。

図35:他社サービスとスペックを揃えての年間コスト比較

表1:MDSの単価と課金体系

課金対象 OCIでの製品名 単価 課金単位
CPU数 MySQL Database-Standard-E3 ¥4.56 1時間あたりのOCPU
メインメモリのサイズ MySQL Database-Standard-E3-Memory ¥0.264 1時間あたりのギガバイト
データ格納用のストレージ MySQL Database-Storage ¥4.80 1か月あたりギガバイトストレージ容量
バックアップ格納用のストレージ MySQL Database-Backup Storage ¥4.80 1か月あたりギガバイトストレージ容量

さらに、OCI上の各サービスはサービス料にサポート費用が含まれているため、MDSを利用する際は追加費用も不要でMySQL開発ベンダーからのサポートも受けることができます。

金額は2021年4月9日時点のものとなります。最新の課金体系はWebサイトでご確認ください。

HeatWave:
MDS専用のクエリー・アクセラレーター

2020年12月にMDSの追加機能としてHeatWaveがリリースされました。HeatWaveはオラクルの研究開発部門であるOracle Labsで「Project RAPID」と呼ばれている大規模インメモリ・データ分析に関する研究の成果をMySQLサーバーと統合したものです。HeatWaveを使うと、分析処理をインメモリで並列処理することにより、MDS単体と比較しても数百倍高速に分析処理を実行できます。他社のクラウド・データベースサービスと比較しても、非常に高いコストパフォーマンスを誇っています。

MySQLサーバーは様々なアプリケーションのバックエンドとして広く活用されていますが、一方でデータ分析処理を行う際には、他のデータウェアハウスやデータ分析基盤などにデータを移動して分析を行っているユーザーも少なくありません。この場合、一般的にデータ分析基盤へデータを連携する手間がかかる上に、分析対象データのリアルタイム性も高くなく、また、複数のインフラを管理することで運用・管理コストも増加してしまいます。このような課題を解決できるサービスがHeatWaveなのです。

MDSにHeatWaveを組み合わせた環境でも、アプリケーションからアクセスする先はMDSとなります。つまり、アプリケーションからすると通常のMySQLサーバーにアクセスしてSQLを実行するだけでHeatWaveを利用できるようになります。なお、HeatWaveを利用する際は事前にMySQL上のデータをHeatWaveに連携するための簡単な準備が必要となりますが、その後はMySQL上でデータを更新すると自動的にHeatWaveにデータを連携できます。

オンプレミス等のMySQLからレプリケーション機能を使ってMDSおよびHeatWaveにデータを連携することもできるため、MySQLで動いているアプリケーションのデータ分析環境のみをOCI上に構築することも簡単に実現できます。データ連携もMySQLのレプリケーション機能により実現可能なため、別途ETLツール等を用意する必要がなく、システム全体の運用・管理コストの低減にもつながります。

なお、HeatWaveの単価と課金体系は表2のようになっています。また、MDSやHeatWaveのコストはコストエスティメーター(OCI Cost Estimator)で簡単に見積もることができます。

表2:HeatWaveの単価と課金体系

ノード名 OCIでの製品名 単価 課金単位
MySQLサーバーノード MySQL Database for HeatWave-Standard-E3 ¥42.432 1時間あたりのノード数
HeatWaveノード MySQL HeatWave-Standard-E3 ¥42.432 1時間あたりのノード数
データ格納用のストレージ MySQL Database-Storage ¥4.80 1か月あたりギガバイトストレージ容量
バックアップ格納用のストレージ MySQL Database-Backup Storage ¥4.80 1か月あたりギガバイトストレージ容量

金額は2021年4月9日時点のものとなります。最新の課金体系はWebサイトでご確認ください。

HeatWaveによるクエリの高速化

HeatWaveと「Amazon Aurora」との性能比較では、意思決定支援システム系のベンチマークテスト「TPC-H」をベースとしたテストにより、性能は1,100倍以上、その性能を実現するためのコストは1/3以下という結果が出ています。

図36:HeatWaveとAmazon Auroraのコストパフォーマンス比較

また、データ分析基盤「Amazon RedShift」との比較でも、2.7倍以上高速でコストは1/3以下を実現しています。

図37:HeatWaveとAmazon RedShiftのコストパフォーマンス比較

これらの性能とコストの比較はHeatWaveのサービス提供開始時にも紹介されており、テスト実施時の設定やテスト手順、ならびに実際に利用されたスクリプトなども公開されているため、誰でも再現テストを行ってHeatWaveの実力を確認できます。

[参照]HeatWaveのベンチマークテストの設定やテストスクリプト
https://www.oracle.com/mysql/heatwave/performance/

HeatWaveによるクエリ高速化体験

なお、次回の後編ではHeatWaveのチュートリアルについて解説しますが、このチュートリアルに従うと簡単な手順でMDSと比べてクエリが高速化することを体験できます。MDSもHeatWaveも本来は有料サービスであるため、トライアルアカウントで付与されたクレジットを利用してお試しください。30日間有効な300$分のクレジットが無料で付与されたOCIのトライアルアカウントを作成いただき、ぜひこの機会に実際にHeatWaveを体験してみてください。

OCIのトライアルアカウントを30日間有効な500$分のクレジットにアップグレードすることも可能です。詳しくはOCIトライアルアカウント アップグレードに関するお問い合わせまでご連絡ください。

フリーランスのライター&編集者。IT系の書籍編集、雑誌編集、Web媒体記者などを経てフリーに。現在、「クラウドWatch」などのWeb媒体や雑誌などに幅広く執筆している。なお、同姓同名の方も多いのでご注意。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています