すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:データインポート方法

最終更新日:Jun 27, 2024

さまざまなデータインポート要件を満たすために、AnalyticDB for MySQLでは、外部テーブル、DataWorks、data Transmission Service (DTS) 、またはJava Database Connectivity (JDBC) ベースのプログラムを使用してデータをインポートできます。 このトピックでは、適切なデータのインポート方法を選択するのに役立つ、前述のインポート方法の機能と使用シナリオについて説明します。

外部テーブルを使用したデータのインポート

AnalyticDB for MySQLを使用すると、さまざまなデータソースにアクセスし、外部テーブルを作成して外部データソースをマッピングできます。 これにより、外部データを同時に読み取り、そのデータをAnalyticDB for MySQLにインポートできます。 このデータインポート方法では、クラスターリソースを最大限に活用してインポートパフォーマンスを向上させます。

基本特性

  • この方法は、1つのジョブで大量のデータをインポートするのに適しています。

  • データインポートジョブは、高性能を確保するために大量のクラスターリソースを消費します。 オフピーク時にこの方法を使用することを推奨します。

  • インポートされたデータは、データインポートジョブの進行中には表示されず、ジョブが完了した後にのみ表示されます。

  • この方法でパーティションをインポートすると、同じ名前を使用する既存のパーティションのデータが上書きされます。

  • 外部テーブルを使用してデータインポートジョブが完了すると、テーブルインデックスが作成され、クエリのパフォーマンスが向上します。

一般的なシナリオ

  • データウェアハウスでのデータ初期化

    分析のためにテラバイトのデータを初期化してAnalyticDB for MySQLにインポートする場合は、データをOSSまたはHDFSに保存し、外部テーブルを使用してデータをインポートすることを推奨します。

  • バッチデータの高速分析

    バッチデータは、MaxComputeなどのバッチデータウェアハウスに保存されます。 毎日、ギガバイトまたはテラバイトのデータがバッチデータウェアハウスからAnalyticDB for MySQLにインポートされ、分析が加速されます。

メソッド

通常のインポートまたはエラスティックインポート方法を使用してデータをインポートできます。 デフォルトでは、通常のインポート方法が使用されます。 通常のインポート方法を使用する場合、データは計算ノードから読み取られ、インデックスはストレージノードに作成されます。 通常のインポート方法は、コンピューティングリソースとストレージリソースを消費します。 elastic importメソッドを使用すると、Serverless Sparkジョブのデータが読み取られ、インデックスが作成されます。 エラスティックインポート方式は、ジョブリソースグループのリソースを消費し、料金を発生させます。 次の表に、通常のインポート方法とエラスティックインポート方法の比較を示します。

通常のインポート方式とエラスティックインポート方式の比較

項目

定期的なインポート

Elastic import

サポートされているマイナーバージョン

無制限です。

V3.1.10.0以降。

利用シナリオ

  • 少量のデータをインポートします。

  • インポートジョブの速度と並行性に要件は課されません。

  • データインポートを高速化するために、消費するストレージノードリソースを少なくしたい場合。

  • インポートジョブには複数のテーブルが含まれます。

  • 大量のデータをパーティションテーブルにインポートしたい場合。

サポートされるデータソース

有効にする方法

デフォルトでは、通常のインポート方法が有効になっています。

デフォルトでは、elastic importメソッドはV3.1.10以降のAnalyticDB for MySQLクラスターで有効になっています。

制限事項

無制限です。

  • エラスティックインポートを使用して、INSERT OVERWRITE INTOステートメントのみを使用して、外部テーブルに基づいてAnalyticDB for MySQL data Lakehouse Edition (V3.0) にデータをインポートできます。

  • SQL操作の次の制限に注意してください。

    • エラスティックインポートを使用して、1つのテーブルからデータをインポートできますが、複数の結合テーブルはインポートできません。

    • Elastic importは、WHERE句とLIMIT句のみをサポートします。 ORDER BYなどの他の構文はサポートされていません。

    • エラスティックインポートジョブを実行するときは、SELECTステートメントの列フィールドと値フィールドにアスタリスク (*) 、列名、デフォルト値、または定数を使用できます。 SQL関数などの他の構文はサポートされていません。

  • エラスティックインポートを使用して、データをファクトテーブルにのみインポートできます。

  • Elastic importは、BOOLEANTINYINTSMALLINTINTBIGINTFLOATDOUBLEDECIMALVARCHARDATETIMEDATETIME、およびTIMESTAMPをサポートします。

