わんくま同盟 大阪勉強会 #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/

Sql database のご紹介

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

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 V12からは仮想化されてそうな感じ http://blog.engineer-memo.com/2015/02/08/sql-database-v12-%e3%81%ae%e6%a7%8b%e6%88%90%e3%82%92-dmv-%e3%81%8b%e3%82%89%e8%aa%bf%e3%81%b9%e3%81%a6%e3%81%bf%e3%82%8b/
  • #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台 だったはず (同期コミット:トランザクションログの書き込み終わりの合図が来るまで待つ/非同期コミット:投げっぱなし) 以前は クラスター化インデックスが必須だったが、最新の update v12 でクラスタ化インデックスが無くても良くなった 自動バックアップは、新しいサービス階層(Service Tiers) でのみ サービス階層とはエディションみたいなもんと思ってください
  • #15 サービス階層:Edition みたいな物と思ってください。価格や機能が変わってくるものです。 ベストエフォート:使えるだけリソースを使う/近所に重い人がいるとパフォーマンスが悪くなる 予測可能なパフォーマンス:空いてる時も混んでる時も、ほぼ同じパフォーマンス/近所に重い人がいても、影響を受けない
  • #16 最大ワーカースレッド/セッション
  • #17 5DTU から 25DTU にしたのに 5倍にならない!とか Azure SQL Database Benchmark は公開されてなかったような
  • #18 この資料は S3 が無い。ちょっと古い感じ 何故単位が違うかというと、トランザクションの保証目安 Basic : 1時間当たり~ Standard:分当たり~ Premiumu:秒当たり~ レスポンス要件 が違う Basic 80%は2秒以内 Standard 90%は1秒以内 Premium 95%は0.5秒以内
  • #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サイズ/レストア機能に気を付けること。
  • #28 .NET CLR は SAFE Assembly のみ ONLINE の ALTER COLUMN TRUNCATE TABLE のパーティションサポート
  • #29 RLS と Dynamic Data Masking は SQL Server で未実装 (今の所 SQL DB だけの機能) Dynamic Data Masking は secure 接続でないと
  • #30 シャードグループの定義/管理/シャードに接続するルーティング/ルーティングのキャッシュ/複数シャードへのクエリ発行 等々 SQL Database 以外でも Elastic Scale 使える
  • #32 Reconfiguration/スロットリング等々の理由で接続が切れる事があるので、アプリケーションはリトライ処理すること Reconfiguration:SQL Database/OS への更新プログラム適用、レプリカ(プライマリ/セカンダリ)上での異常検知 プライマリ/セカンダリ でのフェールオーバーが30秒程度で終わるらしいので、30秒以上にしておくこと リトライ間隔が短いと 攻撃と判断され 一定期間、アプリケーションから全ての接続を拒否する(DoS Guard)が発生する可能性がある