Above & Beyond

日々のアウトプット記録

第12回 SQL Server 2019勉強会(1st Anniversary)

11/23(金)は「第12回 SQL Server 2019勉強会(1st Anniversary)」という勉強会に参加してきました。

sqlserver.connpass.com

タイトルにある通り、1周年記念回でした。内容はいつも通り盛りだくさんでした。

会場は日本マイクロソフトさんの会議室。写真撮るの忘れたので、以前参加したときの写真を貼っておきます。。。

f:id:kabukawa:20180721122901j:plain

SQL Server 2019 勉強会とは

その名の通り、Microsoft社のDBMSである SQL Serverについての勉強会です。 実は参加し始めた当初(昨年から参加を始めています)は SQL Server 2017 についての勉強会だったのですが、今年9月に SQL Server 2019 が発表(GAはまだ)されたので、SQL Server 2019をメイン対象という風に勉強会の名前と対象も変わっています。(別に2017以前のものを扱わなくなったというわけではなく、最新情報をキャッチアップし続けますよ、という考え方なんだと思います)

一応、Connpassのイベントの説明を引用しておくと

当イベントでは、最新版SQL Server 2019をはじめ、SQL Serverのテクノロジーを勉強していきます。 初心者向けのセッションもありますので、ぜひSQL Serverの未経験者でもご参加可能です。 また、SQL Serverを利用している現場、あるいは、SQL Serverをこれから導入しようとする現場のSE、PMの方々はぜひご参加ください。 現場のインフラ、コーディング課題(個人情報除く)をみんなで解決しましょう。

となっています。

なぜ参加したか

以前やっていた仕事でSQL Serverを使っていたため、何も知らずに使うのはちょっとどうなの?ということと、どちらかというと環境構築とか性能に関する知識を得たかったので、本で読むより実際に使っている人の話を聞いたほうが得るものが大きいだろうな、ということでConnpassで探したら、たまたま見つけたので参加、という感じです。

参加を始めたのがこのSQL Server 2017勉強会(上に書いたとおり、当時は2017だった)の2回め。その時は確か10人位しか入れない会議室での開催でした。初参加の勉強会でそれだけ参加者間の顔が近いのはこのときが初めてだったので、かなり緊張したのを覚えてます。

それが今や、2回も登壇する常連参加者になるとは。いやー、未来というのはわからないものですね! f:id:kabukawa:20180721182603j:plain:h400

参加してみて

各セッションの資料は公開されないことが多いので、ツイートから拾ったりしながら。

ちなみに、お菓子を食べながら聞けるので、話の内容は結構堅いのですが、雰囲気はゆるいです。


【初級者向け】SQL Serverのクエリ実行プランとパフォーマンス -SQL Serverエンジン、インディクスの基礎

楊さんの発表。

[資料はアップされたら貼ります]

SQL ServerSQL Serverエンジン、インディクスの基礎についてのセッション。 初級者向け、となっていますが、データベースの初心者というよりはSQL Serverは初めてだけど、何らかのデータベースは触っていて基本的な考え方は分かっている人向け、という感じですかね。

SQL Serverアーキテクチャ f:id:kabukawa:20181125192402p:plain

クエリ処理アーキテクチャ ガイド | Microsoft Docs

SQL Server エンジンの処理フロー

パーサーとは

オプティマイザ

オプティマイザからクエリ実行の経過、オプティマイザと統計情報との関係

実行プランとは

SQLの正しい書き方の重要性

SQL分はオプティマイザがプログラミングするための設計書である!」

この言葉、今日のセッションで一番言いたかったことなんだろうな、と思います。

エクステントの種類

インデックスについて

SQL Serverのインデックスは B-TreeかB+ Treeか? MSのドキュメントには B-Treeと書いてあるのでB-Treeと説明したところ、会場からB+ Treeでは?との声が。

B+ TreeもB-Treeの一種だからB-Treeと書いてあるのでは、とのこと。商用のRDBMSはどれもB+ Treeらしい。

