テーブルとコレクション設定のルールとオペレーション - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テーブルとコレクション設定のルールとオペレーション

テーブル設定を使用して、指定されたオペレーションで選択されたテーブルまたはビューに適用する設定を指定します。エンドポイントと移行の要件に応じてテーブル設定ルールはオプションです。

テーブルやビューを使用する代わりに、MongoDB および Amazon DocumentDB データベースでは、データレコードをドキュメントとしてまとめて[collections](コレクション) 格納します。MongoDB または Amazon DocumentDB エンドポイントの 1 つのデータベースは、データベース名で識別される特定のコレクションセットです。

MongoDB または Amazon DocumentDB ソースから移行する場合、並列ロード設定の操作は少し異なります。この場合、テーブルおよびビューではなく、選択したコレクションに対する並列ロード設定の自動セグメンテーションまたは範囲セグメンテーション タイプを考慮します。

テーブル設定ルールタイプを使用するテーブルマッピングルールの場合、以下のパラメータを適用することができます。

パラメータ 使用できる値: 説明
rule-type table-settings 選択ルールにより指定されたテーブルまたはビューまたはコレクションにルールを適用する値。
rule-id 数値。 ルールを識別する一意の数値。
rule-name 英数字値。 ルールを特定する一意な名前。
object-locator 以下のパラメータを使用するオブジェクト。
  • schema-name – スキーマの名前。MongoDB と Amazon DocumentDB エンドポイントの場合、これはコレクションの集合を保持するデータベースの名前です。

  • table-name – テーブルまたはビューまたはコレクションの名前。

特定のスキーマ、テーブル、ビューの名前、または特定のデータベースとコレクションの名前 (ワイルドカードなし)。

parallel-load 以下のパラメータを使用するオブジェクト。
  • type – 並列ロードを有効にするかどうかを指定します。

    そうでない場合、このパラメータは、テーブルまたはビューのパーティション、サブパーティションや並列でロードする他のセグメントを識別するメカニズムもしています。パーティションは、ソーステーブルまたはビューですでに定義され、名前で識別されるセグメントです。

    MongoDB エンドポイントと Amazon DocumentDB エンドポイントの場合、パーティションは segments です。 は、関連する自動セグメンテーションパラメータを指定して、これらを自動的に計算 AWS DMS できます。または、範囲セグメンテーションパラメータを使用してこれらを手動で指定することもできます。

    Oracle エンドポイントのみでは、サブパーティションはソーステーブルまたはビューですでに定義されて名前によって識別できるセグメントの追加レベルとなります。1 つ以上のテーブル列またはビュー列に値範囲の境界を指定することで、table-settings ルール内の他のセグメントを識別できます。

  • partitionstypepartitions-list の場合、この値はすべてのパーティションが並列ロードされるように指定します。

  • subpartitions – Oracle エンドポイントのみでは、typepartitions-list の場合、この値はすべてのサブパーティションが並列ロードされるように指定します。

  • columnstyperanges の場合、この値は並列でロードする範囲ベースのセグメントを識別するために使用する列の名前を指定します。

  • boundariestyperanges の場合、この値は並列でロードされる範囲ベースのセグメントを識別するために使用する columns の値を指定します。

object-locator オプションで識別されたテーブルまたはビューでの並列ロード(マルチスレッド)オペレーションを指定する値。この場合、次の任意の方法で並行してロードすることができます。

  • 使用可能なすべてのパーティションまたはサブパーティションで指定されるセグメントによって。

  • パーティションおよびサブパーティションで選択することによって。

  • 指定した自動セグメンテーションまたは範囲ベースのセグメントセグメントに基づく。

並列ロードの詳細については、「選択したテーブルおよびビューさらにコレクションで並列ロードを使用する」をご参照ください。

