SAP HANA Cloud, HANA データベースからSAP HANA Cloud, data lakeデータベースへの最速のデータ移行方法とテスト結果

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

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

このブログは、Douglas Hooverが執筆したブログ「The fastest way to load data from HANA Cloud, HANA into HANA Cloud, HANA Data Lake(2022/3/8)の抄訳です。最新の情報は、SAP Communityの最新ブログマニュアルを参照してください。


このブログは、SAP HANA データ戦略ブログシリーズの1つです
https://blogs.sap.com/2019/10/14/sap-hana-data-strategy/

 

概要

SAP HANA CloudのHANA データベースからSAP HANA Cloud, data lake データベースにより大きなテーブルを移行するお客様が増えるにつれ、SAP HANA CloudのHANAデータベースからSAP HANA Cloud, data lake データベースへのデータ移行の最速の方法について聞かれるようになりました。より正確にいうと、SAP HANA Cloud, data lake仮想テーブルに対してシンプルにHANA INSERTを実行するよりも高速な方法があるのか聞かれるようになりました。

なぜSAP HANA CloudのHANAデータベースからSAP HANA Cloud, data lake データベースに大きなテーブルを移行するお客様がいるのか疑問に思う方もいるかもしれません。最もよくある利用ケースは、大きなデータベースの最初のマテリアライズあるいは古いデータをSAP HANA Cloud, data lake データベースにアーカイブするためです。これらのお客様の大半は、通常SAP HANA Smart Data Integration (SDI)を使用してこのマテリアライゼーションを行っており、これらのテーブルを最新の状態にキープするためにSDIのFlowgraphsやSDIのリアルタイムレプリケーションを使用したChange Data Captureを同じインターフェースを使用して行っています。

 

SAP HANA SDIの詳細については以下のブログを参照してください:

https://blogs.sap.com/2020/06/18/hana-data-strategy-data-ingestion-including-real-time-change-data-capture/

SAP HANA データ戦略: リアルタイムChange Data Capture を含む高速データ投入(英語)

https://blogs.sap.com/2020/06/18/hana-data-strategy-data-ingestion-including-real-time-change-data-capture/

SAP HANA データ戦略: 高速データ投入仮想化(英語)

https://blogs.sap.com/2020/03/09/hana-data-strategy-data-ingestion-virtualization/

ここで実験するデータ移行に関するシンプルな方法は以下の3種です:

  • シンプルにSAP HANA Cloud, data lake 仮想テーブルへのHANA INSERT
  • HANA仮想テーブルにアクセスし、シンプルにSAP HANA Cloud, data lake からdata lake INSERT
  • HANAエクスポートとdata lake LOAD

 

こう質問する人もいるかもいれません:

「なぜSAP HANA Cloud, HANAデータベース経由で行うのか?」

「なぜSAP HANA Cloud, data lake データベースに直接データをロードしないのか?」

繰り返しますが、これらのお客様はターゲットとしてHANAオブジェクト(ローカルまたは仮想)を必要とするHANA Enterprise Information Management (EIM)ツールを使用しています。将来のブログでは、SAP IQ クライアントサイドロード、Data Services、Data Intelligence経由のSAP HANA Cloud, data lakeへの直接のデータロードについて説明します。

SAP HANA Cloud, HANA データベースからSAP HANA Cloud, data lakeデータベースへの最速のデータロード方法は、SAP HANA Cloud, data lakeデータベースから、SAP HANA Cloud, HANA データベースの物理テーブルを指定するプロキシテーブルを作成するために「create existing local temporary table」を使用してHANA テーブルからSELECTでINSERT 文を実行する方法です。(詳細は以下のテーブル参照)

方法 データサイズ 時間 (秒)
HANA Cloud, data lake/IQ INSERT..SELECT 28,565,809 3.3 GB 52.86
*HANA Cloud, data lake/IQ LOAD

Azure File System

28,565,809 3.3 GB 116 (1分56秒)
*HANA Cloud, data lake/IQ LOAD

HDL File System

28,565,809 3.3 GB 510 (8分30秒)
HANA INSERT..SELECT 28,565,809 3.3 GB 1277 (21分7秒)

* HANAデータベースからファイルシステムへのデータエクスポート時間は含めていません。

28,565,809行、約3.3GBの TPC-D ORDERS テーブルを使用し、SAP HANA Cloud, data lake の小さめの設定でロードしています。

 

以下のSAP HANA Cloud 設定を使用してテストしました

SAP HANA Cloud, HANA データベース:60GB/200GB、4 vCPU

SAP HANA Cloud, data lake データベース:16TB、ワーカー8vCPU /コーディネーター8vCPU

SAP HANA Cloud, data lake では、より多くの並列処理を実行するには(特により大きなテーブルの場合)より多くのvCPU数を設定します。より多くのTBをSAP HANA Cloud, data lakeに追加することで、より大きなディスクI/Oスループットを得ることができます。

 

テストで使用した詳細設定と構文

SAP HANA Cockpit をスタートして SAP HANA Cloudを管理します。

SAP HANA Cloud, data lake から「Open in SAP HANA Database Explorer」を選択します。

もしこれが初回であれば、SAP HANA Cloud, data lake のADMIN パスワードを求められます。

SQLコマンドを入力し、クリックして実行します。

 

 

以下を作成するためのSAP HANA Cloud, data lake コマンド

  1. SAP HANA Cloud, data lakeから、SAP HANA Cloud HANAデータベースへ接続しているサーバー
  2. データをロードして作成するためのローカルの SAP HANA Cloud, data lake テーブル
  3. SAP HANA Cloudインスタンスのテーブルを指定するローカルのテンポラリープロキシーテーブル

 

CREATE SERVER