クラスタ化インデックスの構造

クラスタ化インデックスの構造

SQL Server のインデックスのアーキテクチャとデザイン ガイド


【中級者、上級者向け】SQL Server 2019 最新情報 ReCap

Microsoft MVP Ozawaさんの発表。

[資料はアップされたら貼ります]

f:id:kabukawa:20181125214557j:plain

SQL Server 2019の特徴 f:id:kabukawa:20181125214626j:plain

SQL Server 2019新機能 f:id:kabukawa:20181125214727j:plain

SQL Server Data Cluster f:id:kabukawa:20181125214759j:plain

  1. データ仮想化
    • PlyBaseに新しく追加されたデータソースのコネクタを使用することで、データを移動することなく、外部データソースを参照可能
  2. Data Lake
    • スケーラブルなHDFSをストレージとして利用してDataLakeを構築し。格納されたデータをSparkやSQLを使用して容易にアクセスを行う
  3. データ収集
    • Big Data Clusterと、新しいPolyBaseコネクタを組み合わせることで外部データをSQL Serverのデータプールに取り込むことができる。

Big DataとAIの4つのV

  1. Velocity(速度)
  2. Variety(種類)
  3. Veracity(正確)
  4. Volume(容量)

Azure Data Studio(旧 SQL Operations Studio) f:id:kabukawa:20181125215928j:plain

docs.microsoft.com

様々なOSSが組み合わせられてBigData Clusterを構成

SQL Server 2019 のBig Data Cluster を扱う際に見ておきたい情報

blog.engineer-memo.com

ここでデモ。

プラットフォーム選択肢の強化 f:id:kabukawa:20181125220210j:plain

Linux対応だけでなく、Dockerコンテナ化とKubernetesへの対応をしている。

ミッションクリティカルな可用性 f:id:kabukawa:20181125220230j:plain Kubernetes上で Allways Onを構築できるようにすることで、Kubernetesの標準的な仕組みを使って高可用性を実現する(まだ途中)

その他、互換性レベルの変更などの話。


初級者、中級者向け】SQL ServerのAzure移行のいろいろ

Ijimaさんの発表。

[資料はアップされたら貼ります]

オンプレで動かしているSQL ServerをAzureのSQL Databaseに移行しようと検討を始めた、という内容。

ダウンタイム無くオンライン移行を検討しているが、個人で調査して作業をするには時間もお金もちょっとかかるので、「移行しました」というところまでは至っていない、とのこと。 社内にインフラが分かる人間が殆どおらず、実際に移行するにはお金もかかるので躊躇してしまう、というのはよく分かる。

動いているから良い、というのは裏を返せば動かしている人がいるということでコストで0でそれを実現できるわけではない

というのを理解してもらうのは結構大変。エキスパートからのアドバイスもされていたが、実際にやるならちゃんとお金を払ってコンサルなりSIerに依頼するべきかなぁ、と個人的には思います。(まぁ、SQL Serverクラウド移行で信頼できるSIerって有るのか?という問題は一旦置いておいて)

とはいえ、個人の力で安定運用を続けるのはかなりの負担だと思うので、上手く解決できるといいなぁと思いました。


【中級者向け】オープンソースを使ったSQL Server監視のいろいろ

Okuboさんの発表。

[資料はアップされたら貼ります]

OSSのZabbixを使ってWindowsのイベントを監視し、それをGrafanaで可視化する話。 SQL Server固有の機能を監視するには専用のツールを使ったほうが良いとは思いますが、台数が増えるとそれぞれのサーバーにリモートデスクトップでログインして監視とか大変になるので、そのあたりをZabbixとGrafanaの組み合わせで監視するようなユースケースを想定されて構築されたようです。

Zabbix www.zabbix.com

Grafana grafana.com

Windowsサーバーの管理についてはマイクロソフトからWindows Admin Centerというものが提供されているので、こちらを使ったほうが良いのではないか、という話も出されていました。ただ、ZabbixやGrafanaといったOSSを使うメリットは、Windows以外のプラットフォームでも対象にできることなので、そのあたりも含めて判断をすれば良いのかな、と思いました。