type parallel-load の次のいずれか。
  • partitions-auto - テーブルまたはビューのすべてのパーティションが並列でロードされます。各パーティションは個別のスレッドに割り当てられます。

    これは、MongoDB および Amazon DocumentDB ソース エンドポイントが並列全ロードの自動セグメンテーション オプションを使用するために必要な設定です。

  • subpartitions-auto – (Oracle エンドポイントのみ) テーブルまたはビューのすべてのサブパーティションが並列でロードされます。すべてのサブパーティションは個別のスレッドに割り当てられます。

  • partitions-list - テーブルまたはビューで指定されたすべてのパーティションが並列でロードされます。Oracle エンドポイントのみでは、テーブルまたはビューのすべてのサブパーティションが並列でロードされます。指定する各パーティションおよびサブパーティションは、独自のスレッドに割り当てられます。並列ロードするパーティションおよびサブパーティションをパーティション名 (partitions) とサブパーティション名 (subpartitions) で指定します。

  • ranges – テーブルまたはビューまたはコレクションの範囲指定されたすべてのセグメントが並列ロードされます。識別した各テーブルまたはビューまたはコレクションのセグメントは自己スレッドに割り当てられます。このセグメントを列名 (columns) および 列の値 (boundaries) で指定します。

    PostgreSQL エンドポイントは、このタイプの並列ロードのみをサポートします。ソースエンドポイントとして MongoDB と Amazon DocumentDB は、全ロードのこの範囲セグメンテーションタイプと並列自動セグメンテーションタイプの両方に対応しています (partitions-auto)。

  • none – テーブルまたはビューまたはコレクションは、パーティションやサブパーティションに関係なく、シングルスレッドタスクでロードされます(デフォルト)。詳細については、「[Creating a task] (タスクの作成)」をご参照ください。

