野崎篤志 - イーパテント/知財情報コンサルタント 2020/05/11 08:30. プロエンジニアの【そもそもデータベースとは?基礎から分かるデータベース入門】ページです。エンジニアの正社員求人情報、フリーランス案件情報を探すならインターノウスのプロエンジニアへ! で、executeQuery()で実行。, executeQuery()の戻り値の型はJdbcResultSetというものです。 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. クラウドのリレーショナル・データベースサービス Amazon RDS、Azure SQL Database、Google Cloud SQL について、機能・料金・管理面などの比較をしてみます。, リレーショナル・データベース (RDBMS) とは、表形式でデータを保存でき、 SQL などの言語によってデータの取得・集計・加工が行えるものです。, 2000年台後半より、リレーショナル・データベースエンジンをクラウドサービスに乗せる動きが進んでいます。クラウドサービス上でリレーショナル・データベースエンジンを動かすメリットは下記です。, 構築やメンテナンスの手間を省けるというメリットが非常に大きいと考えます。法人・商用サービスだけではなく、小規模な個人利用であってもぜひ利用を検討してみてください。, クラウドサービスとしてリレーショナル・データベースを動かすことを DBaaS (データベース・アズ・ア・サービス) と呼びます。Amazon・Microsoft・Google 各社が提供する DBaaS のサービス名称は下記のとおりです。, Amazon RDS・Azure SQL Database・Google Cloud SQL についての DBaaS の機能比較表は以下のとおりです。細かな解説はのちほど。, まずは当然の話ではあるのですが、 管理画面でポチポチと操作するだけでデータベースが構築できますよという点。ソースからビルドしたり、パッケージインストールしたり、 my.cnf いじったり、ということはやらなくてもいいんですよ、ということです。, 自前で DB レプリケーションを行うのはめんどくさい! まさにこういうところで DBaaS を使って楽することにしましょう。レプリケーションの目的は耐障害性向上・負荷分散がありますが、 まずは耐障害性向上から。, Amazon RDS では、シングル構成にするか、Multi-AZ 構成にするかを選択できます。Multi-AZ にすると、「同じリージョンかつ異なるアベイラビリティゾーン」に、 スレーブのインスタンスが用意され、データが同期され続けます。もしマスタに異常が発生した場合、スレーブに切り替わります。Multi-AZ を有効にした場合、インスタンスの料金は 2倍となります。, Azure SQL Database の場合、SQL Database を作成すると、 自動的にそのリージョンにてデータの 3重化が行われます。これは自動的に行われ、機能を OFF にすることはできません。また、フェイルオーバーも内部で自動的に行われます。内部的にはマスター・スレーブがあるのでしょうが、 外部からそれぞれの状況を知ることはできません。スレーブに接続することもできません。3重化は Azure 内部で行われていることなので、 3重化だから料金は 3倍です、ということはありません。, Google Cloud SQL の場合、 フェイルオーバーレプリカというものを作成できます。Amazon RDS でいう Multi-AZ と同じようなものと考えてよいです。, Amazon・Azure・GCP いずれも、目指しているのは下記です。「マスタで障害が発生した場合、アプリケーション側で何もしなくても、 少し (1〜2分) 待てばデータベースが復旧する」, Amazon RDS では Multi-AZ を有効にしないと SLA 対象となりません。Google Cloud SQL もフェイルオーバーレプリカを有効にしないと SLA 対象になりません。金額が倍になるのは痛いですが、あきらめましょう。, Amazon RDS では Multi-AZ を有効にするかしないか、のみ選択可能ですので、 個数は 0個または1個です。「Multi-AZ をさらに追加」ということはできません。, Azure SQL Database は、内部的に3重化です。外部から確認や設定変更は一切できません。, Google Cloud SQL は Amazon RDS と同様に、フェイルオーバーレプリカを作るか作らないかですので、 0個または1個です。, Amazon RDS・Google Cloud SQL いずれも、レプリカはマスタと同じリージョンかつ、 異なるゾーンに配置します。Azure SQL Database は、内部的に3重化しており、外部から設定や確認は一切できませんが、 よい感じに配置してあるはずです。, これは「マスタは Standard だけど、レプリカは Small にして費用を節約することができるか」 という意味で書きましたが、残念ながらできないようです。, 「レプリケーションは障害発生に備えたものであることはわかるけど、 障害が発生していないときはもったいないから、負荷分散にも使えないの?」 という意味で書きました。, Amazon RDS・Azure SQL Database ではそのような使い方はできません (レプリカに別 IP アドレスが振られていないので、通常時は接続できない)。(★Azure 読み取りスケールアウトでできる旨要追記), Google Cloud SQL は、少なくとも別 IP アドレスが振られているのでもしかしたらできるかも… (★できるっぽい。要追記), Amazon RDS と Google Cloud SQL のみ、手動フェイルオーバーが可能です。そもそもレプリケーションもフェイルオーバーも DBaaS の責任範囲ですので、 動作確認という意味はあまりありません。しかしながら何分くらいでサービス正常性が戻るのか確認しておくのはよいことだと思います。, メモ: CloudSQLの自動フェイルオーバーはマスターインスタンス障害時には発火しない 要調査 → 最新版では問題ないように見える, リードレプリカとは、「マスタ→レプリカのレプリケーション設定をした上で、レプリカを読み取り専用とする」 というやり方です。, Amazon RDS・Azure SQL Database・Google Cloud SQL いずれもリードレプリカに対応しています。, Amazon RDS では、1つのマスタについて最大 5個のリードレプリカを作成できます。, Azure SQL Database では、 Premium と Business Critical サービスレベルのみですが、「読み取りスケールアウト」という機能が 2019/3 より使用可能となりました。SQL Database では自動的にレプリケーションが行われ3重化されますが、通常は 1つのインスタンスのみに接続します。残り 2つのインスタンスにリードオンリーで接続することで負荷分散を実現するというのが「読み取りスケールアウト」です。メリットは無料であること。もともと3重化されているものに接続しにいくので、お金がかからないわけですね。, Google Cloud SQL ではリードレプリカの制限はなく、「インスタンス上限40個」内であればいくつでも作れるようです (とりあえず 12個までは確認済)。, 「任意リージョンへのリードレプリカ作成」は、例えば「マスタ DB が日本にあるときに、 リードレプリカを米国などに作成できるか」です。Amazon RDS ではどのリージョンでも選択可能でした。Google Cloud SQL では、リードレプリカのリージョンは、マスタと同じリージョン固定でした。どうしてなんでしょうね。, 「リードレプリカでの低インスタンスサイズ」は、「マスタは Standard だけど、レプリカは Small にして費用を節約することができるか」という意味ですが、Amazon RDS は可能です。, Google Cloud SQL では、MySQL は可能ですが、PostgreSQL では元のDB以上の CPU・メモリが必要です。, オンプレミスや、他クラウドサービスにマスタ DB を置いて、 クラウドサービス上の DBaaS をレプリケーションできるか、について。これが実現できると、オンプレミスの準リアルタイムバックアップや、 オンプレミス → クラウド DBaaS の移行が簡単になります。, Google Cloud SQL では、2018/7 より外部 MySQL をマスタとし、 Google Cloud SQL の MySQL をスレーブとする設定が可能となりました。, 下記はそれぞれのクラウドサービスが対応している RDBMS の比較表です。Amazon RDS の歴史が長いだけあって、対応している種類が多いですね。, MySQL は有名なオープンソースの RDBMS です。AWS・Azure・GCP いずれも利用可能です。, MariaDB は MySQL から分岐したオープンソース RDBMS です。MySQL AB 社がサン・マイクロシステムズに買収され、 その後サン・マイクロシステムズがオラクル社に買収された際、「Oracle Database で稼いでいるオラクル社が MySQL をつぶすのではないか」 と懸念する声があがり、MySQL 創始者が自ら MariaDB を立ち上げたもの。AWS・Azure で利用可能です。, Amazon Aurora は、Amazon が開発した高性能 DB で、「オーロラ」と読みます。Amazon 曰く、MySQL の 5倍、PostgreSQL の 3倍速いとのこと (本当かどうかは知らない)。2018/8 にサーバレス版の Aurora Serverless がリリースされました。さらに Aurora Multi Master (2019/5 現在、プレビュー) が控えており、まだまだ進化しそうです。Aurora が使えるのは AWS のみです。, PostgreSQL も MySQL に並び立つオープンソース RDBMS です。AWS・Azure・GCP いずれも利用可能です。, SQL Server は、マイクロソフト製の DB で、クラウド以前の 1990年代から存在します。Azure では DBaaS サービスとして「SQL Database」が利用可能です。これは SQL Server をベースとして開発された、Azure 上で動作する SQL Server 互換のサービスです (SQL Database と SQL Server は完全に機能が同じなわけではない)。また、Amazon RDS でも SQL Server が選択可能です。GCP においては 2019/4 に「Cloud SQL for Microsoft SQL Server」が発表されましたが、2019年中にサービス開始予定とのことです。, さらに Azure には Azure の Virtual Machine 上で動作する SQL Server として “SQL Server on Virtual Machines” というものもあります (実体としては SQL Server 入りの VM イメージ)。オンプレミスでの SQL Server の挙動に限りなく近づけたい場合は、SQL Database ではなく SQL Server on Virtual Machines を使うとよいでしょう。, Oracle は、いわずと知れた Oracle Database です。一時期は AWS や Azure で比較的安価に利用できたのですが、近年は Oracle 社が自ら立ち上げた Oracle Cloud にシフトを進めています。, Amazon RDS のみ、マイナーバージョンまで指定できます。2019/4 現在、MySQL の場合は下記を選択可能です。, Azure や GCP では、5.5、5.6、5.7 といったメジャーバージョンまでの指定となります。, 特徴ふたつめ。Amazon RDS では、マイナーバージョンの自動バージョンアップを有効にするか否かを設定することができます。Azure や GCP では、強制的に自動バージョンアップがなされます。, Azure SQL Database には Elastic Pool (エラスティックプール) という機能があります。これは、データベースそれぞれでインスタンスを立てるのではなく、 全体としてある程度のリソースを購入し、その中で複数のデータベースを動かすイメージです。, という前提で、 「MySQL や PostgreSQL で、1ヶ月間使い続ける、リザーブドインスタンスはやらない」 という条件とすると、GCP は Amazon RDS の約半額になるのではと思います。, なお、ストレージ料金について比較をしようとしてまとめたメモを下記に貼っておく (東京リージョン前提)。, Amazon RDS は 1秒単位の課金ですが、最低利用として 10分の課金がありますので、5分使ったら 10分、15分使ったら 15分の課金です。, 2019/04/25 より前は Amazon RDS は 1時間単位の課金でしたが、 2019/04/25 に1秒単位に変更となりました。アナウンスはこちら。, Azure SQL Database は 1時間です。5分間だけ触ったとしても請求は 1時間分です。, 開発環境や検証環境など、「たまにしかデータベースを使わない」「夜間土日は一切使わない」 というケースもあると思います。そのような場合、コスト削減のためにデータベースを停止したくなるでしょう。停止が可能な場合と、停止できない場合がありますので以下説明します。, Amazon RDS は停止が可能ではあるものの、 「SQL Server かつ Multi-AZ の場合は停止できない」 「リードレプリカが存在すると停止できない」 「SQL Server ミラーリングを使用している場合は停止できない」 という制限事項があります。また、停止できるのは最大7日で、7日を経過すると自動的に起動してしまいます。, Azure SQL Database には、2017/12 現在も「停止」機能が実装されていません。大変よろしくないことと感じます。, GCP Cloud SQL は停止機能があります。ただし、「レプリカが存在する状況でマスタの停止はできない」 「リードレプリカやフェイルオーバーレプリカの停止はできない」ようです。中途半端な状態で停止するくらいなら削除しなさい、ということでしょうか。なお、停止したまま90日が経過すると自動削除されることに注意です。, なお、Amazon RDS・Cloud SQL とも「停止」するとインスタンス分の課金はされませんが、 「データ保持」のためのストレージ料金は必要ですのでご注意を。, Amazon RDS・GCP Cloud SQL の課金単位は「インスタンス」です。例えば Amazon RDS では「db.m4.large」インスタンスを 1つだけ作り、 その中で “CREATE DATABASE” 的なことを行うことで、 1インスタンス内にデータベースを複数持つことができます。, 一方、Azure SQL Database の課金単位は「データベース」です。”CREATE DATABSAE” 的なもので DB を 2個作ると、2個分の費用がかかります。(注: 2018/3 頃、SQL Database Managed Instance というサービスが始まり、 インスタンス単位での管理も選択可能となりました。要詳細追記), が無料となっています。31日×24時間=744時間ですので、毎月 RDS を起動し続けておくことができます。なお、Aurora は無料枠対象ではありません。Oracle は BYOL (ライセンス持ち込み) のみです。, Azure Database では、サービス利用開始から 12ヶ月間、 S0 というインスタンスが無料で使えます。これは SSD 250GB を含みます。なお、S0 を複数個使ったらすべて無料になるかは明記されていませんが、誰か試してみてください。なお、対象は Azure Database のみであり、Azure Database for MySQL・Azure Database for PostgreSQL・Azure Database for MariaDB は対象外のようです。, GCP では Cloud SQL の無料枠というものはありませんが、12ヶ月有効な $300 のクレジットで実質無料使用ができます。, Amazon・Azure・GCP いずれのデータベースサービスも、12ヶ月を超えた場合の無料枠はないようです。, Amazon・Azure・GCP とも、 自由にインスタンスサイズを選択することができ、後から変更することが可能です Amazon RDS・GCP はあらかじめ用意されているインスタンスサイズから選択する方式ですが、 なぜか Google Cloud SQL for PostgreSQL のみ、CPU とメモリの量を指定可能でした。Cloud SQL + MySQL でもそのうち指定可能になるんでしょうか。, Amazon RDS の vCPU 最大 128、メモリ最大 3,904GB は立派なものですが、対応 DB に注意が必要です。この vCPU・メモリに対応しているのは Oracle のみで、例えば MySQL・MariaDB・PostgreSQL は最大 96 vCPU、SQL Server は最大 64 vCPU のようです。, Azure SQL Database の場合、 価格表示 では、 CPU もメモリも記載がありません。代わりに下記のように「DTU」という表示があります。, DTU とは “Database Transaction Unit” のことで、 CPU・メモリ・I/O を組み合わせた指標値と考えるとよいでしょう。Basic であれば DTU 5 ですが、Standard S2 であれば DTU 50 です。「Standard S2 は Basic の 10倍の処理能力を提供可能」と言ってよいです。, 一方で、SQL を実行するたびに DTU を消費していきます。CPU もメモリもあまり使わない、I/O もほぼないような軽い SQL であればあまり DTU を消費しませんが、CPU もメモリも I/O もたくさんで 数分間かかるような SQL であればがっつり DTU を消費します。単位時間あたりの DTU を使い尽くしてしまった場合、待たされます。, Azure ポータル (管理画面) にて、DTU 使用率のグラフを簡単に見ることができるので、 DTU 不足と思った場合はインスタンスサイズをあげるなり、 SQL チューニングや Redis 等に逃がすなどの改善をしましょう。, すべての RDBMS では、データベースをフルバックアップすることができます。例えば MySQL なら mysqldump コマンドを使います。「1日1回や、週1回のフルバックアップがあればよい」 「フルバックアップ以降の更新分は失われてもよい」 ということであれば話は終了です。直近のフルバックアップを使ってリストアしてください、です。, とはいえ普通は「できるだけ最近のデータも救って」という話になるわけです。しかし、フルバックアップの頻度を1時間に1回、30分間に1回、10分に1回と頻度をあげていっても DB が重くなるだけです。そこで一般的には、フルバックアップ + ジャーナルファイル という組み合わせを使います。ジャーナルファイルは MySQL だとバイナリログ、Oracle だと REDO ログやアーカイブログと言いますが、 内容は「実行した SQL 文や、追加・更新したデータが実行時刻付きで時系列に並んでいるもの」と思ってください。, 直近で取得したフルバックアップに対して、ジャーナルファイルをどんどん当て込んでいくことで、 最新のデータベースに近づいていくわけです。また、ある時刻でジャーナルファイルの適用を止めれば、「任意時刻時点のリカバリ」となります。以上、基礎知識おわり。, AWS・Azure・GCP いずれも、自動的にバックアップを取得して保存しておくことができます。取得タイミングは 1日1回や数時間に 1回などと決まっており、変更はできません。ただし、ジャーナルファイルがありますので、1日1回のバックアップだからといって、 最長24時間データが巻き戻ってしまうわけではありません (ただしバックアップ頻度が長すぎると、 リストア時に時間がかかってしまう)。, このときのバックアップがフルバックアップであるか、 フルバックアップ + ジャーナルファイルであるかは、気にする必要がありません。例えば管理画面上からは「2018/06/14 18:30:11 時点のバックアップ」として見えているものが、 フルバックアップかもしれないし、フルバックアップにジャーナルファイルを当て込んで生成されるものかもしれないが、気にしなくてよいということです。, 自動バックアップしたデータは、上記の日数の間、保存されます。例えば保存期間が 7日である場合、7日前のデータに戻すことはできるが、8日前に戻すことはできません。ただし、手動でバックアップを取得する方法がありますので、 手動バックアップであれば 1ヵ月間でも 1年間でも保存しておくことができます (その分、コストはかかります)。, いずれのサービスも、自動バックアップ保存期間内であれば、任意時点のデータを復元することが可能です。, Amazon RDS・Google Cloud SQL では、日次バックアップを行う時間帯 (ウィンドウ) を指定することができます。Amazon は 30分幅、GCP は 4時間幅です。一般的には朝方など、利用者の少ない時間帯を指定しておくとよいでしょう。ただし Amazon RDS で Multi-AZ を有効にしている場合、待機系であるスレーブからバックアップを取得するため、 マスタへの負荷の影響はほぼないと見てよいでしょう。, Azure SQL Database では、バックアップの時間帯は指定できないようです。, AWS の場合、通常の RDS のストレージに SSD や HDD を選択した場合、容量は最低 5GB、最大 数TB 程度ですが、「プロビジョンドIOPS (SSD)」を選択すると容量が最低 100GB、最大 32TB と一気に広がります (SQL Server は最低 20GB、最大 16TB)。, Amazon RDS・Google Cloud SQL は「容量自動拡張」を持っています。データを保存するストレージが不足した場合、勝手に拡張してくれます。, ただし気づかない間にどんどん容量が増えてコストが増えてしまうのは困るというケースもあるでしょうから、 Amazon RDS・Google Cloud SQL いずれも自動拡張の ON/OFF や、自動拡張時の上限容量設定が可能です。, これまで Amazon Aurora にしか容量自動拡張機能がなかったのですが、2019/06/21 に MySQL・MariaDB・PostgreSQL・SQL Server・Oracle などの他の RDS にも自動拡張機能が追加されました。, 2019/06/21 時点では、GCP コンソール (管理画面) からは設定できないようですが、gloud beta sql instances create (または patch) コマンドでは設定可能です。, Azure SQL Database は、選択したサービスレベル (Basic・Standard S0, S1, S2 など) ごとに上限が決まっていて、その枠内ならば自由に使えます。それを超える場合は、上位サービスレベルの変更が必要になります。, Oracle Database は、「Amazon RDS for Oracle」というサービス名称で、 Amazon RDS のみでサポートされています。対象バージョンは下記のとおりです。, Amazon RDS for Oracle では、RAC はサポートされていません。また、その他の Enterprise のオプション、, について、Advanced Compression や Advanced Security などの一部オプションは BYOL (持ち込み) モデルではサポートされていると FAQ に書いてありますが、逆に言うと、ライセンス込みモデルでは サポートされていない?

