SQL Server 2016 マスターデータサービス ( MDS ) の新機能

Microsoft Japan Data Platform Tech Sales Team

森本 信次

 

マスターデータサービス ( MDS ) とは

マスター データ サービス( MDS: Master Data Services)は、マスター データ管理( MDM: Master Data Management )を実現するためのサービスです。

マスター データとは、「商品マスター」や「社員マスター」、「顧客マスター」、「店舗マスター」などのマスター テーブルのデータを指し、DWH( データ ウェアハウス )環境においてはディメンション テーブルのデータ( 分析軸となるデータ )を指します。

 

SQL Server 2016 の Master Data Services では主に以下の機能強化が行われました。

  1. エンティティ同期
  2. メンバーの改訂履歴
  3. 競合のマージ
  4. ビジネスルールの拡張
  5. 変更セット
  6. ソフト削除メンバーのパージ
  7. ワークフロー ( 1段階の承認 )

まずは説明に使用する用語の定義からはじめます。

1. 用語の定義 : モデルとは? エンティティとは? メンバーとは?

モデルとは、マスタデータの構造の最上位レベルのコンテナ (  データやオブジェクトなどをまとめて格納するためのデータ構造 )です。
例えば 商品マスターを管理したい場合、はじめに商品モデルを作成し、この商品モデルに含まれるエンティティを作成します、

エンティティは、リレーショナル データベースでの「テーブル」に相当します。
この商品モデルの例の場合は、商品カテゴリー、仕入先、商品、在庫などがエンティティとなります。

ここからそれぞれの機能強化ポイントを見ていきます。

メンバーは、リレーショナルデータベースデータベースでの「レコード」に相当します。

2. エンティティ同期

あるモデルに属するエンティティをマスターとして他のモデルのターゲット・エンティティに一方向の同期を行う機能です。
SQL Server 2014 までは、複数のモデルで共通で使用できると便利なエンティティがあった場合にも各モデルで個別にエンティティを管理する必要がありましたが、今回の機能拡張でモデルの管理がより容易になりました。

次の (1) (2) の順で設定を行います。

(1) エンティティ同期関係の追加
マスターデータサービスの管理ツール “マスターデータマネージャー” を起動しします。

エンティティ同期_01

マスターデータマネージャー – [システム管理] – [モデルビュー] から ソースエンティティとターゲットエンティティを指定します。

同期種類は「オンデマンド同期」か「自動同期」を選択でき、後者の場合は頻度として「日」か「時間」を選択します。

エンティティ同期_02

(2) エンティティ同期の実行

同期の実行によりターゲットのモデルに読み取り専用のエンティティが作成されています。

エンティティ同期_03

 

3. メンバーの改訂履歴

メンバーに対し、いつ、どのような変更を、誰が行ったのかの履歴を容易に確認できるようになりました。メンバー改訂履歴_01

 

4. 競合のマージ

複数のユーザーによる同一メンバーに対する変更があった場合にどの変更を適用するかを決定できるようになりました。競合が発生した場合には [ 競合のマージ ] ダイアログで、次のいずれかの操作を実行できます。

  • 保留中の変更を元に戻し、サーバーから最新のバージョンを再び読み込む場合は、 [最新] を選択し、 [適用] をクリックします。
  • ワークシートの元のバージョンを適用する場合は、 [オリジナル] を選択し、 [適用] をクリックします。
  • 既存のローカルの変更を保持する場合は、 [このユーザーの変更] を選択し、 [適用] をクリックします。

詳細はこちらをご覧ください。

以下、サーバーとクライアント側で同一のメンバーのデータ変更を行い競合が発生した場合の例です。

競合のマージ_01

競合のマージ_02

競合のマージ_03

競合のマージ_04

 

5. ビジネスルールの拡張

「~が次の値に等しい」や「~が変更されている」といった事前定義済みの条件や、「既定値」や「値の変更」といった事前定義済みのアクションの拡張として、ユーザー定義の SQL スクリプトを適用することができます。

例えば以下のようにビジネスルールをストアドプロシージャとして実装することができるようになったため、
複雑なビジネスルールにも容易に対応ができるようになりました。

CREATE PROCEDURE [usr].[YourAction]

(

@MemberIdList mdm.[MemberId] READONLY,

@ModelName NVARCHAR(MAX),

@VersionName NVARCHAR(MAX),

@EntityName NVARCHAR(MAX),

@BusinessRuleName NVARCHAR(MAX)

)

AS BEGIN

...

END

詳細はこちらを参照ください。

 

6. 変更セット

メンバーに対する複数の変更をまとめてコミット ( または破棄 ) する機能です。

マスターデータマネージャー – [ エクスプローラー ] – [ エンティティ ] – [ 変更セットの追加 ] を行います。

変更セット_01

変更セットの適用を行います。

変更セット_02

ルールの適用後に変更がまとめてコミットされています。

変更セット_03

 

7. ソフト削除メンバーのパージ

ソフト削除されたメンバーのパージ ( 永続削除 ) が可能となりました。

SQL Server 2014 まではメンバーを削除した場合もエンティティのデータが格納されている

SQL Server のテーブルにはレコードが残っていましたが、今回のこちらの機能によって データを格納するための物理領域を節約できるようになります。

ソフト削除_01

 

8. ワークフロー (1段階の承認 )

エンティティのメンバーに対する変更に承認が必要な場合に設定します。

SQL Server 2014 までは、SharePoint との連携による承認ワークフローは可能でしたが、

1段階の承認に関しては SQL Server 2016 単体で承認機能を実現できるようになりました。

エンティティのメンバーに対する変更に承認が必要な場合に設定します。

承認_01

 

承認が必要なメンバーへの変更保存時には変更セットの選択 (「新規」に作成 または 「既存」のものから選択) が必要です。

承認_02

変更セットを作成すると承認待ち ( Pending ) のステータスとなります。

承認_03

承認または拒否を選択します。

承認_04

承認した場合はこうなります。

承認_05

いかがでしたでしょうか?  ご興味のある方はこれらの新機能を是非試して頂ければと思います。

SQL Server 2016 の Master Data Services のセットアップ方法についてはこちらをご覧ください。