Microsoft Azure 
SQL Database のご紹介 
2014/10/30 三木会 
SQLWorld おだ
自己紹介 
織田信亮@shinsukeoda 
大阪で開発者やってます 
http://odashinsuke.hatenablog.com 
SQLWorld http://sqlworld.org/ 
Micorsoft MVP for SQL Server 
2012/10~2015/09
SQLWorld って? 
SQL Server を中心にDB の勉強会やってます 
正規化/モデリング, NoSQL とかも 
SQL を書くハンズオンやってます 
平日夜開催(2H程度) 
提示されたお題に対して、SQL を書いてみる 
検索だけ(SELECT) 4, 5 問
注意事項 
現時点(2014/10/30) でのお話しです 
最新の情報は公式Webでご確認下さい
SQL Database のご紹介 
Micorsoft が提供するクラウドRDB 
RDBはSQL Server をベースにしたもの 
当初はSQL Azure という名前でした 
PaaS(Platform as a Service) でマイク 
ロソフトが色々管理してくれています
SQL Server を使う場合… 
1. 自前サーバー+ SQL Server 
全部自分で管理 
2. IaaS + SQL Server 
OS/SQL Server は自分で管理 
3. SQL Database (PaaS) 
データベースは自分で管理
SQL Server との違い 
SQL Server には様々なサービスがある 
DB エンジン/SSAS/SSIS/SSRS… 
SQL Database ではDB エンジンだけ 
Azure にはSQL Reporting というSSRS 
相当のサービスがありましたが、 
2014/10/31 でサービス終了
SQL Server との違い 
DB エンジンでも未サポートの機能あり… 
Enterprise だけの機能が使えたり… 
良い点/悪い点両方あります
SQL Database 
基本と新機能
SQL DB ファイアーウォール 
IP アドレスによるアクセス制御 
初期は全て接続拒否 
IP のレンジで指定 
サーバー単位/データベース単位で指定可
SQL DB サーバー 
使うために最初に登録するもの 
xxxxx.database.windows.net 
サーバーと言ってるが物理ではなく、エ 
ンドポイント 
SQL Server のインスタンスとは違う 
1サーバーに複数のデータベースを作成出 
来る
SQL DB データベース 
3冗長化されている 
マスター1台/セカンダリー2台 
テーブルにクラスター化インデックスが 
必須 
自動フェールオーバー 
自動バックアップ 
一部のサービス階層(Service Tiers) のみ
サービス階層(Serivce Tiers) 
Web/Business 
2015/4 に終了予定 
DBサイズの違い/ベストエフォート型 
Basic/Standard/Premium 
パフォーマンスレベル/提供機能の違い 
Basic/S0/S1/S2/P1/P2/P3 の7段階
新しいサービス階層 
データベーススループットユニット 
(DTU) によるパフォーマンスレベル 
提供機能の差異 
DBサイズ 
ポイントインタイム復元 
地理レプリケーション
DTU 
Azure SQL Database Benchmark に 
よって測定された値 
OLTP ワークロードで頻繁に発生する様な 
データベース操作でのパフォーマンス測定 
CPU/メモリ/DiskIO等をセットにした単位 
ワークロードによっては数値通りになる 
とは限らない
ベンチマーク概要 
DTU トランザクション/時間レスポンス要件 
Basic 5 16,600/時間=> 4.6/秒80% は2秒以内に 
Standard - S0 10 521/分=> 8.6/秒90% は1秒以内に 
Standard - S1 20 934/分=> 15.5/秒〃 
Standard - S2 50 2,570分=> 42.8/秒〃 
Premium - P1 100 105/秒95% は0.5秒以内に 
Premium - P2 200 228/秒〃 
Premium - P3 800 735/秒〃 
Azure SQL Database Benchmark Overview 
http://msdn.microsoft.com/en-us/library/azure/dn741327.aspx
サーバーの容量制限 
1サーバーに1600 DTU まで 
P3 なら2個まで 
カスタマーに連絡すれば緩和可能 
Web/Business では150 個まで
提供機能差異 
DB 
サイズ 
ポイントインタイム 
復元 
地理レプリケーション 
Basic 2GB 7日以内地理リストア 
Standard 250GB 14日以内地理リストア 
標準地理レプリケーション 
Premium 500GB 35日以内地理リストア 
標準地理レプリケーション 
アクティブ地理レプリケーション
ポイントインタイム復元 
自動でバックアップ 
完全:1週間 
差分:1日 
トランザクションログ:5分 
完全/差分は地域内でレプリケートされる 
削除したデータベースも復旧可能 
同じサーバーに新しいデータベースが作 
成される
地理リストア 
日次バックアップからデータベース復元 
バックアップが地理冗長(地域内コピー) 
最大24時間以内の復旧 
最大24時間のデータロスト 
任意のリージョン/サーバーに作成可能
標準地理レプリケーション 
マイクロソフト指定のDRペアリージョン 
にセカンダリ配置 
オフラインセカンダリ 
非同期コミット 
セカンダリへの反映完了を待たずコミット
標準地理レプリケーション 
フェールオーバー(障害発生時) 
1時間経過でフェールオーバー可能 
24時間経過すると、強制フェールオーバー 
最大2時間以内の復旧 
最大30分のデータロスト
アクティブ地理レプリケーション 
最大4つの読取専用セカンダリを作成可能 
非同期コミット 
レプリケーションは手動で管理 
フェールオーバーは手動で 
最大1時間以内の復旧 
最大5分のデータロスト
価格 
1時間あたり~の時間割 
http://azure.microsoft.com/ja-jp/ 
pricing/details/sql-database/ 
サービスレベル(Basic~P3) は、24時間 
以内に4回変更可能 
合計で最大4個のデータベースを変更出来る 
通常S2 で夜間はS0 とかの運用も可能 
ダウングレードする場合は、DBサイズや復 
旧機能に注意
監査 
監査の設定を行い、アプリケーションの 
接続文字列を変更 
xxxx.database.secure.windows.net 
ログの出力先はAzure Table ストレージ 
ポータルのダッシュボードやPower 
Query for Excel 等で確認
スケールアウト 
スケールアウトの方法として、フェデ 
レーションという機能があった。 
Web/Business と同時に廃止 
代わりにクライアントライブラリを提供 
Azure SQL Database Elastic Scale 
Libraries for .NET 
シャーディングを行うライブラリ
その他諸々… 
データの圧縮が使用可 
パフォーマンスが出ない時は要検討 
データベースコピー 
非同期でコピーを作成 
インポート/エクスポート 
SQL Server  SQL Database 等も可
その他諸々… 
接続タイムアウトは30秒以上にする 
デフォルト15 秒 
リトライ処理を組み込む事 
リトライ間隔は10秒(最低5秒以上)
参考資料(日本語) 
Azure SQL データベース 
http://msdn.microsoft.com/ja-jp/ 
library/azure/ee336279.aspx 
Microsoft Japan SQL Server Support 
Team Blog 
http://blogs.msdn.com/b/jpsql/ 
Micorosoft Azure Japan Team Blog 
http://blogs.msdn.com/b/windowsazurej/