並列でロードするテーブルまたはビューまたはコレクションのパーティションまたはサブパーティション、セグメントを識別するメカニズム。
number-of-partitions (オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、このパラメータは移行に使用されるパーティション (セグメント) の総数を指定します。デフォルトは 16 です。 並列ロードされるパーティションの正確な数を指定します。
collection-count-from-metadata (オプション) MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションpartitions-autoに対して typeが で、このパラメータが に設定されている場合true、 はパーティション数を決定するために推定コレクション数 AWS DMS を使用します。このパラメータが に設定されている場合false、 は実際のコレクション数 AWS DMS を使用します。デフォルト: true 並列ロードするパーティションの数を計算するために、推定収集回数と実際の収集数のどちらを使用するかを指定します。
max-records-skip-per-page (オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、これは各パーティションの境界を決定する際に一度にスキップするレコードの数です。 AWS DMS は、ページ割りスキップアプローチを使用して、パーティションの最小境界を決定します。デフォルトは 10,000 です。 各パーティションの境界を決定するときに一度にスキップするレコード数を指定します。デフォルトより比較的高い値を設定すると、タイムアウトし、タスクが失敗する可能性がある。デフォルトから比較的低い値を設定すると、ページあたりのオペレーションが多くなり、全ロードが遅くなります。
batch-size (オプション) type が MongoDB または Amazon DocumentDB エンドポイントの指定されたコレクションについて partitions-auto の場合、この整数値により、1 回のラウンドトリップ バッチで返されるドキュメントの数が制限されます。バッチサイズがゼロ (0) の場合、カーソルはサーバー定義の最大バッチサイズを使用します。デフォルトは 0 です。 1 つのバッチで返されるドキュメントの最大数を指定します。各バッチには、サーバーへの往復が必要です。
partitions typepartitions-list の場合、これは並列でロードするパーティションの名前を指定する文字列の配列です。 並列ロードするパーティションの名前。
subpartitions (Oracle エンドポイントのみ) typepartitions-list の場合、これは並列してロードするサブパーティションの名前を指定する文字列の配列です。 並列ロードするサブパーティションの名前。
columns typeranges の場合、並列ロードする範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントを識別する列の名前に設定された文字列の配列です。 並列ロードする範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントを識別する列の名前。
boundaries typeranges の場合、列の値の配列の配列。各列の値の配列には、数量の列値と columns で指定された順序が含まれています。列の値の配列はテーブルセグメントまたはビューセグメントまたはコレクションセグメントの上限の境界を指定します。各追加列値の配列は、1 つの追加テーブルセグメントまたはビューセグメンまたはコレクションセグメントの上限の境界を追加します。このような範囲ベースのテーブルセグメントまたはビューセグメントまたはコレクションセグメントはすべて並列ロードされます。 並列ロードする範囲ベースのテーブルパーティションまたはビューパーティションまたはコレクションパーティションを識別する列の値。
lob-settings 以下のパラメータを使用するオブジェクト。
  • mode – の移行処理モードを指定しますLOBs。

  • bulk-max-sizemode設定に応じてLOBs、 の最大サイズを指定します。

object-locator オプションによって識別されるテーブルまたはビューLOBの処理を指定する値。指定されたLOB処理は、このテーブルまたはビューのタスクLOB設定のみを上書きします。LOB 設定パラメータの使用の詳細については、「」を参照してください選択したテーブルまたはビューLOBの設定の指定
mode

次の値を使用して、指定されたテーブルまたはビューLOBsで の移行処理を指定します。

  • limited – (デフォルト) この値は、テーブルまたはビュー内の他のすべての列データ型とともに、すべてのLOBs移行されたインラインで、移行を制限LOBモードに設定します。ほとんど小さい LOBs (100 MB 以下) をレプリケートする場合は、この値を使用します。また、bulk-max-size 値を指定します(ゼロは無効です)。よりLOBs大きく移行されたすべての bulk-max-sizeは、設定したサイズに切り捨てられます。

  • unlimited – この値は、移行をフルLOBモードに設定します。この値は、レプリケートLOBsする のすべてまたは大部分が 1 GB より大きい場合に使用します。bulk-max-size 値 0 を指定すると、すべて標準フルLOBモードで移行LOBsされます。この形式のunlimitedモードでは、ソーステーブルまたはビューからのルックアップを使用して、すべての が他の列データ型とは別に移行LOBsされます。0 より大きいbulk-max-size値を指定すると、すべてが組み合わせフルLOBモードで移行LOBsされます。この形式のunlimitedモードでは、 LOBsより大きい bulk-max-sizeは、標準のフルLOBモードと同様に、ソーステーブルまたはビュールックアップを使用して移行されます。それ以外の場合、制限LOBモードと同様に、このサイズLOBsまでインラインで移行されます。使用する形式に関係なく、 unlimitedモードで切り捨てLOBられることはありません。

  • none – すべてのテーブルまたはビューLOBsは、タスクLOB設定に従って移行されます。

    タスクLOB設定の詳細については、「」を参照してくださいターゲットメタデータのタスク設定

    移行方法LOBsとこれらのタスクLOB設定を指定する方法の詳細については、「」を参照してくださいAWS DMS タスクでのソースデータベースLOBのサポートの設定

の移行に使用されるメカニズムLOBs。
bulk-max-size この値の効果は mode によって異なります。 キロバイト単位LOBsの の最大サイズ。このオプションは、小さな をレプリケートする必要がある場合、LOBsまたはターゲットエンドポイントが無制限LOBのサイズをサポートしていない場合にのみ指定します。

テーブル設定内のワイルドカードの制限

次のとおり、"table-settings" ルールでのパーセントのワイルドカード ("%") の使用は、ソースデータベースではサポートされていません。

{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }

次に示すように"table-settings"ルール"%"で を使用すると、 は次の例外 AWS DMS を返します。

Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.

さらに、 では、 で 1 つのタスクを使用して大量の大規模なコレクションをロードしない AWS ことをお勧めしますparallel-loadMaxFullLoadSubTasks タスク設定パラメータ値により、 AWS DMS はリソース競合と、並行してロードするセグメント数を制限することに注意します。MaxFullLoadSubTasks の最大値は 49 です。

この代わりに各 "schema-name""table-name" を個別に指定して、最大のコレクションのソースデータベースのすべてのコレクションを指定します。また、移行は適切にスケールアップします。例えば、データベース内の大量のコレクションを処理するのに十分な数のレプリケーションインスタンスで複数のタスクを実行します。

選択したテーブルおよびビューさらにコレクションで並列ロードを使用する

移行を高速化してより効率的にするには、選択したリレーショナルテーブルおよびビューおよびコレクションを並列ロードできます。つまり、数本のスレッドを並列使用し、単一セグメント化テーブルまたはビュー、コレクションを移行できます。そのために、 は全ロードタスクをスレッドに AWS DMS 分割し、各テーブルセグメントを独自のスレッドに割り当てます。

この並列ロードプロセスを使用すると、まず複数スレッドが複数テーブルおよびビューおよびコレクションをソースのエンドポイントから並列アップロードするようにできます。次に、複数のスレッドを移行し、同じテーブルおよびビューおよびコレクションをターゲットエンドポイントに並列ロードすることができます。一部のデータベースエンジンでは、既存のパーティションあるいはサブパーティションを使用してテーブルおよびビューをセグメント化することができます。他のデータベースエンジンでは、特定のパラメータ (自動セグメンテーション) に従ってコレクション AWS DMS を自動的にセグメント化できます。それ以外の場合は、列の値の範囲を指定することで任意のテーブルまたはビュー、コレクションをセグメント化できます。

並列ロードは以下のソースエンドポイントでサポートされています。

  • Oracle

  • Microsoft SQL サーバー

  • マイSQL

  • PostgreSQL

  • IBM Db2 LUW

  • SAP アダプティブサーバーエンタープライズ (ASE)

  • MongoDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみサポート)

  • Amazon DocumentDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみをサポート)

