Más contenido relacionado La actualidad más candente (20) Similar a SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理 (20) Más de Oshitari_kochi (20) SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理1. SQL Server および Azure SQL の
インストールと管理
SQL Beginners Day #1 (19th Jul 2020)
2. Yuji Masaoka (まっぴぃ⊿)
• ⻘いRの中の⼈
• リクルートグループの情シス担当
- SharePoint や SQL Server などを担当
- チーム内における DevOps 活動の推進なども担当
• Twitter: @mappie_kochi / GitHub: ymasaoka
• JSSUG Organizer
• JCDUG Organizer
• Perfume、Disney、ジグソーパズル🧩 etc. が趣味
4. Agenda
• データベースについて
• SQL Server/Azure SQL Database のインストール
• SQL Server/Azure SQL Database のライセンス
• SQL Server Management Studio (SSMS) と
Azure Data Studio (ADS)
SQL Beginners Day #1
4
7. RDB (Relational Database)
7
• ⽇本語︓リレーショナルデータベース
• 現在、主流となっているデータベース
• データ同⼠の関係性を⼆次元表で表現(関係モデル)
• 関係と呼ぶ概念でデータをモデル化
• 組(⾏)、属性(列)、定義域(ドメイン)、候補キー(主キー)、
外部キーなどで構成されている
• プログラミング⾔語でなくてもデータ操作が可能(SQL)
8. SQL (Structured Query Language) とは︖
データ操作のために備えている⾔語
• RDB に問い合わせを⾏うために利⽤する⾔語
• RDB に問い合わせ(クエリ)を実⾏し、結果を
返す
• データベース⾔語として規格が標準化されている
• ANSI(⽶国国家規格協会)
• ISO(国際標準化機構)
• さまざまな RDB 製品において、⽅⾔的な細かい
差は存在
• データベース⾔語(SQL)≠プログラミング⾔語
3つのSQL⽂法
• データ操作⾔語(DML)
• 検索(SELECT)
• 登録(INSERT)
• 更新(UPDATE)
• 削除(DELETE)
• データ定義議語(DDL)
• CREATE、DROP、ALTER、TRUNCATE
• データ制御⾔語(DCL)
• GRANT、REVOKE
8
9. DBMS とデータベースの違い
DBMS
• Database Management System
• データベース管理システム
• データベースの機能を提供するソフトウェアのこと
• リレーショナルデータベースのことに限定する場合は、
頭にRをつけてRDBMS
• つまり、データベースの機能や構造を表す抽象的
な概念を実現するために作られた具体的なソフト
ウェア(具体的実装)
データベース
• 機能や構造を表す抽象的な概念
• データベース > DBMS
• 抽象的な概念とは別にもう⼀つの意味もある
• SQL Serverの場合、階層構造の中にデータ
ベースの層がある
• インスタンス - データベース - スキーマ
9
12. Windows
従来通り Windows で SQL Server
• Windows OS上にGUIもしくはCUIで直接イ
ンストール
• オンプレミスやIaaSでSQL Serverを使うのであ
ればこの構成、という認識が多い
• Windowsフェールオーバークラスター(WSFC)
機能を使った冗⻑化構成(Always On) が構
築可能
• Active Directory を使った認証も可能
13. Linux
• SQL Server 2017 から Ubuntu に対応
• SQL Server 2019 で RHEL / SLES 対応
が追加
• Pacemaker を使⽤した冗⻑化構成
(Always On) が構築可能
• keytab を使⽤した Active Directory 認証
も使⽤可能
• ⼀部、Linux ではサポートされない機能もあり
※詳細は、こちら
RHEL / Ubuntu / SLES に対応
# 以下は RHEL の例
# Python 2 をインストール
sudo yum install python2 compat-openssl10
# リポジトリ構成ファイル取得
sudo curl -o /etc/yum.repos.d/mssql-server.repo
https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
# SQL Server インストール
sudo yum install -y mssql-server
# SQL Server のセットアップ
sudo /opt/mssql/bin/mssql-conf setup
14. コンテナー
• Docker Hub で公式のコンテナイメージが提供
されている
• SQL Server 2017 で Ubuntu ベースのコン
テナイイメージが登場
• SQL Server 2019 で RHEL ベースのコンテ
ナイメージが追加
Docker 上で SQL Server
# 何が pull 出来るかは https://hub.docker.com/_/microsoft-mssql-server
で確認
# RHEL ベースのイメージは mcr.Microsoft.com/mssql/rhel/server
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
# Docker Image 実⾏
sudo docker run ¥
-e "ACCEPT_EULA=Y” ¥
-e "SA_PASSWORD=<YourStrong@Passw0rd>" ¥
-e “MSSQL_PID=Developer” ¥
-p 1433:1433 --name mssql1 ¥
-d mcr.microsoft.com/mssql/server:2019-latest
16. もちろん Azure で SQL Server を利⽤することも可能
オンプレミスと同じ IaaS での利⽤
• Azure VM に SQL Server をインストール
• SQL Server on VMを利⽤
• OSやパッチの管理はこれまで通り⾃前で対応
• オンプレミス環境とほぼ同じ形式での運⽤が可能
PaaS のクラウドサービスとしての利⽤
• Azure SQL Database サービスを利⽤
• パッチは⾃動で適⽤され、常に最新バージョンの
SQL Databaseが利⽤可能
• サーバにログインしたり、SQL Serverの管理コマ
ンド実⾏が⼀部制限されている
• 単⼀データベースに加え、エラスティックプールや
Managed Instanceなどの種類が存在
• ⾃動バックアップやスケールアップなどにも対応
• 99.99%の SLA
16
17. 17
SQL Database のデプロイモデル
• Single (単⼀) データベース
• Azure SQL Database の論理サーバ内にある個々のデータベースを利⽤する
• 1 SQL Server インスタンス 直下にある 1 データベースを利⽤するイメージ
• Elastic Pool
• Azure SQL Database の論理サーバ内に「エラスティック・プール」という領域を利⽤する
• エラスティック・プール内では、データベースを複数構築/管理できる
• Managed Instance
• 2020/5/13 Azure SQL Database 内のデプロイオプション扱いではなくなりました
• 新名称︓Azure SQL Managed Instance
Single、Elastic Pool、Managed Instance の3種類が存在
18. Azure SQL Managed Instance
• Azure SQL ファミリ内の1製品
• 旧 SQL Database Managed Instance
• Azure 上で SQL Server をインスタンス単位で利⽤で
き、PaaS のメリットも享受できる
• Azure ハイブリット特典も利⽤可能
20. SQL Server のライセンス形態
コア単位
• 物理OSの場合、物理サーバが搭載する全物理
コアに対してライセンスを適⽤
• 仮想OSの場合、仮想OSが認識する全仮想コア
に対してライセンスを適⽤
• 最⼩4コアライセンスからの適⽤が必要
• クライアントは無制限アクセスが可能 (CAL不要)
サーバ + CAL
• 物理または仮想OS環境毎にライセンスを適⽤
• 同⼀OS環境内で複数のSQL Serverインスタン
スを構築する場合は追加ライセンス不要
• クライアント端末またはユーザーに対してCALを購
⼊する必要あり(追加購⼊可能)
• クライアント端末=デバイスCAL
• ユーザー=ユーザーCAL
• CALを割り当てられた端末/ユーザーは、サーバラ
イセンスが適⽤されたすべてのSQL Server へ接
続が可能
20
21. インスタンスとデータベースの違い
インスタンス
• データベースを管理するマネージャー的な存在
• プロセス
• データベースを含めたSQL Server全体のサービ
スを動かすモノ
• SQL Serverでは、インスタンスの種類が2つある
• 既定のインスタンス=デフォルトで1つのみ作成
• 名前付きインスタンス=複数作成可能
データベース
• 表やデータ本体
• 物理ファイル
• SQL Serverでは、2種類のデータベースが存在
• システムデータベース
• インスタンスレベルのメタデータ(インスタンスレ
ベルの制御情報、ユーザー情報)や⼀時作
業領域として利⽤
• ユーザーデータベース
• ユーザーのデータを格納する領域として利⽤
22. Azure SQL Database のライセンス形態
Core モデル
• 独⽴したスケーラビリティ
• コンピューティング、ストレージ、IOリソースを別々に
選択可能
• 柔軟性、制御、透明性を重視
• Azureハイブリッド特典と併⽤可能
DTU モデル
• シンプルで事前設定済み
• コンピューティング、ストレージ、IOリソースをバンド
ル済み
• シンプルで事前設定されたリソースオプション
• DTUよりCoreの⽅が購⼊推奨となった
22
24. 24
SQL Server / Azure SQL のエディション
• Enterprise
• ハイエンドのエディション。⼤企業や⾼度な要求を処理するシステム向け。すべての機能が利⽤可能。
• Standard
• 通常タイプのエディション。企業部⾨や⼩規模組織向け。⼀部機能の利⽤が制限されている。
• Developer
• 開発者向けのエディション。Enterprise と同じくすべての機能を利⽤できるが、実稼働(運⽤)サーバでの利⽤
はライセンス違反。あくまで開発者利⽤。無償。
• Web
• Webホスティング業者およびWeb VAP向け専⽤のエディション。詳細はホスティングパートナーに問い合わせ。
• Express
• エントリレベルのエディション。学習や⼩規模サーバーでのアプリケーション向け。機能制限もあり。無償。
• Evaluation
• 評価版のエディション。Enterprise と同じくすべての機能を利⽤できるが、180⽇の利⽤制限あり。無償。
25. 25
SQL Server の冗⻑化
• 稼働中のハードウェア(SQL Server)に障害が発⽣した時に、予備のハードウェア(SQL Server)に
切り替えることで少しでも早くシステムの復旧を⾏うことが⽬的
• Always On という名称がある
• Always On 可⽤性グループ
• Always On FCI
冗⻑化=ハードウェアの⼆重化(多重化)
26. 26
SQL Server の関連ツール
• SSIS (SQL Server Integration Services)
• エンタープライズ レベルのデータ統合およびデータ変換ソリューションを構築するためのプラットフォーム
• ファイルのコピーやダウンロード、データ ウェアハウスの読み込み、データのクリーニングとマイニング、SQL Server のオ
ブジェクトやデータの管理などにより、複雑なビジネスの問題を解決できる
• XML データ ファイル、フラット ファイル、リレーショナル データ ソースなど、さまざまなソースのデータを抽出および変換
して、1 つ以上のターゲットに読み込むことが可能
• SSAS (SQL Server Analysis Services)
• 意思決定⽀援とビジネス分析に使⽤される分析データエンジン (Vertipaq)
• ビジネスインテリジェンス (BI)、データ分析、レポートアプリケーション (Power BI、Excel、Reporting Services、
その他のデータ視覚化ツールなど) のためのエンタープライズレベルのセマンティックデータモデル機能を提供
• SSRS (SQL Server Reporting Services)
• モバイルおよびページ分割されたレポートの作成、配置、管理を⾏う⼀連のオンプレミス ツールおよびサービスを提供
• プログラミング機能を使⽤して、レポート作成機能を拡張およびカスタマイズすることも可能
27. 27
その他のオプション (⼀部)
• Machine Learning Services
• リレーショナル データを使⽤して Python および R スクリプトを実⾏できるようになる機能
• Extensibility Framework (⾔語の拡張)
• SQL Server の内部から外部⾔語ランタイム環境でコードを実⾏する機能
• Python と R に加え、SQL Server 2019 から Java が追加
• PolyBase
• 外部データ ソースからデータを読み取る Transact-SQL クエリを SQL Server インスタンスで処理できる
• SQL Server 2019 から、Hadoop と Azure Blob に加え、Oracle や MongoDB、Excel などが追加
• Master Data Services
• データをモデルに整理して、データを更新するためのルールを作成し、データを更新するユーザーを制御することで、
組織のデータのマスターセットを管理することが可能
• Windows 環境のみ対応 (Azure SQL Managed Instance でも対応)
29. 29
SQL Server へ接続するツール
• 公式から配布されているもの
• sqlcmd
• SSMS (SQL Server Management Studio)
• ADS (Azure Data Studio)
• ライブラリ関連
• ADO.NET Entity Framework
• ODBC Driver for SQL Server
• Microsoft SQL Server ⽤ JDBC Driver など
• サードパーティ製ツール (⼀例)
• SI Object Browser ※有償(国産)
• DataRow ※有償(海外製、旧:TeamSQL)
• DBeaver Community ※OSS
公式配布のものやサードパーティ製など、さまざまなものが存在
30. SQL Server Management Studio と
Azure Data Studio
SQL Server Management Studio
• Windows 専⽤
• SQL Server から Azure SQL Database ま
で、SQL インフラストラクチャを管理するための統
合環境
• SQL Server とデータベースのインスタンスを構成、
監視、および管理するためのツールが組み込まれ
ている
• データ層コンポーネントを配置、監視、アップグレー
ドしたり、クエリとスクリプトを作成したりすることが可
能
Azure Data Studio
• Windows、macOS、Linux で利⽤可能
• オンプレミス プラットフォーム、クラウド データ プラッ
トフォームの Microsoft ファミリを使⽤するデータ
プロフェッショナルを対象にした、クロスプラットフォー
ム データベース ツール
• IntelliSense、コード スニペット、ソース管理の統
合、統合されたターミナルを含む最新のエディター
エクスペリエンスが提供
• SSMS と⽐較してできること、できないことについて
は こちら を参照
31. 31
SSMS vs ADS
SSMS と ADS どっちを使えばいいの︖
• 結論:⾃分に合う⽅を使⽤
• SSMSでは出来ないこと、
ADSで出来ないことがありま
す。
SSMSでもビックデータクラスター内の
SQL Serverに接続は可能です。
ただし、 HDFSなどは操作できません。
32. 32
SQL と管理コマンド
• sqlcmd
• Transact-SQL やスクリプトなどの実⾏、SQL Server の管理で使⽤
• 最も推奨される CUI 管理ツール
• 構⽂については、こちら を参照
• bcp
• バイナリ・データの⼀括コピーなどを⾏うユーティリティ
• sqlps
• PowerShell ベースの CUI 管理ツール
• 現在、⾮推奨で将来のバージョンで削除予定
• SQL Server 構成マネージャー
• SQL Server に関連付けられているサービスの管理、 SQL Server が使⽤するネットワーク プロトコルの設
定、 SQL Server クライアント コンピューターからのネットワーク接続の設定を⾏うためのGUIツール
• SQL Server Management Studio
SQL 実⾏ではなく SQL Server の管理をしたい
33. SQL Server に接続してみよう
• コネクション
• 通信を⾏う機器やソフトウェアの間に確⽴された仮想的な専⽤通信路
• データベース本体とデータベースに接続する端末(PC)などとの間にある、DB接続専⽤の通信経路のこと
• SQL Server へ接続
• サーバ名(ホスト名)やインスタンス名、ユーザー情報などを⼊⼒して接続
コネクションって何︖
34. 試しにデータベースを作ってみよう
• GUI でも CUI でも作成可能
接続して CREATE DATABASE
# CUI (スクリプトで作成)
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ] ]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]
35. まとめ
SQL Server は どこでも動くRDB
• 昔は Windows 専⽤だったが、今は Linux や
Docker/Kubernetes 上でも動く
• SQL や Transact-SQL を使って操作
• Azure 上でも利⽤可能
• Azure PaaS の SQL Server
• SQL Database
• Azure SQL Managed Instance
SQL Server への接続やツール
• GUI で接続できる公式のツール
• SQL Server Management Studio
• Azure Data Studio
• 関連ツール (SSIS、SSAS、SSRS)
36. 36
参考資料
• Editions and supported features of SQL Server 2019 (15.x)
• Linux 上の SQL Server
• クイック スタート: Docker を使⽤して SQL Server コンテナー イメージを実⾏する
• SQL Server ビッグ データ クラスターとは
• SQL Server on Linux に関してよく寄せられる質問 (FAQ)
• Windows Server フェールオーバー クラスタリングと SQL Server
• Always On 可⽤性グループとは
• SQL Server Integration Services
• Analysis Services とは
• SQL Server Reporting Services (SSRS) とは
Microsoft Docs
37. 参考資料
• マスター データ サービスの概要 (MDS)
• SQL の機械学習のドキュメント
• PolyBase とは
• sqlcmd ユーティリティ
• SQL Server Management Studio (SSMS) のダウンロード
• Azure Data Studio とは
• SQL Server 構成マネージャー
• Entity Framework の概要
• Microsoft SQL Server ⽤ JDBC Driver のダウンロード
• ODBC Driver for SQL Server のダウンロード
Microsoft Docs
38. Y U J I M A S A O K A
@ m a p p i e _ k o c h i
お疲れ様でした︕︕