11/23(金)は「第12回 SQL Server 2019勉強会(1st Anniversary)」という勉強会に参加してきました。
タイトルにある通り、1周年記念回でした。内容はいつも通り盛りだくさんでした。
会場は日本マイクロソフトさんの会議室。写真撮るの忘れたので、以前参加したときの写真を貼っておきます。。。
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回も登壇する常連参加者になるとは。いやー、未来というのはわからないものですね!
参加してみて
各セッションの資料は公開されないことが多いので、ツイートから拾ったりしながら。
1周年記念!はじまりました。
— kabukawa (@kabukawa) 2018年11月23日
現在会場説明中。
#JSSUG
ちなみに、お菓子を食べながら聞けるので、話の内容は結構堅いのですが、雰囲気はゆるいです。
この勉強会、おやつが毎回充実してる。しかも飲み物はマイクロソフトさん提供で飲み放題(笑) #JSSUG pic.twitter.com/w0ZsN195Xz
— kabukawa (@kabukawa) 2018年11月23日
【初級者向け】SQL Serverのクエリ実行プランとパフォーマンス -SQL Serverエンジン、インディクスの基礎
楊さんの発表。
[資料はアップされたら貼ります]
SQL ServerのSQL Serverエンジン、インディクスの基礎についてのセッション。 初級者向け、となっていますが、データベースの初心者というよりはSQL Serverは初めてだけど、何らかのデータベースは触っていて基本的な考え方は分かっている人向け、という感じですかね。
データベースの基本的な話ではあるけど、初心者向けとしては用語説明を入れないと難しいかも。。。
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
クエリ処理アーキテクチャ ガイド | Microsoft Docs
SQL Server エンジンの処理フロー
エンジン(処理フロー)#JSSUG pic.twitter.com/tTrSbadfDa
— kabukawa (@kabukawa) 2018年11月23日
パーサーとは
パーサーとは
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG pic.twitter.com/yLidlXvN9s
オプティマイザ
オプティマイザ
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG pic.twitter.com/nEwtqI2jpP
オプティマイザからクエリ実行の経過、オプティマイザと統計情報との関係
オプティマイザからクエリ実行の経過、オプティマイザと統計情報との関係
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG pic.twitter.com/m5MtOFLgLa
実行プランとは
実行プランとは
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG pic.twitter.com/nviB58hVJ9
SQLの正しい書き方の重要性
SQLの正しい書き方の重要性
— kabukawa (@kabukawa) 2018年11月23日
「SQL分はオプティマイザがプログラミングするための設計書である!」
#JSSUG
この言葉、今日のセッションで一番言いたかったことなんだろうな、と思います。
エクステントの種類
エクステントの種類
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG pic.twitter.com/iSpP8LGV2l
インデックスについて
インデックスについて#JSSUG pic.twitter.com/2h9BhWPZ9z
— kabukawa (@kabukawa) 2018年11月23日
SQL Serverのインデックスは B-TreeかB+ Treeか? MSのドキュメントには B-Treeと書いてあるのでB-Treeと説明したところ、会場からB+ Treeでは?との声が。
ここにはB Treeと書いてある。https://t.co/8qkaAxJ8Sz
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
B+ TreeもB-Treeの一種だからB-Treeと書いてあるのでは、とのこと。商用のRDBMSはどれもB+ Treeらしい。
クラスタ化インデックスの構造
クラスタ化インデックスの構造https://t.co/abbVIqOILC
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
非クラスタ化インデックスの構造
非クラスタ化インデックスの構造https://t.co/QgeCA5Tf0I
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
SQL Server のインデックスのアーキテクチャとデザイン ガイド
たぶんこのあたりの話をしている。
— kabukawa (@kabukawa) 2018年11月23日
SQL Server のインデックスのアーキテクチャとデザイン ガイドhttps://t.co/8qkaAxJ8Sz
#JSSUG
【中級者、上級者向け】SQL Server 2019 最新情報 ReCap
Microsoft MVP Ozawaさんの発表。
[資料はアップされたら貼ります]
SQL Server 2019の特徴
SQL Server 2019新機能
SQL Server Data Cluster
SQL Server 2019 ビッグ データ クラスターとはhttps://t.co/Mgo3RDTv28
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
- データ仮想化
- PlyBaseに新しく追加されたデータソースのコネクタを使用することで、データを移動することなく、外部データソースを参照可能
- Data Lake
- データ収集
- Big Data Clusterと、新しいPolyBaseコネクタを組み合わせることで外部データをSQL Serverのデータプールに取り込むことができる。
Big DataとAIの4つのV
- Velocity(速度)
- Variety(種類)
- Veracity(正確)
- Volume(容量)
Azure Data Studio(旧 SQL Operations Studio)
docs.microsoft.comAzure Data Studio
— kabukawa (@kabukawa) 2018年11月23日
2019向けの拡張
・Notebook
・PolyBase外部テーブル
・Bog Data Cluster
#JSSUG
様々なOSSが組み合わせられてBigData Clusterを構成
様々なOSSが組み合わせられてBigData Clusterが構成されている。
— kabukawa (@kabukawa) 2018年11月23日
・Elasticsearch+Kibanaでログ
・Graphana
などなど
#JSSUG
SQL Server 2019 のBig Data Cluster を扱う際に見ておきたい情報
ここでデモ。
プラットフォーム選択肢の強化
Linux対応だけでなく、Dockerコンテナ化とKubernetesへの対応をしている。
ミッションクリティカルな可用性 Kubernetes上で Allways Onを構築できるようにすることで、Kubernetesの標準的な仕組みを使って高可用性を実現する(まだ途中)
使う側としてはSQL Serverをインターフェースにして単一の手法(SQL)で様々なデータへアクセスが可能。
— kabukawa (@kabukawa) 2018年11月23日
環境作ったいるする側にとっては、対象がDBだけではなくなるので、複雑だし覚えることも多い。
トラブルが合ったときに原因の切り分けとか大変かもなぁ、とは思う。
#JSSUG
SQL Server2019で強化された様々な機能を使いこなすにはk8sの知識は必要(というか必須)っぽい。ここまで思い切って乗ってくるとは。。。
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
その他、互換性レベルの変更などの話。
DB EngineでUTF-8がサポートされた。
— kabukawa (@kabukawa) 2018年11月23日
・NCHAR/NVARCHARでは引き続きUTF-16が使用される
・ASCII文字を使っている場合にサイズを節約できる
照合順序を新設されたものを指定することでUTF-8の文字を格納可能
#JSSUG
SQL Database で軽量なクエリプロファイリングを使用し、「実行中のクエリの情報」を取得するhttps://t.co/zcrLRKHdfq
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
SQL Serverの機械学習サービスの言語としてR/Pythonの他にJavaが使えるようになった。但し、スクリプトの状態ではなくクラスを指定する形。利用のユースケースとしては機械学習というよりはCLRの代わりでも利用?
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
初級者、中級者向け】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
Grafana
— kabukawa (@kabukawa) 2018年11月23日
一度使うと他のツールには戻れない。
中毒性がある可視化ツール(笑)
#JSSUG
Windowsサーバーの管理についてはマイクロソフトからWindows Admin Centerというものが提供されているので、こちらを使ったほうが良いのではないか、という話も出されていました。ただ、ZabbixやGrafanaといったOSSを使うメリットは、Windows以外のプラットフォームでも対象にできることなので、そのあたりも含めて判断をすれば良いのかな、と思いました。
【中級者、上級者向け】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 の紹介。
新しい CUI ツール mssql-cli の使い方https://t.co/ozKonOozAW
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
これはPythonで書かれたSQL Server向けのインタラクティブシェルで、入力補完(IntelliSense)や構文の強調表示、ショートカットキー、複数行編集モードなどを備えたコマンドラインツールです。マイクロソフトが提供しています。なかなか良さげなツールなので、使ってみたい!興味を持たれた方は、ツイートのリンク先からどうぞ。
セッションは PolyBase の話。PolyBase がどんなものかは以下のリンクで確認してください。
PolyBase自体はSQL Server2017のときから使えるようになっていましたが、接続先の対象が限られていたので積極的に採用はされてこなかった気がします。
HDFS データ ソースの Java コネクタ
HDFS データで標準 T-SQL ステートメントを使った十分に統合されたクエリを可能にする PolyBase Java Connector を含みます。
Polybaseが2019で変わる点
SQL Server2019ではHDFS用のコネクタだけでなく、外部データ用 PolyBase クエリ サービスを使って Oracle、Teradata、SQL Server などのリレーショナルおよび非リレーショナルなデータ間で標準 T-SQL ステートメントを使った十分に統合されたクエリを可能にする PolyBase テクノロジを含みます。
外部データとの接続はODBCを使って行われるので、適合するODBCドライバさえあればSQL Server 2019をインターフェースにして、様々なデータソースを跨いだT-SQLによるデータの検索などが透過的に行えるようになる、ということのようです。
ここで以下のような構成での クエリ実行が行われました。 様々なデータソースから列の結合もでき、きちんとデータが取得できていました。 ただし、まだバグも有るようですので、いきなり本番運用で使うのは厳しいかもしれません。 (でもメチャクチャ期待したい機能ですね!)
SQL Server 2019 の PolyBase の ODBC を使用した接続のドキュメントが公開されました
SQL Server 2019 の PolyBase の ODBC を使用した接続のドキュメントが公開されましたhttps://t.co/5A76pSiv0g
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
標準で提供されるODBCドライバは少ないのですが、CData Softwareさんの提供されているドライバを使うと様々なデータソースへの接続ができるようです。
CData Software Japan, Inc.https://t.co/4oMop9JeKz
— kabukawa (@kabukawa) 2018年11月23日
#JSSUG
今回のでデモではExcelへの接続ドライバを使用していましたが、Twitteのデータなどへのドライバも提供されているなど、この機能を使いたいという方はこちらの方も併せて使ってみることを検討されると良いと思います。
セッションまとめ
まとめ
今回は1周年記念の回ということでしたが、いつも通りの盛り沢山な勉強会でした。 内容も期待以上で、とても良かったと思います。 個人的には SQL Server 2019の情報を分かりやすく聞くことができ、理解も結構できたような気がするので参加してよかったなと思います。
次回予告もされました。なんと1日がかりの開催!
次回予告。ハッカソンDay!
— kabukawa (@kabukawa) 2018年11月23日
しかも朝から!
#JSSUG pic.twitter.com/GlfZ8e505a
独り言
そもそもこの勉強会は毎月第3土曜日(今回は会場の都合で祝日の木曜日)開催で、13時から18時まで半日を使って行われています。 ここまで読んでもらって分かる通り、内容もかなりミッチリと仕込まれていて、真面目にSQL Serverを勉強したい人にはうってつけだと思います。 反面、「SQL分かりません、これから勉強します」という方がいきなり来ると、何を言っているかわからないかもな、とも思います。 (実際に、SQL ServerをSQLを使うことができるデータベース一般のこと思って参加される方も時々いらっしゃいます) 良い悪いということではなく、そのあたりをうまく捌くにはどうすれば良いのかな、なんてことを思いました。
現場からは以上です!