MongoDB および Amazon DocumentDB エンドポイントの場合、 は並列全ロードの範囲セグメンテーションオプションのパーティションキーである列に対して次のデータ型 AWS DMS をサポートします。

  • 倍精度

  • 文字列

  • ObjectId

  • 32 ビット整数

  • 64 ビット整数

テーブル設定ルールで使用する並列ロードは、次のターゲットエンドポイントでサポートされます。

  • Oracle

  • Microsoft SQL サーバー

  • マイSQL

  • PostgreSQL

  • Amazon S3

  • SAP アダプティブサーバーエンタープライズ (ASE)

  • Amazon Redshift

  • MongoDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみサポート)

  • Amazon DocumentDB (並列全ロードの自動セグメンテーションと範囲セグメンテーション オプションのみをサポート)

  • Db2 LUW

並行してロードするテーブルとビューの最大数を指定するには、MaxFullLoadSubTasks タスク設定を使用します。

並列ロードタスクのサポートされるターゲットのテーブルまたはビューごとの最大スレッド数を指定するには、列値の境界を使用してさらに多くのセグメントを定義できます。

重要

MaxFullLoadSubTasks は、並行してロードするテーブルまたはテーブルのセグメント数を制御します。ParallelLoadThreads は、ロードを並行して実行するために移行タスクが使用するスレッド数を制御します。上記の設定は乗算です。そのため、フルロードタスクで使用するスレッドの合計数は、ほぼ ParallelLoadThreads 値と MaxFullLoadSubTasks 値を乗算した値になります (ParallelLoadThreads * MaxFullLoadSubtasks))

多数のフルロードサブタスクがあり、多数の並列ロードスレッドがあるタスクを作成すると、タスクがメモリを大量に消費してエラーとなる可能性があります。

Amazon DynamoDB、Amazon Kinesis Data Streams、Apache Kafka、または Amazon Elasticsearch Service のターゲットのテーブルあたりの最大スレッド数を指定するには、ParallelLoadThreads ターゲットメタデータタスク設定を使用します。

ParallelLoadThreads を使用する際に並列ロードタスクのバッファサイズを指定するには、ParallelLoadBufferSize ターゲットメタデータタスク設定を使用します。

ParallelLoadThreadsParallelLoadBufferSize の可用性と設定は、ターゲットエンドポイントによって異なります。

ParallelLoadThreadsParallelLoadBufferSize の設定の詳細については、「ターゲットメタデータのタスク設定」をご参照ください。MaxFullLoadSubTasks の設定の詳細については、「全ロードタスク設定」をご参照ください。ターゲットエンドポイントに固有の情報については、関連するトピックをご参照ください。

並列ロードを使用するには、parallel-load オプションを指定した table-settings タイプのテーブルマッピングルールを作成します。table-settings ルールでは、並列ロードする単一テーブルまたはビュー、コレクションのセグメント化条件を指定できます。これを行うには、 parallel-load オプションの type パラメータの複数のオプションのいずれかに設定します。

