初見Microsoft が Linux 向け SQL Server のパブリック プレビューをリリースしたので、試してみました。
Linux 版 SQL Server は、Red Hat Enterprise 7.2、Ubuntu 16.04、Linux ベースの Docker エンジンの 3 つのプラットフォームをサポートしています。他のバージョンの Linux へのインストールも、サポート対象外ではありますが、動作する可能性があります。Docker イメージは Mac または Windows へのインストールを可能にします。Microsoft は、最小 3.25GB の RAM を指定しています。
テスト用に、Ubuntu 16.04「Xenial」を搭載した、8GBのデュアルプロセッサ搭載の仮想マシンにインストールしました。セットアップでは、ライセンス契約への同意とSA(システム管理者)パスワードの設定を行いました。その後、コマンドラインツールのsqlcmd(SQLクエリの実行)とbcp(一括コピー)をインストールしました。インストールスクリプトで自動起動を有効にするように求められます。
Linux上のSQL Serverとは何でしょうか?これは基本的にWindows SQL Serverと同じコードで、SQL Platform Abstraction Layer(SQLPAL)と呼ばれる互換性レイヤー上で動作しています。SQLPALはWindows API呼び出しをOSシステムコールにマッピングします。また、SQL OSと呼ばれる「ユーザーモードオペレーティングシステム」と呼ばれるコンポーネントも含まれています。これはハードウェアを抽象化し、タスクスケジューリング、メモリ管理、例外処理などのサービスを提供します。SQL OSは2005年からSQL Serverに搭載されていますが、Linux向けに開発されたものではなく、現在では拡張されています。
つまり、Windows でも、SQL Server は長い間、いくつかの仮想化技術を使用してきました。
SQLPALアーキテクチャを示すMicrosoftのスライド
SQLPALはMicrosoft ResearchのDrawbridgeという製品をベースにしているようですが、同じものではありません。長年SQL ServerチームのメンバーであるSlava Oks氏は、「これはSQLPALであり、もはやオリジナルのDrawbridgeではありません」とツイートしました。また、パフォーマンスを最適化するために「すべてのクリティカルパスからレイヤーを削除した」と述べていますが、別のツイートでは「多くの領域でまだ十分なパフォーマンス改善を行う機会がなかった」ため、今後さらに改善される可能性があると付け加えています。
SQL Server on LinuxはvNextバージョンであり、2017年に一般提供開始予定です。価格とライセンスはWindowsと同じで、無料のExpress版から上位版まで、同じエディションが提供されます。MicrosoftのSQL Serverゼネラルマネージャー、ローハン・クマール氏は、先日開催されたConnectイベントでEl Regに対し、「SKUは同じです。これは新たな導入オプションです。SQLライセンスをお持ちであれば、Linuxへの導入も選択できます」と述べました。
Windowsと同じコードを実行しているにもかかわらず、Linux製品はWindowsのすべての機能を備えているわけではありません。現在のプレビューでは、フルテキスト検索、レプリケーション、Stretch DB(Azureへのデータベース拡張)、Polybase(データウェアハウスへのクエリ)、Always On可用性グループ、Active Directory認証、SQL Serverエージェント、SQL Server R Services、Analysis Services、Reporting Services、Integration Services、Data Quality Services、Master Data Servicesなどの機能がサポートされていません。Kumar氏によると、CLR(.NET Runtime)ストアドプロシージャは有効化されていませんが、チームは将来的にクロスプラットフォームの.NET Coreとの統合を検討しています。
これらの機能の一部は、一般リリース前に有効になる可能性があります。
Linux インスタンスに接続された SQL Server Management Studio
SQL Server Management Studio (SSMS) は引き続き Windows 専用ですが、Windows SSMS から Linux SQL Server インスタンスに接続しても問題ありません。開発者は Visual Studio のデータベースツールも使用でき、クエリ、テーブル設計、ストアドプロシージャの編集などが可能です。