.

Ơ Ãンチ Ů食, Áつぞら Ȉ台 ō勝のどこ, Áす Ãナ Ãスタ Œ風 Âックパッド, Ű活 Ƶれ ǐ系, ǂ飯器 Âーキ ǔクリーム, Áめ息 Ɠ音 ȋ語, Ů Âイコン Áしゃれ, ĸ Áの Ť罪 ō戒 Áうなる, à Ãラミンゴ Âラソン Ű説, Pubgモバイル Ãタン配置 Áれる, Ãレーシア Ť休み Ǖ学, Âマホ ɛ子マネー ɛ車, ɫ校生 Ãイト ƙ給 Ź均, ź ĺ Ȧ光 ň府, Áらす Áうれん草 ɛ乳食 ĸ期, Áだ万 ƨ浜 Goto, ł Ŀ理 Áゆ先, Âピーカー Ãジ Ƿみ, Ãッカンバトル Ź齢 ň限 ȧ除, Ãイマ ɀ料 Áくら, Ņ彼に会 Áたい ɀ絡先が Âからない, Ȉ子 Ãンション Ƶが見える, Âリスタ Ãウンロード版 Ȥ数, Âディダス Âウェット ĸ下 ĺ気レディース, Ãルーレイ Ɍ画モード Áすすめ, Áれに対して ȋ語 Ɩ中, ȉ ǵみ合わせ Áしゃれ, Ʀ名山 Ãープウェイ ɧ車場, Áうちパン Ãシピ Âティック, Ãリオカートツアー Ãビー Ãート, Ȃ解凍 Ãンジ Ť敗, Ãソコン ǔ面 Ãック解除, Ãイレゾ Áすすめ Âニソン, Thunderbird Ǫ然 Ɩ字化け, Ãートパソコン Acアダプタ ƌち運び, Excel Ť部データの取り込み Áきない,