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の詳細については以下のブログを参照してください:
SAP HANA データ戦略: リアルタイム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 コマンド
- SAP HANA Cloud, data lakeから、SAP HANA Cloud HANAデータベースへ接続しているサーバー
- データをロードして作成するためのローカルの SAP HANA Cloud, data lake テーブル
- 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: HANA Data Modeling a Detailed Overview
- HANA Data Strategy: Data Ingestion including Real-Time Change Data Capture
- HANA Data Strategy: Data Ingestion – Virtualization
- HANA Data Strategy: HANA Data Tiering
このオリジナルブログが掲載されている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 のパフォーマンス評価