不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

SQL Server 2016の新機能のダイジェストを見てみる

■はじめに

SQL Server 2008 R2のEOSL対応で、SQL Server 2017にアップグレードするので、
自習書のダイジェストをもとに2012からの新機能を勉強します。
SQL Server 2014は前回記事作ったので、SQL Server 2016の新機能を見てます。

hiyo-ac.hatenablog.com

www.microsoft.com 上記リンクから、「SQL Server 2016 の新機能の概要」をもとにしました。

下記の番号は自習書の目次の番号に合わせ、私の個人的なメモを記載します。

2.1 Operational Analysticsの概要~OLTPとデータ分析の両立~

インメモリOLTPで列ストアインデックスが利用できるようになったこと、非クラスタ化列ストアインデックスに対して更新ができるようになったことが強みのようでした。

3.2 動的データ マスクによる情報漏洩対策

一部の人にはマスキングしたデータを閲覧させたいという要件はどこにでもあります。
またプロダクション環境は全部見せていいが、そうではない環境はマスキングすることなど会社によってセキュリティポリシーもそれぞれかと思います。
マスキングする際はアプリケーションで毎回やっていたのが、DBで処理できるのはとても便利そうです。

3.3 行レベル セキュリティによるセキュリティ強化

接続するユーザに対して行単位で閲覧可否を制御する仕組みとのことです。
ニッチな機能の感じですが、使う機会はどこかにありそうで、これはユーザ定義関数とセキュリティポリシーを作らないといけないが難しそうでした。

3.4 Always Encryptedによる列データの暗号化

テーブルの列データを暗号化する機能で、セキュリティ規定が厳しい環境ではとても便利そうです。
暗号化には内部で証明書を利用しているとのことで、他サーバから接続する場合はその証明書を複製する必要があるとのことです。

3.5 TDE(透過的なデータ暗号化)の性能向上、インメモリOTLP対応

データベースファイルの暗号化を行う機能がすでにSQL Server 2008から提供されていたとのことで、この機能の性能向上とのことでした。いまの現場だとそんな要件がないのですが、もっとセキュリティがちがちなところだとファイル自体も暗号化せよといわれるの言われるのでしょうか。

3.6 テンポラル テーブルによるAudit(監査証跡

テンポラルテーブルが登場したのはSQL Server 2016からのようです。
過去の履歴を追う時に使いやすいとのことでちょっと気になっています。
マスタデータを別テーブルに過去のバックアップとしてSELECT INTOで複製するという手法を提案する方が多いので、テンポラルテーブルがあると無造作にDB上にテーブルが増えることもなく、過去の特定時点のデータを参照できるのでよさそうです。

4.1 SQL Server R Services(R統合)

Transact-SQLステートメントを利用してRスクリプトが記述できるとのことで、時代の流れに乗っていそうな機能です。 利用するにはインストール時に「R Services(データベースエンジン内)」をチェックしてインストールするとのこと。

4.2 JSON対応(FOR JSON、OPENJSON、JSON_VALUEなど)

各アプリケーションでJSON形式のデータを扱うことが多くなりましたので、この機能は個人的にとてもありがたいですね。
いままでd3.jsでグラフ作っていたのですが、いったんCSV形式に吐き出して、JSONに加工してみたいなことを一部やっていたのでいきなりJSON形式でデータ作れたらその中間処理の手間がなくなります。

4.3 Stretch Databse ~アクセス頻度の低いデータをクラウドへ~

この機能を使うとテーブルのデータをAzureへ配置することができるとのことです。
テープなどの安価な媒体がない場合にデータを長期間保持せよとなると、保管場所に困るので便利な機能かもしれません。

4.4 Azure バックアップURLの性能向上(ブロックBLOB対応)

AzureのブロックBLOB領域にデータを格納できるとのこと。

4.5 PolyBaseでHadoopアクセス(Hortonworks、HDInsight)

PolyBase は、Hadoop ファイル システム (HDFSHadoop File System)上にあるデータを、 SQL Server からアクセスできる機能です

とのことで、なるほど。Hadoop利用している人は目からうろこの機能なのでしょうか。   この機能を利用したいときは「外部データ用 PolyBase クエリサービス」をインストールするとのことです。

5.1 SQL Server 2014からの主な変更点

他にも機能が追加されているとのことでした。気になったのは下記です。

  • tempdbの拡張
  • MAXDOPやCE(基数推定)をDB単位で設定可能に(DBスコープ構成)
  • INSERT ... SELECT のパラレル処理

tempdbの拡張はインストール後にパラメータシートに基づき設定変更していましたが、インストール画面で設定ができるようになったとのことで便利そうです。
MAXDOPについてはサーバスコープ構成でしたが、DBスコープ構成になったので負荷を制限したいときには便利そうですね。

5.2 ライブクエリ統計(Live Query Statistics)

これはとても便利な機能で利用頻度は高そうです。いままでクエリを実行しているときにどこの処理まで動いているのかを追うのは職人技でした。これを使うと入門者でも簡単に実行状況がみれるのはうれしいですね。
利用方法は、Management Studioのツールバーの「ライブクエリ統計を含む」をクリックするだけとのことです。

5.3 クエリストアで性能監視、プラン固定

いままでdm_exec_query_statsでプランハンドルなど取得できクエリのプラン変更を確認できましたが、
クエリストアという機能で永続的に保管できるとのことです。
クエリストアを有効かするには、DBのプロパティから設定を行うとのことです。 クエリストアの最大容量に達すると、読み取り専用モードになり新しい情報は登録されなくなるとの点は注意が必要そうです。

5.4 Transact-SQLT-SQL)の強化

DROP…IF EXISTSが登場したのがこのバージョンとのことです。
そのほか、DBCC CHECKDBなどにMAXDOPオプションを利用可能になったとのことで、停止できないシステムでもメンテナンス作業がしやすくなったのではないかと思います。

5.5 AlwaysOn 可用性グループの拡張

StandardエディションでもAlwaysOnが2台で組めるようになったなど、AlwaysOnの拡張がされているようです。
ログ転送速度が向上したとのことで、遅延云々言われるのがなくなったのではないかと思います。

5.6 BI関連の強化

SSRS、SSAS、SSISなどが強化されたとのことでBI系が便利になったようです。
Datazenの統合でSSRSのグラフ表示などがとてもきれいになったとのことで、BI系に興味出てきました。

■おわりに

SQL Server 2016の目玉はOperational Analysticsということは初めて知りました。 またセキュリティ関連機能が多く、重要なトレンドの機能を盛り込んでいる感じがうかがえました。 新しい機能を利用することで性能が向上するのは良いことなのですが、開発者のスキルが低いと悲惨なことになりそうです…
新しい機能が増えれば増えるほど便利にはなりますが、その分運用は複雑になってしまうのは難しい。