これを行う方法は、並行ロード用にテーブルまたはビュー、コレクションのセグメント化方法によって異なります。

  • パーティション (またはセグメント) を使用 - partitions-auto タイプを使用して、すべての既存のテーブルまたはビューのパーティション (またはセグメント) をロードします。または、partitions-list タイプを指定したパーティション配列で使用して、選択したパーティションのみをロードします。

    MongoDB および Amazon DocumentDB エンドポイントのみ、 partitions-autoタイプと追加のオプションtable-settingsパラメータを使用して AWS DMS が自動的に計算するセグメントで、すべてのコレクションまたは指定されたコレクションをロードします。

  • (Oracle エンドポイントのみ) サブパーティションを使用 - subpartitions-auto タイプを使用してすべての既存のテーブル サブパーティションまたはビューサブパーティションをロードします。または、partitions-list タイプを指定した subpartitions 配列で使用して、選択したサブパーティションのみをロードします。

  • 定義するセグメントを使用 - 列値の境界を使用して定義したテーブルセグメントまたはビューセグメントまたはコレクションセグメントをロードします。これを行うには、ranges タイプを指定した columns 配列および boundaries 配列で使用します。

    注記

    PostgreSQL エンドポイントは、このタイプの並列ロードのみをサポートします。ソースエンドポイントとして MongoDB と Amazon DocumentDB は、全ロードのこの範囲セグメンテーションタイプと並列自動セグメンテーションタイプの両方に対応しています (partitions-auto)。

並列でロードする追加のテーブルまたはビュー、コレクションを識別するには、追加の table-settings オブジェクトを parallel-load オプションで指定します。

次の手順では、並列ロードタイプJSONごとに、最も単純なものから複雑なものまでコーディングする方法を説明します。

すべてのテーブルまたはビューあるいはコレクション パーティション、またはすべてのテーブルまたはビューまたはコレクションのサブパーティションを指定するには
  • partitions-auto タイプまたは subpartitions-auto タイプのいずれか (両方は使用できません) を指定して parallel-load を指定します。

    各テーブルまたはビューまたはコレクションのパーティション (セグメント) またはサブパーティションは、自己スレッドに自動割り当てされます。

    エンドポイントによっては、並列ロードには、テーブルまたはビューですでに定義されている場合のみ、パーティションあるいはサブパーティションが含まれます。MongoDB および Amazon DocumentDB ソースエンドポイントの場合、 はオプションの追加のパラメータに基づいてパーティション (またはセグメント) AWS DMS を自動的に計算できます。例えば、number-of-partitionscollection-count-from-metadatamax-records-skip-per-pagebatch-size などです。

選択したテーブルまたはビューのパーティション、サブパーティション、またはその両方を指定するには
  1. partitions-list タイプで parallel-load を指定します。

  2. (オプション) パーティション名の配列を partitions の値として指定したパーティションが含まれます。

    指定されたパーティションがそれぞれ独自のスレッドに割り当てられます。

    重要

    Oracle エンドポイントの場合、並列ロード用にパーティションとサブパーティションを選択するときに、パーティションとサブパーティションが重複しないようにします。重複するパーティションとサブパーティションを使用してデータを並列ロードすると、エントリが複製されるか、プライマリ キーの重複違反により失敗します。

  3. (オプション)、Oracle エンドポイントのみ、サブパーティションを subpartitions の値として指定したサブパーティション名の配列を指定してインクルードします。

    指定されたサブパーティションがそれぞれ独自のスレッドに割り当てられます。

    注記

    並列ロードには、テーブルまたはビューですでに定義されている場合に、パーティションあるいはサブパーティションが含まれます。

テーブルセグメントまたはビューセグメントを列値の範囲として指定することができます。その場合、次の列の特性について注意してください。

  • インデックス化された列を指定するとパフォーマンスが大幅に向上します。

  • 最大 10 個の列を指定できます。

  • 列を使用して、、DOUBLE、FLOAT、CLOB、および BLOB AWS DMS のデータ型でセグメント境界を定義することはできません。 NCLOB

  • Null 値のレコードはレプリケートされません。