同時インポートジョブ

通常のインポート方法は、最大2つの同時ジョブをサポートします。

elastic importメソッドは、最大32の同時ジョブをサポートします。

説明

インポートの同時実行性を向上させるには、adb.load.job.max.acuパラメーターを指定して、エラスティックインポートジョブで使用できるリソースの最大量を増やすことができます。 adb.load.job.max.acuパラメーターのデフォルト値は、シャード数プラス1です。 adb.load.job.max.acuパラメーターをK × デフォルト値 (K ≧ 1) に設定できます。 Kの最大値は、現在のインポートジョブのパーティションテーブルのパーティション数以下の値に設定することを推奨します。 シャードとパーティションの数を照会するには、次の方法を使用します。

  • 次のステートメントを実行して、AnalyticDB for MySQLクラスター内のシャードの数を照会します。

    SELECT count (1) FROM information_schema.kepler_meta_shards;
  • パーティション数の表示方法については、「ストレージ分析」トピックの「テーブルのデータサイズの表示」をご参照ください。

消費リソース

通常のインポートメソッドは、対話型リソースグループ (常駐計算ノード) からソースデータを読み取り、ストレージノードにインデックスを作成します。 このプロセスは、対話型リソースグループ (常駐計算ノード) およびストレージノードの大量のリソースを消費する。

説明

通常のインポートジョブを実行すると、CPU使用率やI/O使用率などのストレージノードメトリックの値が高くなります。 これは読み書きのパフォーマンスに影響します。

エラスティックインポートメソッドは、ジョブリソースグループ (動的にスケーリングされた計算ノード) からソースデータを読み取り、インデックスを作成します。 このプロセスは、ストレージノードリソースを消費しません。 構築されたホットパーティションのデータ (データ形式やインデックスなど) をオンプレミスデバイスにダウンロードするために消費されるストレージノードリソースはごくわずかです。

説明

エラスティックインポートジョブは、少量のストレージノードリソースを消費しますが、対話型リソースグループ (常駐計算ノード) のリソースは消費しません。 監視ページでは、CPU使用率やI/O使用率などのストレージノードメトリックの値が低く、1秒あたりのトランザクション数 (TPS) メトリックは表示されません。

インポート速度

通常のインポートジョブのインポート速度は、インポート設定、インポート方法、およびテーブルスキーマによって異なります。 さまざまなシナリオのデータインポート最適化方法の詳細については、「データインポートパフォーマンスの最適化」をご参照ください。

ジョブリソースグループの十分なリソースにより、高い同時実行性とエラスティックインポートジョブの高速化が保証されます。 複数のエラスティックインポートジョブを実行し、エラスティックインポートジョブで使用できるリソースの最大量を増やして、インポート速度を向上させることができます。

推奨されるプロダクト :

  • エラスティックインポートジョブの完了には少なくとも2分から3分かかり、少量のデータには適していません。 インポートジョブを3分以内に完了する必要がある場合は、通常のインポート方法を使用することを推奨します。

  • エラスティックインポートジョブは、同じリソースを使用する通常のインポートジョブと比較して、完了するまでに長い期間を必要とします。 インポートジョブを高速化する場合は、エラスティックインポートジョブで使用できるリソースの最大量を増やすことをお勧めします。

データインポートパフォーマンスの最適化

外部テーブルベースのデータインポート方法のパフォーマンスを向上させる方法については、「データインポートパフォーマンスの最適化」トピックの「外部テーブルを使用してデータをインポートするときのパフォーマンスの最適化」をご参照ください。

DataWorksを使用したデータのインポート

DataWorksは、さまざまなデータソースからAnalyticDB for MySQLにデータをインポートできる視覚化されたデータインポート方法を提供します。 外部テーブルと比較して、DataWorksは少量のデータのみをインポートする場合に適しています。

説明

DataWorks数百ギガバイトのデータをインポートするには、DataWorksの代わりに外部テーブルを使用することを推奨します。 詳細については、このトピックの「外部テーブルを使用してデータをインポートする」をご参照ください。

一般的なシナリオ

  • 1分または1時間ごとのデータインポート

    分析のために、1分または1時間ごとに少量のデータをAnalyticDB for MySQLにインポートします。

  • 複数の外部データソースからのデータインポート

    Tablestore、Redis、PostgreSQLなどの複数のデータソースからAnalyticDB for MySQLにデータをインポートします。

変更方法

