開発者必見! Windows Server&SQL Server 2016テクニカルガイド―IT提案セミナーレポート

2017年1月17日(火)
高橋 正和

SQL Server 2016の新機能を解説

SQL Server 2016については、エディフィストラーニング株式会社の沖要知氏が、デモをまじえて解説した。

氏はまず、これまでのSQL Serverの進化を図示し、バージョンアップしたときの新機能が、コア機能からデータ活用・データ分析に移ってきていることを示した。

それに関連して、インテルXeon E7-8800 v4ではメモリ最大24TBまでとなっていることや、Windows Server 2016の最大メモリサイズが24TBになったことを紹介した。

エディフィストラーニング株式会社 沖要知氏(ラーニングソリューション部)
エディフィストラーニング株式会社 沖要知氏(ラーニングソリューション部)

続いて、SQL Server 2016への移行パスが解説された。移行できるのはWindows Server 2005 SP4以降だ。ただし、OSのバージョンごとに互換性レベルが定められており、SQL Server 2016が100以上のところ、Windows Server 2005 SP4は60〜90で強制的に100に変更されるため、検証が必要だという。これについては、検証ツールがUpgrade AdvisorからMicrosoft Data Migration Assistantに変わったことも注意点として挙げられた。

SQL Server 2016のプリンシパルエディションはEnterpriseとStandardがある。また、Expressと同じように、開発とテストにのみ利用可能なDeveloperが無償となった。11月にリリースされたSQL Server 2016 SP1では、ExpressとStandardの機能が増えたことも説明された。沖氏によると、アプリケーションをStandardからEnterpriseに透過的に移行できるようにするためだという。

ここで、Microsoft Data Migration Assistantの使い方が解説され、実際にデモもなされた。Microsoft Data Migration Assistantは、問題点のほか、移行後に設定したほうがいい機能のレコメンデーションもしてくれるという。デモでは、昔のSQL文の書き方や古いデータ型の指摘と同時に、セキュリティ強化のレコメンドも表示された。

また、Microsoft Data Migration Assistantでは、共有フォロダーを介してデータベースのバックアップと復元ができるというところもデモされた。なお、他社製品のデータベースの移行については、SQL Server Migration Asistant(SSMA)が紹介された。

SQL Server 2016のインメモリOLTP

ここから、SQL Server 2016の新機能が、「インメモリOLTPの強化」「列ストアインデックス」「データベースセキュリティの強化」「可用性向上」に分けて語られた。

1つめはインメモリOLTPの強化だ。現代のマシンではメモリが非常に広大になっており「これまでのデータベースの、データがストレージにある前提の設計でいいのか」という点を沖氏はインメモリの必要性として述べた。

沖氏は、従来のRDBMSエンジンとインメモリOLTPのアーキテクチャの図を示した。従来のRDBMSエンジンではロックやラッチによる排他制御が入るが、インメモリではそれがなく、ページではなくレコードや行がそのまま扱われると説明がなされた。

インメモリかどうかは、テーブル単位で設定するという。データベースのインメモリへの手順として、ALTER DATABASEでインメモリ対応し、メモリ最適化テーブルを定義し、ネイティブコンパイルストアドプロシージャの定義をインメモリを使ったものに変更する方法が説明された。

ここで従来のRDBMSエンジンとインメモリOLTPのパフォーマンスをデモし、2倍のパフォーマンスとなるところを見せた。

インメモリOLTPの機能は以前からあったが、SQL Server 2016で本格的なものになったという。SQL Server 2014と2016のインメモリOLTPを比較し、特にSQL Server 2014は256GBの制限があったが、2016ではOSの上限まで使えるようになったことが紹介された。

SQL Server 2016の列ストアインデックス

2つめは、列ストアインデックスだ。以前からあった機能だが、沖氏はSQL Server 2012・2014・2016の列ストアインデックスの機能を比較。SQL Server 2016では非クラスター化列ストアインデックスが更新可能になり、フィルター設定も可能になった。

氏は非クラスター化列ストアインデックスが更新可能になった手法として、行の挿入や削除がデルタストアに対してなされ、定期的にデルタストアからインデックスが更新される(タプルムーブ)ことが解説された。

デモとしては、テーブルスキャンになってしまうクエリが、列ストアインデックスを作ることで、インデックススキャンになるところを見せた。

そして沖氏は、インメモリにより小さい領域のI/Oになることと、OLTPとアナリティクスが同じにできることを利点として語った。

SQL Server 2016のセキュリティ

3つめはセキュリティだ。SQL Server 2016のセキュリティ機能として、動的データマスク(DDM)と、行レベルセキュリティ(RLS)、Always Encryptedが紹介された。

まず、行レベルセキュリティ(RLS)は、ユーザーのIDやロールによって表示できる行をマスクできるものだ。データベースインスタンスの管理者でもマスクされる。沖氏は行レベルの設定例として、Windows認証によるログインを設定し、マスクを判定する述語関数を作成し、それをセキュリティポリシーに追加する手順を紹介し、実際にデモした。

動的データマスク(DDM)は、クレジットカードなどの重要な情報を、表示のときに「XXXX」のようにマスキングする機能だ。マスク関数により、たとえばカード番号はすべてマスクし、メールアドレスは一部マスクし、パスワードは1文字目以外をマスクする、といったことができることが、デモをまじえて説明された。

Always Encryptedは、通信経路も含め、常に暗号化した状態でデータを操作するものだ。鍵(列マスターキー)はユーザーが持ち、持っていないユーザーはデータを見られないという。これについてデモがなされ、同じデータは暗号化したときに同じ内容になってしまう「決定論的」と、違う内容になるがそれによりインデックスが効かなくなる「ランダム化」の2種類の暗号化方法のトレードオフについても説明された。

SQL Server 2016の可用性

4つめは可用性向上について、「AlwaysOn」という言葉で紹介された。AlwaysOnはフェールオーバークラスタリングインスタンス(FCI)と可用性グループからなる統合された管理環境の総称だという。フェールオーバークラスターについては吉田氏によるWindows Server 2016の解説で扱われたことから、沖氏は可用性グループについて解説した。

沖氏はSQL Server 2016での可用性グループの拡張として、自動フェールオーバーターゲット数が2から3になったことや、読み取り可能なセカンダリでのロードバランシング、ADドメイン環境に依存しない可用性グループ、データベースレベルの正常性検出、自動シード処理を挙げた。

この中でもADドメイン環境に依存しない可用性グループについてデモがなされた。ワークグループ環境やマルチドメイン構成でのフェールオーバークラスター構成が可能になったというものだ。

こうした解説やデモのまとめとして沖氏は、構成は1種類ではなく柔軟な可用性構成がとれることを説明し、「最適な構成を選んで提案していってほしい」と結んだ。

イベントページでは当日配布された資料のダウンロードやセッションの動画を確認できます。 https://www.impressbm.co.jp/event/impress_seminar/

フリーランスのライター&編集者。IT系の書籍編集、雑誌編集、Web媒体記者などを経てフリーに。現在、「クラウドWatch」などのWeb媒体や雑誌などに幅広く執筆している。なお、同姓同名の方も多いのでご注意。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています