SAP HANA Cloud, data lakeでマテリアライズドビューを使用してパフォーマンスを上げる

作成者:伊藤 沢 投稿日:2022年11月21日

  • このエントリーをはてなブックマークに追加

このブログは、Ronit Nagwekarが執筆したブログ「HANA Data Lake Materialized Views」(2022/9/8)の抄訳です。最新の情報は、SAP Communityの最新ブログマニュアルを参照してください。

 


 

概要

 

マテリアライズドビューとは何か?

マテリアライズドビューは、クエリー結果を保つデータベースオブジェクトです。これは、例えば離れたデータのローカルコピーや、テーブルの行やカラムのサブセット、joinの結果、あるいはaggregate関数によって作成されたサマリーなどです。

 

マテリアライズドビューを使用するメリットは何か?

  1. パフォーマンスの向上:同じaggregation関数でも、通常ソーステーブルへのクエリーよりもマテリアライズドビューへのクエリーの方が高速です。
  2. データの鮮度:マテリアライズを最後にいつ行ったかにかかわらず、マテリアライズドビューへのクエリーは常に最新の結果を返します。このクエリーで、マテリアライズされたビューのコンポーネントと、まだマテリアライズされていないソーステーブルのエントリー(デルタセクション)とを合わせるため、常に最新の結果が返されます。
  3. コスト削減:マテリアライズドビューへのクエリーは、ソーステーブルへaggregateするよりも少ないクラスターリソースを使用します。単純にaggregationが必要な場合には、ソーステーブルのリテンション(保持)ポリシーを減らすことができ、この設定によって、ソーステーブルのホットキャッシュの費用が低減します。

このブログのコンテンツ

  1. SAP HANA Cloud, data lakeのマテリアライズドビューの作成
  2. SAP HANA Cloud, HANA データベースへのビューの仮想化
  3. SQL on Filesクエリー結果セットからのSQL on Filesマテリアライズドビューの生成

 

前提条件

  1. マテリアライズドビューが参照するアイテム(テーブル)がすでにSAP HANA Cloud, data lakeに存在していること。.
  2. データベース内でマテリアライズドビューを構成する条件を満たしていること。データベースオプション要件については、マテリアライズドビューの必要条件と制限を参照してください。
  3. マテリアライズドビューを作成、イニシャライズ、またはリフレッシュする前に、全ての制限事項を満たしていることを確認してください。詳細は、マテリアライズドビューの必要条件と制限を参照してください。
  4. SAP HANA Cloud, data lakeのリレーショナルエンジンのリレーショナルコンテナ(SYSHDL <data lake relational container name>)に接続しているSAP HANA Cloud, HANAデータベースリレーショナルコンテナスキーマのREMOTE EXECUTEプロシージャーへのEXECUTE権限があること。

 

1. SAP HANA Cloud, data lakeのマテリアライズドビューの作成

 

SAP HANA Cloud, data lakeリレーショナルエンジンのクエリーからのデータを格納するため、マテリアライズドビューを使用します。

 

参照マニュアル – HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューの作成 | SAP Help Portal

 

SAP HANA Cloud, data lake のマテリアライズドビュー作成のための構文

 

CREATE MATERIALIZED VIEW [<owner.>]<view-name> [ ( <alt-column-names>) ]

    AS <select-statement> [ { AUTO | MANUAL } FULL REFRESH ]