テーブルセグメントまたはビューセグメント、コレクションセグメントを列値の範囲として指定するには
  1. ranges タイプで parallel-load を指定します。

  2. columns の値として列名の配列を指定して、テーブルまたはビューのセグメント間の境界を定義します。テーブルまたはビューのセグメント間で境界を定義するすべての列でこれを行います。

    列の順序は重要です。次に説明するように、各境界を定義するうえで最初の列がもっとも重要であり最後の列は最も重要度が低くなります。

  3. boundaries の値として境界配列を指定して、すべてのテーブルまたはビューのセグメントでデータ範囲を定義します。境界配列は列値の配列の配列です。これを行うには、次のステップを実行します。

    1. 列と値の配列の各要素を各列に対応する値として指定します。列と値の配列は、定義する各テーブルまたはビューのセグメントの上限の境界を表します。columns 配列の列で指定したものと同じ順序で各列を指定します。

      ソースでサポートされている形式でDATE列の値を入力します。

    2. 各列と値の配列を、テーブルまたはビューの下部からセグメントまでの next-to-top各セグメントの上限として順番に指定します。指定した上限の上にテーブルの行が存在する場合、これらの行はテーブルまたはビューの一番上のセグメントを形成します。そのため、範囲ベースのセグメントの数は、境界配列のセグメント境界の数より 1 つ多くなることがあります。このような範囲ベースのセグメントはそれぞれ個別のスレッドに割り当てられます。

      データテーブル内のすべての列のデータ範囲を定義しない場合でも、null 以外のすべてのテーブルまたはビューのデータがレプリケートされます。

    例えば、列 COL1、、COL2および に 3 つの列と値の配列をCOL3次のように定義するとします。

    COL1 COL2 COL3
    10 30 105
    20 20 120
    100 12 99

    3 つのセグメントの境界を定義したことで、合計で 4 つのセグメントができることがあります。

    各セグメントでレプリケートする行の範囲を識別するため、レプリケーションインスタンスは 4 つのセグメントごとにこれらの 3 つの列で検索を適用します。検索は次のようになります。

    セグメント 1

    以下の条件が true であるすべての行をレプリケートします。最初の 2 列の値が、対応する セグメント 1 の上限値以下です。また、3 番目の列の値は、セグメント 1 の上限値より小さくなります。

    セグメント 2

    以下の条件が true であるすべての行(セグメント 1 行を除く)をレプリケートします。最初の 2 列の値が、対応する セグメント 2 の上限値以下です。また、3 番目の列の値は、セグメント 2 の上限値より小さくなります。

    セグメント 3

    以下の条件が true であるすべての行(セグメント 2 行を除く)をレプリケートします。最初の 2 列の値が、対応する セグメント 3 の上限値以下です。また、3 番目の列の値は、セグメント 3 の上限値より小さくなります。

    セグメント 4

    残りのすべての行 (セグメント 1、2、3 の行を除く) をレプリケートします。

    この場合、レプリケーションインスタンスが次のように WHERE 句を作成して各セグメントをロードします。

    セグメント 1

    ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))

    セグメント 2

    NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))

    セグメント 3

    NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

    セグメント 4

    NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

選択したテーブルまたはビューLOBの設定の指定

1 つ以上のtable-settingsオブジェクトの lob-settingsオプションtable-settingsを使用して タイプのテーブルマッピングルールを作成することで、1 つ以上のテーブルのタスクLOB設定を行うことができます。

選択したテーブルまたはビューLOBの設定の指定は、次のソースエンドポイントでサポートされています。

  • Oracle

  • Microsoft SQL サーバー

  • マイSQL

  • PostgreSQL

  • IBM Db2、 modeおよび bulk-max-size設定に応じて、以下で説明します。

  • SAP 以下に説明するように、 modeおよび bulk-max-size設定に応じて、Adaptive Server Enterprise (ASE)

選択したテーブルまたはビューLOBの設定の指定は、次のターゲットエンドポイントでサポートされています。

  • Oracle

  • Microsoft SQL サーバー

  • マイSQL

  • PostgreSQL

  • SAP 以下で説明するようにASE、 modebulk-max-sizeの設定に応じて 。

注記

LOB データ型は、プライマリキーを含むテーブルとビューでのみ使用できます。

