Amazon Web Services ブログ

Amazon RDS for SQL Server で Microsoft SQL Server Analysis Services を設定する

Amazon RDS for SQL Server の表形式モデルで Microsoft SQL Server Analysis Services (SSAS) を設定できるようになりました。SSAS は、2016 年または 2017 年の SQL Server メジャーバージョンを使用して、Standard エディションと Enterprise エディションのどちらのシングル AZ 設定でも動作します。

SSAS を Amazon EC2 で実行する場合、SSAS を Amazon RDS for SQL Server で直接サポートし、それらのワークロードを統合して SQL Server データベースと同じ RDS DB インスタンスで実行することで、コストを節約できます。ただし、統合する場合は、パフォーマンスへの影響を考慮する必要があります。

オンライン分析処理 (OLAP) ソリューションは、オンザフライ処理の量を最小限に抑えることで、データウェアハウスやその他のリレーショナルデータベースを強化し、高速で効果的な分析とレポートを行えます。これは主に、分析を実行する前に、ディメンションと階層の幅広い組み合わせを前処理して保存することで実現しています。

SSAS は、エンタープライズレベルの OLAP ソリューションを開発するための Microsoft のビジネスインテリジェンスツールです。SSAS は、最適化された分析クエリと計算に加えて、Excel、Power BI、SQL Server Reporting Services (SSRS)、その他のレポートツールおよびデータ視覚化ツールなど、クライアントアプリケーションに必要なセマンティックデータモデルを提供します。表形式モデルは、効率的な列ベースのクエリ用に設計されたインメモリデータベースをサポートし、より優れたデータ圧縮を提供します。

この記事では、Amazon RDS for SQL Server DB インスタンスで、表形式モデルで SSAS を設定して使用する方法について説明します。

Amazon RDS for SQL Server での SSAS

Amazon RDS for SQL Server で SSAS を設定するには、次の要件を満たす必要があります。

  • Amazon RDS for SQL Server インスタンスは、SQL Server 2016 Standard エディションまたは Enterprise エディション (13.00.5426.0.v1 以降) か、SQL Server 2017 Standard エディションまたは Enterprise エディション (14.00.3223.3.v1 以降) である必要があります。
  • Windows Authentication を有効にするには、インスタンスを AWS マネージドの Microsoft Active Directory に参加させる必要があります。手順については、「SQL Server DB インスタンス用に Windows Authentication を設定する」を参照してください。
  • インスタンスと S3 バケット間で SSAS モデルとバックアップを転送するには、Amazon S3 統合を有効にする必要があります。Amazon S3 からファイルをダウンロードする権限を持つ Amazon RDS インスタンス向けの Microsoft SQL Server への有効なログインが必要です。手順については、「Amazon RDS for SQL Server DB インスタンスと Amazon S3 の統合」を参照してください。

SSAS オプションを使用してオプショングループを作成する

SSAS オプションを使用してオプショングループを作成する手順については、「オプショングループの操作」を参照してください。その際以下の手順も行います。

  1. [Option name] では、[SSAS] を選択します。
  2. [Max memory] では、SSAS が Amazon RDS 向け Microsoft SQL Server のインスタンスを占有するメモリの上限しきい値を指定します。
    最大メモリを設定するときは、RDS DB インスタンスで利用できるメモリの量を考慮してください。SSAS Tabular は、メモリを集中的に使用するアプリケーションです。SSAS に割り当てられたより高い最大メモリを選択すると、同じインスタンスに存在する SQL Server 操作に影響を与える可能性があります。
    各 DB インスタンスには、少なくとも 1 つの関連付けられたセキュリティグループが必要です。セキュリティグループのリストから選択するか、新しいセキュリティグループを作成してください。関連するセキュリティグループが SSAS ポート向けのインバウンドトラフィックを許可していることを確認してください。

SSAS への接続

