わんくま同盟大阪勉強会 #62
Microsoft Azure
SQL Database のご紹介
わんくま同盟大阪勉強会#62
SQLWorldおだ
わんくま同盟大阪勉強会 #62
自己紹介
• 織田 信亮@shinsukeoda
• 大阪で開発者やってます
• http://odashinsuke.hatenablog.com
• SQLWorld http://sqlworld.org/
わんくま同盟大阪勉強会 #62
SQLWorld って?
• SQL Server を中心に DB の勉強会やってます
• 正規化/モデリング, NoSQL とかも
• SQL を書くハンズオンやってます
– 平日夜開催 (2H程度)
– 提示されたお題に対して、SQL を書いてみる
– 検索だけ(SELECT) 4, 5 問
わんくま同盟大阪勉強会 #62
注意事項
• 現時点(2015/02/28) でのお話しです
• 最新の情報は公式Webでご確認下さい
わんくま同盟大阪勉強会 #62
SQL Database のご紹介
• Micorsoftが提供する クラウドRDB
– RDBは SQL Server をベースにしたもの
• 当初は SQL Azure という名前でした
• PaaS(Platform as a Service) で マイクロソフトが色々管理してくれています
わんくま同盟大阪勉強会 #62
わんくま同盟大阪勉強会 #62
SQL Server を使う場合…
1. 自前サーバー + SQL Server
–全部自分で管理
2. IaaS + SQL Server
– OS/SQL Server は自分で管理
3. SQL Database (PaaS)
–データベースは自分で管理
わんくま同盟大阪勉強会 #62
SQL Server との違い
• SQL Server には様々なサービスがある
– DB エンジン/SSAS/SSIS/SSRS…
• SQL Database では DB エンジンだけ
– Azure には SQL Reporting という SSRS 相当のサービスがありましたが、既にサービス終了
わんくま同盟大阪勉強会 #62
SQL Server との違い
• DB エンジンでも未サポートの機能あり…
• Enterprise だけの機能が使えたり…
• SQL Database だけの機能もあったり…
良い点/悪い点両方あります
わんくま同盟大阪勉強会 #62
SQL Database
基本と新機能
わんくま同盟大阪勉強会 #62
SQL DB ファイアーウォール
• IP アドレスによるアクセス制御
–デフォルトは全て接続拒否
– IP のレンジで指定
• サーバー単位/データベース単位で指定可
わんくま同盟大阪勉強会 #62
SQL DB サーバー
• 使うために最初に登録するもの
xxxxx.database.windows.net
• サーバーと言ってるが物理ではなく、エンドポイント
SQL Server のインスタンスとは違う
• 1サーバーに複数のデータベースを作成可能
わんくま同盟大阪勉強会 #62
SQL DB データベース
• 3冗長化されている
–マスター1台/セカンダリー2台
• 自動フェールオーバー
– Reconfiguration(更新の適用や異常検知時)
• 自動バックアップ
–一部のサービス階層(Service Tiers) のみ
わんくま同盟大阪勉強会 #62
サービス階層(Serivce Tiers)
• Web/Business
– 2015/9 に終了予定
– DBサイズの違い/ベストエフォート型
• Basic/Standard/Premium
–予測可能なパフォーマンス
–パフォーマンスレベル/提供機能の違い
– Basic/S0/S1/S2/S3/P1/P2/P3 の8段階
わんくま同盟大阪勉強会 #62
新しいサービス階層
• データベーススループットユニット(DTU) によるパフォーマンスレベル
• 提供機能の差異
– DBサイズ
–ポイントインタイム復元
–地理レプリケーション
–列ストアインデックス
–並列クエリ
わんくま同盟大阪勉強会 #62
DTU
• Azure SQL Database Benchmark によって測定された値
– OLTP ワークロードで頻繁に発生する様なデータベース操作でのパフォーマンス測定
– CPU/メモリ/DiskIO等 をセットにした単位
• ワークロードによっては数値通りになるとは限らない
– 5DTU => 50DTU にしたのに10倍にならないというケースもあり得る
わんくま同盟大阪勉強会 #62
ベンチマーク概要
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
わんくま同盟大阪勉強会 #62
サーバーの容量制限
• 1サーバーに 1600 DTU まで
– P3 なら 2個まで
• カスタマーに連絡すれば緩和可能
• Web/Business では 150 個まで
わんくま同盟大阪勉強会 #62
提供機能差異(運用面)
DB
サイズポイントインタイム
復元地理レプリケーション
Basic 2GB 7日以内 地理リストア
Standard 250GB 14日以内 地理リストア標準地理レプリケーション
Premium 500GB 35日以内 地理リストア標準地理レプリケーションアクティブ地理レプリケーション
わんくま同盟大阪勉強会 #62
ポイントインタイム復元
• 自動でバックアップ
–完全:1週間
–差分:1日
– トランザクションログ:5分
• 完全/差分は地域内でレプリケートされる
• 削除したデータベースも復旧可能
• 同じサーバーに新しいデータベースを作成
わんくま同盟大阪勉強会 #62
地理リストア
• 日次バックアップからデータベース復元
–バックアップが地理冗長(地域内コピー)
• 最大24時間以内の復旧
• 最大24時間のデータロスト
• 任意のリージョン/サーバーに作成可能
わんくま同盟大阪勉強会 #62
標準地理レプリケーション
• マイクロソフト指定のDRペアリージョンにセカンダリ配置
• オフラインセカンダリ
• 非同期コミット
–セカンダリへの反映完了を待たずコミット
わんくま同盟大阪勉強会 #62
標準地理レプリケーション
• フェールオーバー(障害発生時)
– 1時間経過でフェールオーバー可能
– 24時間経過すると、強制フェールオーバー
• 最大2時間以内の復旧
• 最大30分のデータロスト
わんくま同盟大阪勉強会 #62
アクティブ地理レプリケーション
• 最大4つの読取専用セカンダリを作成可能
• 非同期コミット
• レプリケーションは手動で管理
• フェールオーバーは手動で
• 最大1時間以内の復旧
• 最大5分のデータロスト
わんくま同盟大阪勉強会 #62
価格
• 1時間あたり~の時間割
– http://azure.microsoft.com/ja-
jp/pricing/details/sql-database/
• サービスレベル(Basic~P3) は、24時間以内に4回変更可能
–合計で最大4個のデータベースを変更出来る
–通常S2 で夜間は S0 とかの運用も可能
–ダウングレードする場合は、DBサイズや復旧機能に注意
わんくま同盟大阪勉強会 #62
監査
• 監査の設定を行い、アプリケーションの接続文字列を変更
– xxxx.database.secure.windows.net
–ログの出力先は Azure Table ストレージ
• ポータルのダッシュボードや Power Query
for Excel 等で確認
わんくま同盟大阪勉強会 #62
最近リリースされた新機能(V12)
• テーブルパーティショニング
• Window 関数
• .NET CLR(※外部リソースアクセス不可)
• データ変更の追跡(Change Tracking)
• ヒープテーブル (クラスタ化インデックス無し)
• 列ストアインデックス(クラスタ化/非クラスタ化)
• 並列クエリ
–列ストアと並列クエリは Premium のみ
わんくま同盟大阪勉強会 #62
最近発表された新機能(V12) preview
• Row Level Security (RLS)
– クエリの結果セットに対し、現在のユーザーを使って、フィルタリングするイメージ
• Dynamic Data Masking
–権限無いユーザーの場合、指定列のデータをマスキングして返す
• 透過的なデータ暗号化(TDE) (coming soon)
– SQL Server と同じ機能
わんくま同盟大阪勉強会 #62
スケールアウト
• スケールアウトの方法として、フェデレーションという機能があった。
– Web/Business と同時に廃止
• 代わりにクライアントライブラリを提供
– Azure SQL Database Elastic Scale Libraries
for .NET
–シャーディングを行うライブラリ
–マルチシャードクエリは、各シャードにクエリを投げて結果を UNION ALL した感じになる
わんくま同盟大阪勉強会 #62
その他諸々…
• データの圧縮が使用可
–パフォーマンスが出ない時は要検討
• データベース コピー
–非同期でコピーを作成
• インポート/エクスポート
– SQL Server SQL Database 等も可
わんくま同盟大阪勉強会 #62
その他諸々…
• 接続タイムアウトは 30秒以上にする
–デフォルト 15 秒
• リトライ処理を組み込む事
– リトライ間隔は 10秒(最低5秒以上)
わんくま同盟大阪勉強会 #62
参考資料 (日本語)
• 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/