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

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

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

このブログは、近い将来 SAP Community に移行する予定です。


このブログは、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 データベースへのビューの仮想化

 

前提条件

  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アクセス権限が必要です。  

最初に、 SAP HANA Cloud, HANA データベース接続からCUSTOMERとORDERSテーブルをSAP HANA Cloud, data lakeリレーショナルエンジンに作成します。
HANAに接続しているSQL コンソールを開き(DBADMINまたはHANAユーザー)、新しいSAP HANA Cloud, data lake リレーショナルエンジンのリレーショナルコンテナを作成します。

以下のSQL文を実行し、リレーショナルコンテナを作成します。   

CALL SYSHDL.CREATE_CONTAINER('TIERING_CONTAINER','<DBADMIN or any other HANA USER>');

SAP HANA Database Explorer の画面は以下のとおりです。

テーブル定義を作成します。

このSAP HANA Cloud, data lakeリレーショナルエンジン (SAP HANA Cloud, HANA DB マネージド) の SQL 文は、SAP HANA データベースユーザーとして、SAP HANA Cloud, HANA データベースに接続し、REMOTE_EXECUTE () プロシージャーを使用した時に使用することができます。

DDL 文を直接SAP HANA Cloud, data lakeリレーショナルエンジンに渡すために、REMOTE EXECUTE () を使用します。

CALL SYSHDL_TIERING_CONTAINER.REMOTE_EXECUTE
('
CREATE TABLE "CUSTOMER" (
   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)
);



CREATE TABLE "ORDERS" (  
    O_ORDERKEY           bigint                         not null,
    O_CUSTKEY            integer                        not null,
    O_ORDERSTATUS        varchar(2)                     not null,
    O_TOTALPRICE         decimal(15,2)                  not null,
    O_ORDERDATE          date                           not null,
    O_ORDERPRIORITY      varchar(15)                    not null,
    O_CLERK              varchar(15)                    not null,
    O_SHIPPRIORITY       integer                        not null,
    O_COMMENT            varchar(79)                    not null,
    primary key (O_ORDERKEY)
);
');
マテリアライズドビューの構文:
以下は、SAP HANA Cloud, data lake にマテリアライズドビューを作成する標準的な構文です。
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, HANA 接続から上記のSQL文を実行するために、以下のようにREMOTE_EXECUTE ()を実行します。

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE
('
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;
');

 

 

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

 

SAP HANA Cloud, HANA データベースにマテリアライズドビューを出すために、作成したマテリアライズドビューを参照する仮想テーブルをHANAに作成する必要があります。

DBADMIN接続を使用して、VIRTUAL HANAテーブルを作成します。 

 

CREATE VIRTUAL TABLE CUSTOMER (
   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" WITH REMOTE;

 

SAP HANA Cloud, data lake リレーショナルエンジンのマテリアライズドビューのステートメントを削除します。

 

以下は、データベースからマテリアライズドビューを削除するための標準的な構文です。

 

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

 

マテリアライズドビューを削除するために、以下のように、REMOTE_EXECUTE () を実行します。

 

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE
('
DROP MATERIALIZED VIEW IF EXISTS CUSTOMERVIEW;
');

 

 

マテリアライズドビューを ALTER します。

以下はマテリアライズドビューの ALTER の基本的な構文です。

 

ALTER MATERIALIZED VIEW [ <owner>]<view-name> 
   { SET HIDDEN
   | { ENABLE | DISABLE }
   | RENAME { PARTITION | SUBPARTITION } <range-partition-name> TO <new-range-partition-name>
   | SPLIT { PARTITION | SUBPARTITION } <split-object>
   | MERGE { PARTITION | SUBPARTITION } <partition-name-1> INTO <partition-name-2> 
   | PARTITION BY { <range-partitioning-scheme>  
                  | <hash-partitioning-scheme> 
                  | <hash-range-partitioning-scheme> }
   | SUBPARTITION BY RANGE <range-partition-decl>
   | ADD { PARTITION | SUBPARTITION } BY RANGE <range-partition-decl>
   | UNPARTITION
   | [ { AUTO | MANUAL } FULL REFRESH ] }

 

クリーンアップを行います。

1. 以下の構文を使用してマテリアライズドビューを削除します。

CALL SYSHDL_TIERING_CONTAINER_TEST.REMOTE_EXECUTE
('
DROP MATERIALIZED VIEW IF EXISTS CUSTOMERVIEW;
');

2. 作成されたテーブル定義を削除します。

CALL SYSHDL_TIERING_CONTAINER.REMOTE_EXECUTE
('
DROP TABLE CUSTOMER;

DROP TABLE ORDERS;
');

DROP TABLE CUSTOMER WITH REMOTE

3. リモートコンテナを削除します。

CALL SYSHDL.DELETE_CONTAINER('<relational_container_name>'); 


まとめ

このように、SAP HANA Cloud, HANAデータベースとSAP HANA Cloud, data lakeリレーショナルエンジン内にマテリアライズドビューを容易に作成して管理することができます。



このオリジナルブログが掲載されている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 2022年12月版、2023年3月版、6月版の主な新機能
SAP HANA Cloudの「マルチ環境」のサポートとSAP HANA CloudのKyma環境からの使用
SAP HANA Cloud : データレイクおよびデータティアリング(階層化)概要
SAP IQシステムからSAP HANA Cloud, data lake (Standalone Data Lake) へ移行する理由トップ5
SAP IQまたは、SAP HANA Cloud, data lakeリレーショナルエンジンのインスタンスから別のインスタンスへログインをコピーする
SAP HANA Cloud, data lakeリレーショナルエンジンで非同期でテーブルをロードする
Jupyter NotebookとPySparkでSAP HANA Cloud, data lake Filesを使用する
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 HANA Cloud
SAP HANA Cloud, Data Lake (SAP HANA DB-Managed)
SAP HANA Cloud, Data Lake (Standalone)
SAP Datasphereスペースを SAP HANA Cloud, data lakeに接続して、大量のデータを保存または利用できます。
SAP IQ
SAP SQL Anywhere(日本語)/(最新英語)
SAP ASE

SAP Community (ブログ/ Q&A) :
SAP HANA Cloud, data lake
SAP IQ
SAP SQL Anywhere (日本語ブログ一覧ページ
SAP ASE

SAP Community Wiki:
SAP IQ
SAP SQL Anywhere
SAP ASE

sap.com 製品ページ:
SAP HANA Cloud, data lake
データレイクとは
SAP IQ
SAP SQL Anywhereサブページ
SAP ASE

デベロッパー向けチュートリアル
SAP HANA Cloud, data lake

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

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

連記事

SAPからのご案内

SAPジャパンブログ通信

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

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

登録はこちら