–DROP SERVER DRHHC2_HDB

CREATE SERVER DRHHC2_HDB CLASS ‘HANAODBC’ USING ‘Driver=libodbcHDB.so;ConnectTimeout=60000;ServerNode=XXXX.hana.prod-us10.hanacloud.ondemand.com:443;ENCRYPT=TRUE;ssltruststore=XXXX.hana.prod-us10.hanacloud.ondemand.com;ssltrustcert=Yes;UID=DBADMIN;PWD=XXXXX;’

 

CREATE TARGET TABLE

CREATE  TABLE REGIONPULL (

R_REGIONKEY   bigint                  not null,

R_NAME            varchar(25)        not null,

R_COMMENT    varchar(152)      not null,

primary key (R_REGIONKEY)

);

 

CREATE local temporary PROXY

create existing local temporary table REGION_PROXY (

R_REGIONKEY   bigint                  not null,

R_NAME                          varchar(25)        not null,

R_COMMENT    varchar(152)      not null,

primary key (R_REGIONKEY)

)

at ‘DRHHC2_HDB..TPCD.REGION’;

 

INSERT DATA

INSERT into REGIONPULL SELECT * from REGION_PROXY;

Commit;

–1.9s

 

ORDERS テーブルテストコマンド

–DROP TABLE ORDERSPULL;

create table ORDERSPULL (

O_ORDERKEY           BIGINT               not null,

O_CUSTKEY            BIGINT               not null,

O_ORDERSTATUS        VARCHAR(1)           not null,

O_TOTALPRICE         DECIMAL(12,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 existing local temporary table ORDERS_PROXY (

O_ORDERKEY           BIGINT               not null,

O_CUSTKEY            BIGINT               not null,

O_ORDERSTATUS        VARCHAR(1)           not null,

O_TOTALPRICE         DECIMAL(12,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

)

at ‘DRHHC2_HDB..TPCD.ORDERS’;

 

INSERT into ORDERSPULL SELECT * from ORDERS_PROXY;

Commit;

–59s

–52.86 s

 

SELECT COUNT(*) FROM ORDERSPULL;

–28,565,809

 

LINEITEM テーブルテストコマンド

create table LINEITEM (

L_ORDERKEY           BIGINT               not null,

L_PARTKEY            BIGINT               not null,

L_SUPPKEY            BIGINT               not null,

L_LINENUMBER         INTEGER              not null,

L_QUANTITY           DECIMAL(12,2)        not null,

L_EXTENDEDPRICE      DECIMAL(12,2)        not null,

L_DISCOUNT           DECIMAL(12,2)        not null,

L_TAX                DECIMAL(12,2)        not null,

L_RETURNFLAG         VARCHAR(1)              not null,

L_LINESTATUS         VARCHAR(1)              not null,

L_SHIPDATE           DATE                 not null,

L_COMMITDATE         DATE                 not null,

L_RECEIPTDATE        DATE                 not null,

L_SHIPINSTRUCT       VARCHAR(25)          not null,

L_SHIPMODE           VARCHAR(10)          not null,

L_COMMENT            VARCHAR(44)          not null,

primary key (L_ORDERKEY,L_LINENUMBER)

);

 

create existing local temporary table LINEITEM_PROXY (

L_ORDERKEY           BIGINT               not null,

L_PARTKEY            BIGINT               not null,

L_SUPPKEY            BIGINT               not null,

L_LINENUMBER         INTEGER              not null,

L_QUANTITY           DECIMAL(12,2)        not null,

L_EXTENDEDPRICE      DECIMAL(12,2)        not null,

L_DISCOUNT           DECIMAL(12,2)        not null,

L_TAX                DECIMAL(12,2)        not null,

L_RETURNFLAG         VARCHAR(1)              not null,

L_LINESTATUS         VARCHAR(1)              not null,

L_SHIPDATE           DATE                 not null,

L_COMMITDATE         DATE                 not null,

L_RECEIPTDATE        DATE                 not null,

L_SHIPINSTRUCT       VARCHAR(25)          not null,

L_SHIPMODE           VARCHAR(10)          not null,

L_COMMENT            VARCHAR(44)          not null

)

at ‘DRHHC2_HDB..TPCD.LINEITEM’;

 

INSERT into LINEITEM SELECT * from LINEITEM_PROXY;

Commit;

— Rows affected:       114,129,863

— Client elapsed time: 4 m 52 s

 

まとめ

SAP HANA Cloud, HANA データベースからSAP HANA Cloud, data lakeデータベースへのデータの最速のロード方法は、SAP HANA Cloud, data lake データベースから、SAP HANA Cloud, HANA データベースの物理テーブルを指定するプロキシテーブルを作成するために「create existing local temporary table」を使用してHANA テーブルからSELECTでINSERT 文を実行する方法です。これは、このブログで紹介しているコマンドを使用することで、とても容易に行うことができます。 あるいは、これらのコマンドを生成するプロシージャーを作成すると、さらに容易になります。(下のDanielのブログを参照してください。)

 

以下も参考にしてください

Jason Hinspergerの「SAP HANA Cloud, data lakeへのデータロード」のブログでは、SAP HANA Cloud, data lake のvCPU数やデータベースサイズを増やすとロードのパフォーマンスにどのような影響があるか説明しています。

Daniel Utvichの「SAP HANA Cloud, HANAデータベースからSAP HANA Cloud, data lakeへのデータの高速移行」のブログでは、システムテーブル情報をベースにしたSQLコードを生成するプロシージャーの例を紹介しています。

 

SAP HANA データ戦略ブログインデックス

SAP HANA Data Strategy

 


このオリジナルブログが掲載されている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ジャパンブログ通信

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

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

登録はこちら