初めてでも安心! OCIチュートリアルを活用して、MySQLのマネージド・データベース・サービスを体験してみよう
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アドレスが表示されています。すぐ右にある「コピー」をクリックして、クリップボードにコピーしておいてください。
仮想インスタンスのコマンドラインから、以下のように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. サンプルデータベースで試す
- 【オラクル先生】
では、MySQLのサンプルデータベースをMDSに読み込んで、SQLのクエリを試してみましょう。
- 【鈴木君】
いよいよ本番ですね!
サンプルデータベースは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で高速化するので、この実行時間をしっかりと憶えておいてくださいね。
おわりに
今回の前編では、初めてOracle Cloudを使用するところからOCIで各種リソースを用意し、MDSを作成してアクセスするところまでを体験しました。このページの内容は、OCIチュートリアルページ「その9 - クラウドでMySQL Databaseを使う」でも確認できます。
次回の後編では、同じSQLクエリをHeatWaveで高速化してみたいと思います。
「MySQL Database Service(MDS)」とは
ここで、MDSとHeatWaveについて、それぞれ概要を簡単に説明します。
MDSはオープンソース・データベースのMySQLをベースとしたマネージド・データベース・サービスです。MySQLは複数の企業買収を経て、現在はオラクル社が管理し、開発しています。そして、オラクル社が提供するパブリック・クラウドサービスであるOCI上で提供しているMySQLのマネージド・データベース・サービスがMDSです。
OCIはクラウド・ネイティブおよびエンタープライズ企業のITワークロードを支えるクラウドサービスで、日本を含む世界中で使われています。オーバーサブスクリプションを徹底的に排除しているため、非常に安定した性能を提供できる上に、サービス利用料も低価格+シンプルで変動要素の少ない料金体系になっているため、コストの面でも安心して利用できます。
MDSの価格は、他社が提供するMySQLベースのマネージド・データベースサービスと比較しても、非常に安価で提供されています。
課金対象 | 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)で簡単に見積もることができます。
ノード名 | 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以下という結果が出ています。
また、データ分析基盤「Amazon RedShift」との比較でも、2.7倍以上高速でコストは1/3以下を実現しています。
これらの性能とコストの比較はHeatWaveのサービス提供開始時にも紹介されており、テスト実施時の設定やテスト手順、ならびに実際に利用されたスクリプトなども公開されているため、誰でも再現テストを行ってHeatWaveの実力を確認できます。
[参照]HeatWaveのベンチマークテストの設定やテストスクリプト
https://www.oracle.com/mysql/heatwave/performance/
HeatWaveによるクエリ高速化体験
なお、次回の後編ではHeatWaveのチュートリアルについて解説しますが、このチュートリアルに従うと簡単な手順でMDSと比べてクエリが高速化することを体験できます。MDSもHeatWaveも本来は有料サービスであるため、トライアルアカウントで付与されたクレジットを利用してお試しください。30日間有効な300$分のクレジットが無料で付与されたOCIのトライアルアカウントを作成いただき、ぜひこの機会に実際にHeatWaveを体験してみてください。
OCIのトライアルアカウントを30日間有効な500$分のクレジットにアップグレードすることも可能です。詳しくはOCIトライアルアカウント アップグレードに関するお問い合わせまでご連絡ください。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- MySQL Database Service(MDS)の分析クエリを高速化する「HeatWave」の使いどころ
- 神出鬼没!サブクエリについて(Part.2)
- [SQL] 結合
- テーブル結合について(Part.1) ー「内部結合」と「外部結合」
- 神出鬼没! サブクエリについて(Part.1)
- テーブル結合について (Part.2) -「交差結合」「自然結合」「統合結合」
- データ分析に欠かせない「集計関数」について
- [DBA] データベース記憶域構造の管理
- データベース・ファイアウォール導入への不安を解消する、5つの選定ポイントとは
- MySQL HeatWaveのサービス概略 ー全体像を理解しよう