データベースもクラウドの時代や!
自サーバーにデータベースを置くとバックアップするのが面倒だったり、管理が大変だったりと大変なので
クラウドに置いてみようと思った。

 

Amazon RDS を選んだ理由

Amazon_rds

無料体験期間で12ヶ月無料で使えるからです!
無料で使えるプランは db.t2.micro 最安インスタンスです。

 

インスタンス vCPU メモリ PIOPS 用に最適化 ネットワークパフォーマンス 容量
db.t2.micro 1 1GB 5GB

その他の料金については公式サイトを見て下さい。

 

また、使えるエンジンも多く
・Aurora
・MySQL
・MariaDB
・PostgreSQL
・Oracle
・SQL Server
と現時点(2016/04/23)で6個から選べる…。

 

他にもクラウドデータベースは
・Oracle Cloud
・Google Cloud SQL
・Rackspace
があります。

 

 

オンデマンドインスタンス & リザーブドインスタンス

オンデマンドインスタンス

オンデマンドインスタンスでは長期間の契約や初期費用がなく、時間単位でインスタンスに対する料金が発生します。これにより、データベースのキャパシティーを事前にプランニングしたり、購入したりするコストや手間が省けます。オンデマンドの料金設定のため使用した分のみ料金が発生し、開発、テスト、その他の短期ワークロードに最適です。

言ってしまえば従量課金制です。使った分だけ支払います。

 

リザーブドインスタンス

リザーブドインスタンスは一定量のデータベースワークロードに最適で、オンデマンドと比べて大幅にコストを削減できます。オンデマンド料金と比べると、1 年契約のリザーブドインスタンスでは最大 44%、3 年契約のリザーブドインスタンスでは最大 63% のコスト削減が可能です。リザーブドインスタンスの場合は、所定の期間終了まで使用する契約を結ぶことになり、初期費用のお支払いが必要ですが、時間あたりの料金は下記のとおり割安になります。実際に使用したかどうかにかかわらず、期間中は各時間ごとに料金が発生します。

こちらは固定料金みたいなものです。

今回契約したのは オンデマンドインスタンス です。
使うのなんて月に数回程度、数十行のレコードへのINSERT,UPDATE,SELECTぐらいなのでリザーブドインスタンスだととてつもなく料金の無駄になります。

 

 

使い方

FireShot Capture 36 - RDS · AWS Console_ - https___us-west-2.console.aws.amazon.com_rds_home

使い方ではなくインスタンス作成の時ですが、右側を選択すると「無料利用枠範囲内」
勝手に項目が決定されます。

ステータスが利用可能になるとエンドポイント(URL)が表示されます。
セキュリティポリシー的なやつで、アクセス元IPをホワイトリストに追加する必要があります。
mysql -h <エンドポイントURL> -u <ユーザー名> -p でいつものように使えるようになります。

既存のデータベースをダンプして、RDSにインポートしてコードを書き換えれば
簡単に移行できます。

 

ベンチマーク

今回は Sysbench というベンチマークソフトを使ってみました。
CPU、ディスクI/O、データベースなど様々なベンチマークを測ることができます。

準備

sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
prepare

レコード数は10000

 

sysbench \
--test=oltp \
--db-driver=mysql \
--oltp-table-size=10000 \
--mysql-password=<パスワード> \
--num-threads=1 \
--max-requests=0 \
--max-time=60 \
--oltp-read-only=off \
run

何となく分かると思います。

比較はトランザクション数で比較します。

 

トランザクションとは

一般にデータベースには多くの人がアクセスし、様々な処理を行います。閲覧するだけの人もいれば、データを追加・更新したり、削除する人もいます。その中でも特に、データの追加・更新・削除、SQL 文で言うと「INSERT 文」「UPDATE 文」「DELETE 文」についての処理のまとまりをトランザクションと言います。 – http://www.techscore.com/tech/sql/SQL11/11_01.html/

詳しいことはこちらが参考になります。

 

 

vCPU : 4 / メモリ : 4GB サーバー

OLTP test statistics:
queries performed:
read:                            158886
write:                           56745
other:                           22698
total:                           238329
transactions:                        11349  (189.15 per sec.)
deadlocks:                           0      (0.00 per sec.)
read/write requests:                 215631 (3593.84 per sec.)
other operations:                    22698  (378.30 per sec.)
Test execution summary:
total time:                          60.0002s
total number of events:              11349
total time taken by event execution: 59.9105
per-request statistics:
min:                                  4.12ms
avg:                                  5.28ms
max:                                 91.92ms
approx.  95 percentile:               6.33ms
Threads fairness:
events (avg/stddev):           11349.0000/0.00
execution time (avg/stddev):   59.9105/0.00

transactions: 11349 (189.15 per sec.)

 

Amazon RDS db.t2.micro

OLTP test statistics:
queries performed:
read:                            280
write:                           100
other:                           40
total:                           420
transactions:                        20     (0.31 per sec.)
deadlocks:                           0      (0.00 per sec.)
read/write requests:                 380    (5.93 per sec.)
other operations:                    40     (0.62 per sec.)
Test execution summary:
total time:                          64.1199s
total number of events:              20
total time taken by event execution: 64.1194
per-request statistics:
min:                               2933.48ms
avg:                               3205.97ms
max:                               4202.67ms
approx.  95 percentile:            4170.87ms
Threads fairness:
events (avg/stddev):           20.0000/0.00
execution time (avg/stddev):   64.1194/0.00

transactions: 20 (0.31 per sec.)

差が圧倒的すぎる…。
僕の使用用途はただユーザー情報を入れてるだけのデータベースで、正規化するほどのものでもないので
十分です…。

無料利用枠もあって、使いやすいし Amazon RDS オススメです。
まあ、Google Cloud SQL の最安プライン オンデマンドインスタンスの方が安いんですけどねw