<alt-column-names> ::= ( <column-name>[, <column-name>…)

 

権限が必要です。

SAP HANA Cloud, data lakeのREMOTE EXECUTE プロシージャーに関連しているSAP HANA Cloud, HANAデータベースリレーショナルコンテナスキーマへのEXECUTEアクセス権限が必要です。

 

例1

以下の例では、SAP HANA Cloud, data lakeリレーショナルサンプルインスタンスで作業員の個人情報を含むマテリアライズドビューを構築します。staleness(更新済)が検出された時に自動的にリフレッシュするようにしています。

 

CREATE MATERIALIZED VIEW EmployeeConfid2 AS

SELECT EmployeeID, Employees.DepartmentID,

    SocialSecurityNumber, Salary, ManagerID,

    Departments.DepartmentName, Departments.DepartmentHeadID

FROM GROUPO.Employees, GROUPO.Departments

WHERE Employees.DepartmentID=Departments.DepartmentID

AUTO FULL REFRESH;

 

例2

CREATE MATERIALIZED VIEW CUSTOMERVIEW AS

SELECT CUSTOMER.C_NAME, CUSTOMER.C_ADDRESS, CUSTOMER.C_PHONE,

               ORDERS.O_ORDERSTATUS, ORDERS.O_TOTALPRICE

FROM CUSTOMER, ORDERS

WHERE CUSTOMER.C_CUSTKEY=ORDERS.O_CUSTKEY

AUTO FULL REFRESH;

 

SAP HANA Cloud, data lakeリレーショナルエンジンのマテリアライズドビュー文のDROP

 

データベースからマテリアライズドビューを削除します。

DROP MATERIALIZED VIEW [ IF EXISTS ] [ <owner>.]<view-name>

 

DROP MATERIALIZED VIEW IF EXISTS CUSTOMERVIEW;

 

2. SAP HANA Cloud, HANAデータベース内のビューの仮想

 

SAP HANA Cloud, HANAデータベースのビューを仮想化するために、まず‘REMOTE_EXECUTE’経由でビューを作成する必要があります。これは、リモートのSAP HANA Cloud, data lake リレーショナルエンジンソースでSQLコマンドを実行するのに役に立ちます。‘SYSHDL_TIERING_CONTAINERは、作成したリモートコンテナソースです。

最初にDBADMIN またはその他いずれかのHANA DBユーザーに接続します。

ここでは HANA DBユーザーとして接続し、以下のコマンドを実行します。

注意:SAP HANA Cloud, data lakeリレーショナルエンジン内にすでにCUSTOMERテーブルが定義されている必要があります。

コンテンツ(カラムと行)がクエリーで定義される仮想テーブルをCreateするために“CREATE VIEW”を使用します。

次のSQL文は、SAP HANA Cloud, data lakeリレーショナルエンジン内のREMOTE_EXECUTEによって、ビューのベースとなるSELECT文からビューCUSTOMERVIEWをCREATEします。

 

call SYSHDL_TIERING_CONTAINER.REMOTE_EXECUTE

(‘

    CREATE VIEW CUSTOMERVIEW AS

        SELECT * FROM “CUSTOMER”

‘ );

 

以下のSQL文は、SAP HANA Cloud, data lakeリレーショナルエンジン内に仮想テーブル HDL_CUSTOMERVIEWをCREATEします。
HDLADMINまたはSAP HANA Cloud, data lakeリレーショナルエンジンユーザーとして、以下のコマンドを実行します。

 ここではSAP HANA Cloud, data lakeリレーショナルエンジンユーザーとしてSQL文を実行しています。

 

CREATE VIRTUAL TABLE HDL_CUSTOMERVIEW

(

   C_CUSTKEY            integer                         not null,

   C_NAME               varchar(25)                     not null,

   C_ADDRESS            varchar(40)                     not null,

   C_NATIONKEY          integer                         not null,

   C_PHONE              varchar(15)                     not null,

   C_ACCTBAL            decimal(15,2)                   not null,

   C_MKTSEGMENT         varchar(10)                     not null,

   C_COMMENT            varchar(117)                    not null,

   primary key (C_CUSTKEY)        

) AT

“SYSHDL_TIERING_CONTAINER_SOURCE”.”NULL”.”SYSHDL_TIERING_CONTAINER”.”CUSTOMERVIEW”;

 

 

3. SQL on Filesクエリー結果セットからのSQL on Filesマテリアライズドビューの生成

 

SQL on Filesは、SAP HANA Cloud, data lakeが持つData Lake Filesサービスの機能で、SAP HANA Cloud, data lakeファイルコンテナ内の構造化データを含むファイルに対してクエリーを投げることができるものです。

SQL on Filesを使用することで、価値のわからない大量データを含むファイルの分析コストを削減することができます。

SQL on Filesでは、SAP HANA Cloud, data lake、SAP IQ、SAP HANA NSEディスクストレージ、SAP HANA Cloud, HANAデータベースなどのデータベースに、データの集計やすべてのデータを移動する前に、データに対して何らかの事前分析やデータフィルタリングを行うことができます。データに対するビューを作成することも可能です。

HDLADMINまたは SAP HANA Cloud, data lakeリレーショナルエンジンユーザーにログインし、以下のオペレーションを実行します。

 

SQL on Filesストラクチャーの作成

 

CREATE TABLE TPCH_SOF.ORDERS(

    O_ORDERKEY           bigint                        ,

    O_CUSTKEY            integer                       ,

    O_ORDERSTATUS        varchar(2)                    ,

    O_TOTALPRICE         decimal(15,2)                 ,

    O_ORDERDATE          date                          ,

    O_ORDERPRIORITY      varchar(15)                   ,

    O_CLERK              varchar(15)                   ,

    O_SHIPPRIORITY       integer                       ,

    O_COMMENT            varchar(79)                   ,

) IN FILES_SERVICE;

 

 

CREATE EXISTING TABLE ORDERS(

    O_ORDERKEY           bigint                        ,

    O_CUSTKEY            integer                       ,

    O_ORDERSTATUS        varchar(2)                    ,

    O_TOTALPRICE         decimal(15,2)                 ,

    O_ORDERDATE          date                          ,

    O_ORDERPRIORITY      varchar(15)                   ,

    O_CLERK              varchar(15)                   ,

    O_SHIPPRIORITY       integer                       ,

    O_COMMENT            varchar(79)                   ,

)  AT ‘MY_REMOTE_SERVER..TPCH_SOF.ORDERS’;

 

特定の年と月のデータの取得

 

Select * FROM ORDERS WHERE YEAR(O_ORDERDATE)=2025 AND MONTH(O_ORDERDATE)=05;

 

SQL on Filesへのクエリー結果セットからのSQL on Filesマテリアライズドビューの生成

 

CREATE MATERIALIZED VIEW ORDERSSOFVIEW AS

Select O_ORDERKEY, O_CUSTKEY, O_ORDERSTATUS, O_TOTALPRICE, O_ORDERDATE, O_ORDERPRIORITY, O_CLERK, O_SHIPPRIORITY, O_COMMENT

FROM ORDERS

WHERE YEAR(O_ORDERDATE)=2025 AND MONTH(O_ORDERDATE)=05

AUTO FULL REFRESH;

 

SQL on Filesを使用したビューの作成に関してはマニュアルも参照してください – Views in SQL on Files | SAP Help Portal

 

まとめ

このように、SAP HANA Cloud, HANAデータベースとSAP HANA Cloud, data lakeリレーショナルエンジン内にマテリアライズドビューを容易に作成して管理することができます。また、SQL on Files仮想テーブルを参照するユーザー定義ビューやシステムビューを作成して利用することができます。


このオリジナルブログが掲載されているSAP CommunityのSybase関連タグをフォローして、最新技術情報をキャッチアップしてください(フォローには登録が必要です)。

SAP Communityの関連タグ

・SAP HANA Cloud, data lake ブログ / Q&A
・SAP IQ ブログ / Q&A
・SAP SQL Anywhere ブログ / Q&A

SAP Communityでは質問も投稿することが可能で、世界中のSAP社員やユーザーのアドバイスを受けることができます。

 

———————————————————

SAPジャパンブログ内関連記事:

SAP HANA Cloud, data lake
SAP HANA Cloud, data lakeストレージのオブジェクトストレージへの変更によるパフォーマンス向上とペタバイト規模データの対応およびコスト低減
SAP HANA Cloud, data lakeでマテリアライズドビューを使用してパフォーマンスを上げる
SAP HANA Cloud, SAP HANA データベースとSAP HANA Cloud, data lake filesを使用する
SAP HANA Cloud, HANA データベースからSAP HANA Cloud, data lakeデータベースへの最速のデータ移行方法とテスト結果
SAP HANA Cloud, HANAデータベースから HANA Cloud, data lakeへのデータの高速移行とデータ移行速度に影響するパラメーター
SAP HANA Cloud, data lakeとSAP IQに共通するヒストリカルデータベースとDBSpaceサイズのキャプチャー方法
SAP HANA Cloud, data lake(IQ)をベースにしたNode.jsアプリケーションの構築
複数のSAP HANAソースからのデータを1つのSAP HANA Cloud, data lake(IQ)に集約する
SAP HANA Cloud, data lake Filesへの最初のアクセス設定
SAP HANA Cloud, data lakeおよびSAP IQにおけるスキーマのエクスポート/バックアップ
SAP HANA Cloud, data lake(IQ)にWindows端末からPythonで直接接続する
SAP HANA Cloud, data lakeへのデータロードにおけるvCPU数の影響
SAP IQのクラウドサービスが開始されました – SAP HANA Cloud, data lake (Standalone IQ)

SAP IQ
SAP IQのクラウドサービスが開始されました – SAP HANA Cloud, Data Lake (Standalone IQ)
SAP IQ – 隠れたイッピン(the hidden treasure) …
全てのSAP BW、SAP BW/4HANAリリースのSAP ニアラインストレージ(NLS)ソリューション – SAP IQ
SAP IQによるSAP ニアラインストレージ(NLS)のパフォーマンスを向上させる
SAP IQを利用したSAP Information Lifecycle Management(ILM)
DBA CockpitでSAP IQを有効にする
SAP IQのための容易なインストーラー - 「Q」
列指向データベースでもOLTPに対応したSAP Sybase IQ16の機能拡張
大量データの「圧縮率」と「ロード時間」を改善したSAP Sybase IQ16の技術解説
SAP IQ 16.1 SP05がリリースされました

SAP ASE
SAP ASE 16.0 SP04の新機能
SAP ASEの新しい管理ツール「AMC」の紹介:インストール方法、メモリー管理、ワークロード分析機能、Workload AnalyzerのSSL設定について
SAP HANAプラットフォームを相互補完し進化する旧Sybase製品の今――SAP ASEとSAP IQ
SAPアプリケーション向けデータベースとしてSAP Sybase ASEが採用される理由とは
RDBMSのパフォーマンス向上の仕掛け――SAP Sybase ASE 15.7の最新アーキテクチャー解説

オンラインマニュアル:
SAP IQ
SAP SQL Anywhere
SAP ASE

SAP Community (ブログ/ Q&A) :
SAP IQ
SAP SQL Anywhere
SAP ASE

SAP Community Wiki:
SAP IQ
SAP SQL Anywhere
SAP ASE

sap.com 製品ページ:
SAP IQ
SAP SQL Anywhere
SAP ASE

その他:
SAP IQ テクニカル概要
SAP IQ 16.0 ハードウェアサイジングガイド
様々なストレージおよびネットワークテクノロジーにおける SAP IQ 16 Multiplex のパフォーマンス評価


  • このエントリーをはてなブックマークに追加

連記事

SAPからのご案内

SAPジャパンブログ通信

ブログ記事の最新情報をメール配信しています。

以下のフォームより情報を入力し登録すると、メール配信が開始されます。

登録はこちら