1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Synapse Link for SQL DB を試す

Last updated at Posted at 2022-05-25

Azure Synapse Link for SQL DB を試す

はじめに

Build2022で発表されたAzure Synapse Link for SQL DBを試してみます。
Azure SQL DBに対してNoETLでDWHに連携する機能です。

Build

参考リンク

Azure Synapse Link for SQL とは (プレビュー)

Azure SQL Database 用 Azure Synapse Link (プレビュー)

Azure Synapse Link for Azure SQL Database (プレビュー) の構成

手順

準備

Synapse workspace 作成

synapse を作成します。
1.Synapse ワークスペースの作成 を参考にSynapse workspaceを作成します

設定全体
2022-05-25-07-27-34.png

2.SQL Poolを作成します。

2022-05-25-08-21-48.png

SQL DB作成

1.Azure Portalから論理SQL Serverを作成します。

2022-05-25-07-41-24.png

設定全体

2022-05-25-07-54-19.png

AD管理者の設定などをしています。

2.作成後は ネットワークタブ にて自身のクライアントIPを登録しておきます

2022-05-25-08-03-37.png

3.同様に IDタブ にてシステム割当マネージドIDを有効化しておきます。

2022-05-25-08-04-26.png

world wide importersの構成

world wide importers の作成を参考にdbを構成します。

1.wide-world-importers-releaseから対応バージョンのbakpacをダウンロードします。
2.SSMSからAD認証で対象sqlserverにログインし、データベースを右クリックしてデータ層アプリケーションのインポート を実行します。

2022-05-25-08-00-53.png

設定画面

2022-05-25-08-06-59.png

3.インポートが完了したらSynapseリソースをSQL DBのdb_ownerに指定します。


CREATE USER <workspace name> FROM EXTERNAL PROVIDER;
ALTER ROLE [db_owner] ADD MEMBER <workspace name>;

1. Synapse Link for SQL DBの構成

1.統合ハブから リンク接続 を選択します。

2022-05-25-08-18-29.png

2.リンク接続 から 新規 を選択します。

2022-05-25-08-19-07.png

3.準備で作成したDBを選択します。

2022-05-25-08-20-10.png

4.ソーステーブルを選択します。

2022-05-25-08-20-58.png

確認画面

2022-05-25-08-34-08.png

5.リンク接続を確認します。

2022-05-25-08-34-38.png

6.リンクの構成画面で、警告を確認します。

2022-05-25-08-37-04.png

7.対応外の型を含むのでHeapに変更します。

2022-05-25-08-38-04.png

8.発行 します。

2022-05-25-08-38-51.png

9.選択したテーブルのターゲットスキーマが存在する必要があるので、SQLPool上で作成しておきます


CREATE SCHEMA [Sales]

2022-05-25-08-42-14.png

10.開始 します。

2022-05-25-08-39-22.png

11.数分経つと開始が完了します。

2022-05-25-08-45-36.png

監視画面がReplecatingとなります。

2022-05-25-09-52-59.png

2.データの確認

開始直後

まずは、ソーステーブルの件数を見ておきます。

2022-05-25-08-46-47.png

専用SQL Pool側も開始が完了しているので、同じ件数になっています。

2022-05-25-08-47-35.png

データ増幅確認

以下のクエリで雑にデータを増幅します。


DECLARE @maxOrder int
DECLARE @count int
SELECT @maxOrder = max( [OrderID])
  FROM [Sales].[Orders]


INSERT INTO [Sales].[Orders]
SELECT TOP 10000 @maxOrder  + [OrderID]
      ,[CustomerID]
      ,[SalespersonPersonID]
      ,[PickedByPersonID]
      ,[ContactPersonID]
      ,[BackorderOrderID]
      ,[OrderDate]
      ,[ExpectedDeliveryDate]
      ,[CustomerPurchaseOrderNumber]
      ,[IsUndersupplyBackordered]
      ,[Comments]
      ,[DeliveryInstructions]
      ,[InternalComments]
      ,[PickingCompletedWhen]
      ,[LastEditedBy]
      ,[LastEditedWhen]
  FROM [Sales].[Orders]
  order by 1 

print N'INSERT件数:'+ convert(nvarchar,@@ROWCOUNT)

SELECT @count=COUNT(1) FROM [Sales].[Orders]

print N'結果件数:'+ convert(nvarchar,@count)

(generatorが動かなかった..)

データの挿入を実行します。

SQL DB側の結果
2022-05-25-09-44-00.png

約1分後にはデータが同期されています※ここだけタイムゾーンに気づかずにやっているので+9時間読み替え必要

Synapse側の結果
2022-05-25-09-44-47.png


DECLARE @count int 

SELECT @count=count(1)
 FROM [Sales].[Orders];

print N'時刻:' + convert(nvarchar,dateadd(hh,9,SYSDATETIME()))
print N'件数:'+ convert(nvarchar,@count)

増やすためにTop句を外してみます。

SQL DB側の結果
2022-05-25-09-46-13.png

これも即反映されています。

Synapse側の結果

2022-05-25-09-48-05.png

何回か増幅させて、最終的に
600万件くらいになりましたが、3,4分くらいで反映されました。
(この辺になるとSQLDB側の生成に時間がかかるようになります)

SQL DB側の結果

2022-05-25-10-17-25.png

Synapse側の結果

2022-05-25-10-20-44.png

まとめ

SQLファミリーを利用されている方々はETL不要で分析環境にデータをエクスポートできるのでかなりいいんじゃないでしょうか。

このままでも運用DBに負荷をかけないまま分析クエリが効率化されると思いますが、
SQL Pool側でストアドプロシージャを組んで一定間隔で実行し、適切なモデリングや分散テーブルに整形するなどでニアリアルタイム分析もはかどりそうです。
外部テーブルと連携してデータレイクにオフロードするのもいいですね。

コスト面が気になるところです。

引き続きBuild2022 楽しんでいきましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?