DataWorksを使用してデータをインポートするには、次の手順を実行します。

  1. データソースを設定します。 RDS for MySQL、Oracle、RDS for SQL ServerOSSMaxCompute、およびHDFSのデータソースがサポートされています。 詳細については、以下のトピックをご参照ください。

  2. AnalyticDB for MySQL V3.0データソースの追加

  3. 同期ジョブのソース接続と宛先接続を設定します

データインポートパフォーマンスの最適化

DataWorksベースのデータインポート方法のパフォーマンスを向上させる方法については、「データインポートパフォーマンスの最適化」トピックの「DataWorksを使用してデータをインポートするときのパフォーマンスの最適化」を参照してください。

DTSを使用したデータのインポート

Data Transmission Service (DTS) は、リアルタイムのデータストリーミングサービスです。 DTSは、リレーショナルデータベース管理システム (RDBMS) データベース、NoSQLデータベース、オンライン分析処理 (OLAP) データベースなどのデータソース間のデータ転送をサポートします。 DTSには、従来のデータ移行および同期ツールに比べて、さまざまな機能、高性能、セキュリティ、信頼性、使いやすさなどの利点があります。 DTSはデータ転送を簡素化し、ビジネス開発に集中できます。 DTSを使用して、さまざまなデータソースからAnalyticDB for MySQLにデータをインポートし、リアルタイムで分析できます。

一般的なシナリオ

  • 数秒以内のリアルタイムデータ同期

    分析のために、RDS for MySQLまたはPolarDB for MySQLからAnalyticDB for MySQLにデータをリアルタイムで同期したい場合。

  • マルチソース集約

    分析のために、複数のRDS for MySQLインスタンスまたはPolarDB for MySQLクラスターのデータをAnalyticDB for MySQLクラスターに同期します。 DTSのマルチテーブルマージ機能を使用して、同じスキーマを使用する複数のソーステーブルをAnalyticDB for MySQLクラスターの単一のテーブルに同期できます。

変更方法

JDBCベースのプログラムを使用してデータをインポートする

外部テーブルまたはDataWorksを使用してデータをインポートする方法がビジネス要件を満たさない場合は、JDBCベースのプログラムを使用して、データクレンジングや、非構造化データを含むその他の複雑なシナリオでデータをインポートできます。

一般的なシナリオ

  • データ前処理後のインポート

    生成されたログファイルを解析し、リアルタイムでAnalyticDB for MySQLにインポートします。

  • オンプレミスのデータインポート

    OSSHDFS、またはMaxComputeへのアップロードに失敗したオンプレミスデータをAnalyticDB for MySQLにインポートします。

使用上の注意

データインポートパフォーマンスの最適化

JDBCベースのプログラムを使用するデータインポート方法のパフォーマンスを向上させる方法については、「データインポートのパフォーマンスの最適化」トピックの「JDBCベースのプログラムを使用してデータをインポートするときのパフォーマンスの最適化」を参照してください。

データ同期を使用したデータのインポート

AnalyticDB for MySQLは、AnalyticDBパイプラインサービス (APS) 、メタデータ検出、Hiveデータ移行など、さまざまなデータ同期機能を提供します。 データ同期機能を使用すると、OSSメタデータを検出して整理し、Simple Log Service (SLS) およびApsaraMQ for KafkaからAnalyticDB for MySQLにデータをリアルタイムで同期し、その後のデータ分析のためにHiveデータをOSSに移行できます。

一般的なシナリオ

  • 低コストのストレージと分析

    SLSデータなどの大量のログやKafkaデータなどのメッセージを費用対効果の高い方法で保存および分析したい場合は、APS機能を使用して、SLSおよびKafkaからAnalyticDB for MySQLにリアルタイムでデータを同期できます。

  • メタデータ検出

    大量のOSSデータは、メタデータがないため、管理および分析が困難です。 AnalyticDB for MySQLは、メタデータ検出機能を使用して、データベース、テーブル、パーティションなどのメタデータレベルを構築し、データ形式とフィールド情報を識別してテーブルスキーマを生成します。 メタデータ発見機能を使用して構築されたメタデータは、後続の分析のために他の分析エンジンによってデータを識別することを可能にする。

  • Hiveデータ移行

    AnalyticDB for MySQLで、Hiveに保存されているデータに対してメタデータ管理やその後の分析などの操作を実行する場合は、Hiveデータ移行機能を使用してHiveデータをOSSに移行できます。 次に、AnalyticDB for MySQLはメタデータを自動的に整理し、その後の分析を実行します。

変更方法