docs.microsoft.com


【中級者、上級者向け】Configure SQL Server 2019 PolyBase to access external data in MySQL and SQL Server and Excel Files

楊さんの発表。

Configure SQL Server 2019 PolyBaseto access external data in MySQL and SQL Server and Excel Files

Configure SQL Server 2019 PolyBase Script

最初に mssql-cli という次世代 sqlcmd の紹介。

これはPythonで書かれたSQL Server向けのインタラクティブシェルで、入力補完(IntelliSense)や構文の強調表示、ショートカットキー、複数行編集モードなどを備えたコマンドラインツールです。マイクロソフトが提供しています。なかなか良さげなツールなので、使ってみたい!興味を持たれた方は、ツイートのリンク先からどうぞ。

セッションは PolyBase の話。PolyBase がどんなものかは以下のリンクで確認してください。

PolyBase とは | Microsoft Docs

PolyBase自体はSQL Server2017のときから使えるようになっていましたが、接続先の対象が限られていたので積極的に採用はされてこなかった気がします。

HDFS データ ソースの Java コネクタ
HDFS データで標準 T-SQL ステートメントを使った十分に統合されたクエリを可能にする PolyBase Java Connector を含みます。 f:id:kabukawa:20181125224310j:plain

Polybaseが2019で変わる点
SQL Server2019ではHDFS用のコネクタだけでなく、外部データ用 PolyBase クエリ サービスを使って Oracle、Teradata、SQL Server などのリレーショナルおよび非リレーショナルなデータ間で標準 T-SQL ステートメントを使った十分に統合されたクエリを可能にする PolyBase テクノロジを含みます。 f:id:kabukawa:20181125224323j:plain

外部データとの接続はODBCを使って行われるので、適合するODBCドライバさえあればSQL Server 2019をインターフェースにして、様々なデータソースを跨いだT-SQLによるデータの検索などが透過的に行えるようになる、ということのようです。

ここで以下のような構成での クエリ実行が行われました。 f:id:kabukawa:20181125225625j:plain 様々なデータソースから列の結合もでき、きちんとデータが取得できていました。 ただし、まだバグも有るようですので、いきなり本番運用で使うのは厳しいかもしれません。 (でもメチャクチャ期待したい機能ですね!)

SQL Server 2019 の PolyBase の ODBC を使用した接続のドキュメントが公開されました

標準で提供されるODBCドライバは少ないのですが、CData Softwareさんの提供されているドライバを使うと様々なデータソースへの接続ができるようです。

今回のでデモではExcelへの接続ドライバを使用していましたが、Twitteのデータなどへのドライバも提供されているなど、この機能を使いたいという方はこちらの方も併せて使ってみることを検討されると良いと思います。

セッションまとめ f:id:kabukawa:20181125225829j:plain


まとめ

今回は1周年記念の回ということでしたが、いつも通りの盛り沢山な勉強会でした。 内容も期待以上で、とても良かったと思います。 個人的には SQL Server 2019の情報を分かりやすく聞くことができ、理解も結構できたような気がするので参加してよかったなと思います。

次回予告もされました。なんと1日がかりの開催!

独り言

そもそもこの勉強会は毎月第3土曜日(今回は会場の都合で祝日の木曜日)開催で、13時から18時まで半日を使って行われています。 ここまで読んでもらって分かる通り、内容もかなりミッチリと仕込まれていて、真面目にSQL Serverを勉強したい人にはうってつけだと思います。 反面、「SQL分かりません、これから勉強します」という方がいきなり来ると、何を言っているかわからないかもな、とも思います。 (実際に、SQL ServerSQLを使うことができるデータベース一般のこと思って参加される方も時々いらっしゃいます) 良い悪いということではなく、そのあたりをうまく捌くにはどうすれば良いのかな、なんてことを思いました。

f:id:kabukawa:20181123181756j:plain:w800

現場からは以上です!