選択したテーブルまたはビューLOBの設定を使用するには、 lob-settingsオプションtable-settingsを使用して タイプのテーブルマッピングルールを作成します。これにより、 object-locatorオプションで識別されるテーブルまたはビューLOBの処理が指定されます。table-settings ルール内で、以下のパラメータを使用して lob-settings オブジェクトを指定できます。

  • mode – 選択したテーブルまたはビューのLOB移行を処理するメカニズムを次のように指定します。

    • limited – デフォルトの制限LOBモードは、最も高速で効率的なモードです。このモードは、すべての が小さい (サイズLOBsが 100 MB 以内) か、ターゲットエンドポイントが無制限LOBのサイズをサポートしていない場合にのみ使用します。また、 を使用する場合limited、すべて LOBs に設定したサイズ内である必要がありますbulk-max-size

      全ロードタスクのこのモードでは、レプリケーションインスタンスはメインテーブルまたはビューストレージの一部として、すべてのLOBsインラインを他の列データ型とともに移行します。ただし、インスタンスは、 bulk-max-size値LOBより大きい移行された を指定されたサイズに切り捨てます。変更データキャプチャ (CDC) ロードタスクの場合、インスタンスは、標準フルLOBモードのように、ソーステーブルルックアップLOBsを使用してすべて移行します (以下を参照)。

      注記

      全ロードタスクに対してのみビューを移行できます。

    • unlimited – フルLOBモードの移行メカニズムは、bulk-max-size次のように に設定した値によって異なります。

      • 標準フルLOBモードbulk-max-sizeを 0 に設定すると、レプリケーションインスタンスは標準フルLOBモードLOBsを使用してすべて移行します。このモードでは、サイズに関係なくLOB、すべての を移行するためにソーステーブルまたはビューでルックアップが必要です。このアプローチでは、通常、制限付きLOBモードよりも移行がはるかに遅くなります。このモードLOBsは、 のすべてまたは大部分が大きい (1 GB 以上) 場合にのみ使用します。

      • 組み合わせフルLOBモード – をゼロ以外の値bulk-max-sizeに設定すると、このフルLOBモードは制限LOBモードと標準フルLOBモードの組み合わせを使用します。つまり、全ロードタスクの場合、LOBサイズが bulk-max-sizeの値内にあると、インスタンスは制限LOBモードのようにLOBインラインを移行します。LOB サイズがこの値より大きい場合、インスタンスはソーステーブルまたはビュールックアップLOBを使用して、標準フルLOBモードのように を移行します。変更データキャプチャ (CDC) ロードタスクの場合、インスタンスは、標準フルLOBモードのように、ソーステーブルルックアップLOBsを使用してすべて移行します (以下を参照)。これは、LOBサイズに関係なく行われます。

        注記

        全ロードタスクに対してのみビューを移行できます。

        このモードでは、移行速度が速くなり、高速で制限されたLOBモードと低速で標準のフルLOBモードが損なわれます。このモードは、小さい と大きい が混在していてLOBs、ほとんどの LOBsが小さい場合にのみ使用します。

        この組み合わせフルLOBモードは、次のエンドポイントでのみ使用できます。

        • IBM ソースとしての Db2

        • SAP ASE ソースまたはターゲットとしての

      unlimited モードに指定したメカニズムに関係なく、インスタンスはすべて切り捨てることなくLOBs完全に移行されます。

    • none – レプリケーションインスタンスは、タスクLOB設定を使用して、選択したテーブルまたはビューLOBsに移行します。このオプションを使用すると、選択したテーブルまたはビューLOBの設定の有無にかかわらず、移行結果を比較できます。

    指定したテーブルまたはビューがレプリケーションLOBsに含まれている場合は、 limited LOB モードを使用するtrue場合にのみBatchApplyEnabledタスク設定を に設定できます。

    場合によっては、BatchApplyEnabledtrue に、また、BatchApplyPreserveTransactionfalse に設定できます。このような場合、テーブルまたはビューに があり、ソースLOBsエンドポイントとターゲットエンドポイントが Oracle true である場合、インスタンスは BatchApplyPreserveTransactionを に設定します。

  • bulk-max-size - 前の項目で説明した mode に応じて、この値を 0 または 0 以外の値 (KB) に設定します。limited モードでは、このパラメータにゼロ以外の値を設定する必要があります。

    インスタンスはバイナリ形式に変換LOBsされます。したがって、レプリケートLOBする必要がある最大値を指定するには、そのサイズに 3 を掛けます。たとえば、最大値LOBが 2 MB の場合、 bulk-max-sizeを 6,000 (6 MB) に設定します。