SSAS オプションを追加すると、RDS インスタンスの SSAS に接続できるようになっているはずです。SSAS に接続するには、ドメインユーザーとしてドメイン参加したコンピュータにログインする必要があります。次の手順を実行します。

  1. SQL Server Management Studio (SSMS) を起動します。
  2. [File] メニューから、[Connect Object Explorer…] を選択します。
    サーバーインスタンスに接続するためのウィンドウが表示されます。
  3. [Server type] では、[Analysis Services] を選択します。
  4. [Server name] には、RDS インスタンスのエンドポイントを入力します。
  5. [Authentication] では、[Windows Authentication] を選択します。
  6. [Connect] を選択します
    しばらくすると、SSMS は DB インスタンス上の SSAS に接続します。SSAS に接続できない場合は、インスタンスセキュリティグループがポート 2383 でコンピュータからのトラフィックを許可していることを確認してください。詳細については、「セキュリティグループの考慮事項」を参照してください。

表形式モデルのデプロイと処理

プロジェクトを RDS DB インスタンスに直接デプロイすることはできません。表形式モデルをデプロイするには、モデルファイルを DB インスタンスに移動し、SSAS ストアドプロシージャを実行する必要があります。

  1. SQL Server データツールで新しい表形式プロジェクトを作成します (または以前に作成したプロジェクトを開きます)。
  2. プロジェクトに必要なロールを作成し、ドメインメンバーをロールに追加します。
    ドメインユーザーがデプロイされたモデルで操作を実行するには、ユーザーをプロジェクトに追加する必要があります。ドメインユーザーが RDS インスタンスの SSAS に接続できることを確認します。
  3. [Solution Explorer] タブで、ソリューションを選択してプロパティを表示します。
  4. [Deployment Options] の [Processing Option] で、[Do Not Process] を選択します。
    モデルをデプロイした後、SSMS を介して直接モデルを処理できます。
  5. [Solution Explorer] タブで、プロジェクトを構築します。
    表形式プロジェクトを構築すると、SQL Server データツールによって、Analysis Services プロジェクトの出力フォルダにファイルが生成されます (既定の出力フォルダは \Bin です)。デプロイには、<project name>.asdatabase<project name>.deploymentoptions ファイルが必要です。
  6. S3 バケットを作成します (または既存のものを使用します)。この記事では sample-s3-bucket を使用します。
  7. プロジェクトファイルをそのバケットにアップロードします。
    インスタンスで Amazon S3 統合がすでに有効になっていることを確認してください。
  8. SSMS を開き、RDS SQL Server インスタンスに接続します。
  9. 次のストアドプロシージャを実行して、S3 バケットからインスタンス上のローカル Amazon S3 フォルダにプロジェクトファイルをダウンロードします。
    exec msdb.dbo.rds_download_from_s3 @s3_arn_of_file='arn:aws:s3:::sample-s3-bucket/testmodel.asdatabase' , @rds_file_path='d:\S3\testmodel.asdatabase' , @overwrite_file=1
    exec msdb.dbo.rds_download_from_s3 @s3_arn_of_file='arn:aws:s3:::sample-s3-bucket/testmodel.deploymentoptions' , @rds_file_path='d:\S3\testmodel.deploymentoptions' , @overwrite_file=1
  10. Amazon S3 統合タスクのステータスを追跡するには、ステータスが SUCCESS に変わるまで rds_fn_task_status 関数を呼び出します。この関数は 2 つのパラメータを取ります。最初のパラメータを NULL に設定し、2 番目のパラメータをタスク ID に設定します (タスク ID として 0 を渡すと、すべてのタスクのリストが表示されます)。次のコードを参照してください。
    SELECT * FROM msdb.dbo.rds_fn_task_status(null,2);
  11. SSAS_DEPLOY_PROJECT ストアドプロシージャを呼び出して、モデルを SSAS にデプロイします。次のコードを参照してください。
    exec msdb.dbo.rds_msbi_task @task_type='SSAS_DEPLOY_PROJECT', @file_path='d:\S3\testmodel.asdatabase';
  12. SSMS で SSAS_DEPLOY_PROJECT タスクのステータスが SUCCESS に変わったら、Analysis Services に接続し、Windows 認証を使用して SSAS に接続します。次のスクリーンショットにあるように、デプロイされたプロジェクトは [Databases] の下に表示されます。
    [Databases] セクションにデータベースが表示されない場合は、ドメインユーザーがそのデータベースへのデータベースレベルのアクセス権を持っていない可能性があります。ユーザー名をモデルに追加して更新されたモデルを再デプロイするか、SSAS_ADD_DB_ADMIN_MEMBER ストアドプロシージャを介して管理ユーザーを追加する必要があります。
  13. データを処理するには、データベースに関連付けられている接続オブジェクトを開きます (右クリックして)。
  14. [Properties] を選択します。
  15. 接続文字列のユーザー名とパスワードを更新します。
  16. SSMS で、デプロイされた SSAS データベースを開きます (右クリックして)。
  17. [Process Database] を選択します。
    処理時間は、データソースからインポートされたデータの量によって異なります。

