SAP HANA Cloud, data lakeでマテリアライズドビューを使用してパフォーマンスを上げる
作成者:伊藤 沢 投稿日:2022年11月21日
このブログは、近い将来 SAP Community に移行する予定です。
このブログは、Ronit Nagwekarが執筆したブログ「HANA Data Lake Materialized Views」(2022/9/8)の抄訳です。最新の情報は、SAP Communityの最新ブログやマニュアルを参照してください。
概要
マテリアライズドビューとは何か?
マテリアライズドビューは、クエリー結果を保つデータベースオブジェクトです。これは、例えば離れたデータのローカルコピーや、テーブルの行やカラムのサブセット、joinの結果、あるいはaggregate関数によって作成されたサマリーなどです。
マテリアライズドビューを使用するメリットは何か?
- パフォーマンスの向上:同じaggregation関数でも、通常ソーステーブルへのクエリーよりもマテリアライズドビューへのクエリーの方が高速です。
- データの鮮度:マテリアライズを最後にいつ行ったかにかかわらず、マテリアライズドビューへのクエリーは常に最新の結果を返します。このクエリーで、マテリアライズされたビューのコンポーネントと、まだマテリアライズされていないソーステーブルのエントリー(デルタセクション)とを合わせるため、常に最新の結果が返されます。
- コスト削減:マテリアライズドビューへのクエリーは、ソーステーブルへaggregateするよりも少ないクラスターリソースを使用します。単純にaggregationが必要な場合には、ソーステーブルのリテンション(保持)ポリシーを減らすことができ、この設定によって、ソーステーブルのホットキャッシュの費用が低減します。
このブログのコンテンツ
- SAP HANA Cloud, data lakeのマテリアライズドビューの作成
- SAP HANA Cloud, HANA データベースへのビューの仮想化
前提条件
- マテリアライズドビューが参照するアイテム(テーブル)がすでにSAP HANA Cloud, data lakeに存在していること。.
- データベース内でマテリアライズドビューを構成する条件を満たしていること。データベースオプション要件については、マテリアライズドビューの必要条件と制限を参照してください。
- マテリアライズドビューを作成、イニシャライズ、またはリフレッシュする前に、全ての制限事項を満たしていることを確認してください。詳細は、マテリアライズドビューの必要条件と制限を参照してください。
- 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)
);
');
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 のパフォーマンス評価