テーブル設定の例

テーブル設定を使用する説明の例を次に示します。

例 パーティションでセグメント化されたテーブルのロード

次の例では、すべてのパーティションに基づいて並列でロードすることで、ソース内の SALES テーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 サブパーティションでセグメント化されたテーブルのロード

次の例では、すべてのサブパーティションに基づいて並列でロードすることで、Oracle ソース内の SALES テーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }
例 パーティションのリストでセグメント化されたテーブルのロード

次の例では、特定のパーティションのリストに基づいて並列でロードすることで、ソース内の SALES テーブルをロードします。ここで、指定されたパーティションは ABCDEFGH などアルファベットの一部で始まる値に命名されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }
例 選択されたパーティションおよびサブパーティションのリストでセグメント化された Oracle テーブルのロード

次の例では、選択されたパーティションおよびサブパーティションのリストを使用して並列でロードすることで、Oracle ソースの SALES テーブルをロードします。ここで、指定されたパーティションは ABCDEFGH などアルファベットの一部で始まる値に命名されます。指定されたサブパーティションは、数字で始まる値を取って命名されます。たとえば、0123456789 などです。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }
例 列の値の範囲でセグメント化されたテーブルのロード

次の例では、SALES_NO および REGION 列の値の範囲で指定されたセグメントを使用して並列でロードすることで、ソース内の SALES テーブルをロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }

ここで、2 つの列は、SALES_NO および REGION という名前でセグメント範囲に指定されます。2 つの境界は 2 セットの列の値 (["1000","NORTH"] および ["3000","WEST"]) で指定されます。

したがって、これら 2 つの境界によって、並列でロードされる次の 3 つのテーブルセグメントが識別されます。

セグメント 1

1,000 SALES_NO以下かつNORTHREGION「」未満の行。つまり、 EASTリージョンで 1,000 までの販売番号です。

セグメント 2

セグメント 1 以外の行で、3,000 SALES_NO以下かつWESTREGION「」以下。つまり、 NORTHおよび SOUTHリージョンで 1,000~3,000 を超える販売番号です。

セグメント 3

セグメント 1 および セグメント 2 以外の残りすべての行。つまり、「」リージョンの 3,000 を超える販売番号WESTです。

例 1 つは範囲でセグメント化され、もう 1 つはパーティションでセグメント化された 2 つのテーブルのロード

次の例では、SALES テーブルを識別したセグメント境界で並列にロードします。また、前の例と同様に、ORDERS テーブルをすべてのパーティションで並列にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 タスクLOB設定LOBsを使用して でテーブルをロードする

次の例では、タスクLOB設定を使用して、すべての を含む LOBsITEMSテーブルをソースにロードします。100 MB の bulk-max-size 設定は無視され、limited または unlimited モードにクイックリセットするためにのみ残されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none", "bulk-max-size": "100000" } } ] }
例 制限LOBモードLOBsを使用して でテーブルをロードする

次の例では、制限LOBモード (デフォルト) を使用して、ソースLOBsに を含む ITEMSテーブルをロードし、切り捨てられていない最大サイズは 100 MB です。このサイズLOBsより大きい はすべて 100 MB に切り捨てられます。すべての LOBsは、他のすべての列データ型とインラインでロードされます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }
例 標準フルLOBモードLOBsを使用して でテーブルをロードする

次の例では、標準のフルLOBモードを使用して、切り捨てLOBsのないすべてのテーブルを含む ITEMSテーブルをソースにロードします。すべての はLOBs、サイズに関係なく、ソーステーブルLOB内の各 のルックアップを使用して、他のデータ型とは別にロードされます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "0" } } ] }
例 組み合わせフルLOBモードLOBsを使用して でテーブルをロードする

次の例では、組み合わせフルLOBモードを使用して、切り捨てLOBsのないすべてのテーブルを含む ITEMSテーブルをソースにロードします。サイズが 100 MB LOBs以内のすべての は、制限LOBモードのように、他のデータ型とともにインラインでロードされます。サイズが 100 MB LOBsを超えるすべての は、他のデータ型とは別にロードされます。この個別のロードでは、標準フルLOBモードのように、ソーステーブルLOB内の各 の検索を使用します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "100000" } } ] }