Sql database のご紹介

Editor's Notes

  • #6 ・SQL Server と殆ど変らない ・OS や SQL Server 自体のパッチ/データベースの バックアップ や 冗長性 等も MS が見てくれる。 ・利用者は、DB へのアクセス制御 (FW) や、テーブル等Objectの作成など
  • #8 IaaS (Azure VM/Amazon 等々) 一般のクラウドサービスだと 仮想マシン立ててその上に SQL Server を載せて…って感じかと思われますが、 SQL Database の場合は、安価な替えの効くサーバーの上に直接 SQL Server を載せて動かしているそうです。(マルチテナント) http://social.technet.microsoft.com/wiki/contents/articles/1695.inside-microsoft-azure-sql-database.aspx
  • #9 Analysis Services/Integration Services/Reporting Services/Agent …
  • #10 2012 で増えた SEQUENCE や 列ストア、2014 の In-Memory OLTP(メモリ最適化テーブル) 等は使えません。 逆に Enterprise でしか使えない、オンラインでのインデックス再構築、行/ページ圧縮 等々
  • #12 管理ポータル/SQL/API で変更可能
  • #13 同じサーバーに複数DBを作成した場合でも、実際に稼働している物理サーバーは異なる。なので、跨ったクエリは書けない。 SQL Server なら書ける
  • #14 3冗長化も 同期コミット1台/非同期コミット1台 だったはず (同期コミット:トランザクションログの書き込み終わりの合図が来るまで待つ/非同期コミット:投げっぱなし) SQL Database のレプリケーションは独自実装 (Always On とかとは違う) そのため、クラスター化インデックスが必須で無いとそのテーブルにはデータを追加出来ない 自動バックアップは、新しいサービス階層(Service Tiers) でのみ サービス階層とはエディションみたいなもんと思ってください
  • #15 Edition みたいな物と思ってください。価格や機能が変わってくるものです。
  • #16 最大ワーカースレッド/セッション
  • #17 5DTU から 25DTU にしたのに 5倍にならない!とか Azure SQL Database Benchmark は公開されてなかったような
  • #18 何故単位が違うかというと、トランザクションの保証目安 Basic : 1時間当たり~ Standard:分当たり~ Premiumu:秒当たり~
  • #20 地理レプリケーションはまだ Preview だったかな?
  • #21 オペミスでテーブル消した/データ消したとかへの対応 同一地域内にあるペアのリージョンにもコピー。日本でいうと 東と西 災害時のバックアップの可用性確保 別サーバーは無理/稼働中の場合は、2つ立ち上がる事になるので注意。 元のやつを ALTER DATABASE で名前変えて、復元したやつを ALTER DATABASE で名前戻して、元のやつを DROP とか
  • #22 RTO 目標復旧時間 (Recovery Time Objective) RPO 目標復旧地点 (Recovery Point Objective)
  • #24 セカンダリへの反映完了を待たずコミットしているので、データロストの可能性あり。 障害復旧の時間を待っていられるなら、フェールオーバーしないという選択肢も可能。 フェールオーバーをしない場合は、データのロストが無いので待てるなら待つという選択肢もある。 ただし、24時間経つと強制フェールオーバー
  • #25 レプリケーションを切ると読書可能な通常のDB
  • #26 Premium => Standard や Standard => Basic にする場合は、DBサイズ/レストア機能に気を付けること。
  • #27 Preview
  • #28 シャードグループの定義/管理/シャードに接続するルーティング/ルーティングのキャッシュ/複数シャードへのクエリ発行 等々 SQL Database 以外でも Elastic Scale 使えそうな感じ
  • #30 Reconfiguration/スロットリング等々の理由で接続が切れる事があるので、アプリケーションはリトライ処理すること Reconfiguration:SQL Database/OS への更新プログラム適用、レプリカ(プライマリ/セカンダリ)上での異常検知 プライマリ/セカンダリ でのフェールオーバーが30秒程度で終わるらしいので、30秒以上にしておくこと リトライ間隔が短いと 攻撃と判断され 一定期間、アプリケーションから全ての接続を拒否する(DoS Guard)が発生する可能性がある