その他の操作

次のセクションでは、ロールへの管理メンバーの追加、SSAS データベースのバックアップと復元など、実行できるその他の操作について説明します。

ロールへの管理メンバーの追加

特定のデータベースのドメインユーザーに DB レベルの管理アクセス権を付与するには、次のコードを入力します。

exec msdb.dbo.rds_msbi_task @task_type='SSAS_ADD_DB_ADMIN_MEMBER', @database_name='TestModel', @ssas_role_name='Sample', @ssas_role_member='domain\user';

このコマンドは、ロールが存在しない場合はロールを作成します。

SSAS データベースのバックアップ

SSMS を介して SSAS データベースを直接 Amazon S3 フォルダにバックアップするか、SSAS_BACKUP_DB ストアドプロシージャを実行できます。次のコードを参照してください。

exec msdb.dbo.rds_msbi_task @task_type='SSAS_BACKUP_DB', @database_name='TestModel', @file_path='d:\S3\test-model.abf', @ssas_overwrite_file=1;

SSAS データベースの復元

バックアップファイルから SSAS データベースを復元するには、SSAS_RESTORE_DB ストアドプロシージャを呼び出します。次のコードを参照してください。

exec msdb.dbo.rds_msbi_task @task_type='SSAS_RESTORE_DB', @database_name='NewTestModel', @file_path='d:\S3\test-model.abf';

同じ名前の別のデータベースがすでに存在する場合、データベースを復元することはできません。

まとめ

この記事では、Amazon RDS for SQL Server の表形式モデルで SSAS を設定する方法を示しました。Amazon EC2 で SSAS を実行する場合、それらのワークロードを統合して SQL Server データベースと同じ RDS DB インスタンスで実行することにより、コストを節約できます。データウェアハウスやその他のリレーショナルデータベース (オンプレミスまたはクラウドベース) からのデータを簡単に処理し、分析クエリを実行して、SSAS データベースをバックアップまたは復元できます。AWS コンソールで今日 SSAS を試してみて、コメントでお客様の考えやご経験をお聞かせください。

 


著者について

 

Pooya Amini は、アマゾン ウェブ サービスのソフトウェア開発エンジニアです。 彼は AWS RDS チームと協力して、商用データベースエンジンと SQL Server に力を入れています。AWS に参加する前は、Pooya は Amazon Payments と Alexa のソフトウェア開発エンジニアでした。彼は技術的な課題に取り組むことを楽しんでおり、新しいテクノロジーの学習に情熱を傾けています。

 

 

 

Richard Waymire は、アマゾン ウェブ サービスのプリンシパルアウトバウンドアーキテクトです。彼は、AWS を使用している場合にソリューションの価値を向上させる手助けとなるために、AWS の顧客と協力してデータベースプロジェクト上の指導や技術支援を行っています。