注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry を JDBC ソースに接続して、Foundry とほとんどのリレーショナルデータベースおよびデータウェアハウス間でデータを読み取り、同期します。
ソースが構成されると、抽出定義で指定された SQL クエリを使用して、データをデータベースからどのように同期するかを柔軟に定義できます。さらに、増分同期を構成して、前回の同期以降に更新されたデータのみを読み取ることもできます。
パラメーター | 必須かどうか | 説明 |
---|---|---|
URL | はい | JDBC URL 形式についてはソースシステムのドキュメントを参照し、追加情報については Java ドキュメント ↗ を確認してください。 |
Driver class | はい | データベースに接続する際に使用するドライバークラスを入力します。このドライバーは Data Connection 実行時にクラスパスに存在する必要があります。詳しくは、以下の JDBC ドライバー を参照してください。 |
Credentials | はい | JDBC 接続のユーザー名とパスワードの資格情報。 |
JDBC properties | いいえ | プロパティ名と値を追加して接続の動作を構成します。詳しくは、以下の JDBC プロパティ を参照してください。 |
Advanced Options | いいえ | このフィールドを展開して、オプションの JDBC 出力構成を追加します。詳しくは、以下の 出力設定 を参照してください。 |
デフォルトでは、Data Connection エージェントは JDBC 互換システムに接続する機能を備えています。ただし、システムに正常に接続するには JDBC ドライバー ↗ を提供する必要があります。また、特定のドライバーのパブリックドキュメントに通常記載されているドライバークラスを指定する必要があります。たとえば、Snowflake の JDBC ドライバーのクラスは、彼らの パブリックドキュメント ↗ に記載されています。
インターネット経由の 直接接続 には、Palantir 署名ドライバーは不要です。通常、特定のソースタイプのドキュメントからドライバーを見つけてダウンロードできます(たとえば、Google BigQuery ↗)。その後、接続を構成 する際にドライバーをアップロードできます。
エージェントワーカー接続 には、ドライバーをエージェントに手動でアップロードする必要があります。
セキュリティ上の理由から、エージェントには Palantir によって署名された JDBC ドライバーが必要であり、その信頼性を保証します。接続に必要な署名済みドライバーのコピーを入手するには、Palantir サポートに連絡してください。署名されていないドライバーをエージェントにアップロードすると、起動が妨げられます。
エージェントにドライバーを割り当てるには、以下の手順に従います。
JDBC ソースへの接続を構成する 際には、特定のドライバーではなくドライバークラスのみを指定できます。このため、エージェントに同じクラスのドライバーは 1 個だけ追加することをお勧めします。
JDBC 接続に プロパティ ↗ をオプションで追加して動作を構成できます。特定のソースのドキュメントを参照して、接続構成に追加する追加の JDBC プロパティを確認してください。
出力ファイルタイプおよび JDBC 同期方法を変更するために出力オーバーライドをオプションで追加できます。構成された設定は、ソースを使用してすべての JDBC 同期に適用されます。特定の同期のためにこれらのパラメーターをオーバーライドするには、同期構成を編集します。出力オーバーライドを追加するには、セットアップページの下部にある Advanced Options セクションを展開し、以下を入力します。
パラメーター | 必須かどうか | デフォルト | 説明 |
---|---|---|---|
Output | はい | Parquet | 出力ファイルの形式(Avro または Parquet ) |
Compression Method | いいえ | なし | SNAPPY 、ZSTD 、または圧縮方法なしを選択します。 |
Fetch size | いいえ | なし | クエリのデータベース往復ごとにフェッチされる行数。詳細は、以下の セクション を参照してください。 |
Max file size | いいえ | なし | 出力ファイルの最大サイズ(バイトまたは行)を指定します。詳細は、以下の セクション を参照してください。 |
出力のフェッチサイズは、クエリのデータベース往復ごとにフェッチされる行数です。フェッチサイズを調整することで、同期ごとのネットワークコールの総数を変更できます。ただし、フェッチサイズはメモリ使用量に影響します。フェッチサイズを増やすと、メモリ使用量が増える代わりに同期が速くなります。まず、フェッチサイズを 500 に設定し、必要に応じて調整することをお勧めします。
フェッチサイズ構成は、ユーザーの JDBC ドライバーに基づいて利用可能です。出力構成にフェッチサイズパラメーターが必要な場合は、ドライバーがフェッチサイズパラメーターと互換性があることを確認してください。
出力ファイルの最大サイズ(バイトまたは行)も調整できます。これにより、Foundry へのデータアップロードのパフォーマンスと回復力が向上する可能性があります。
Bytes
でファイルサイズを指定する場合、バイト数は Parquet (128MB) または Avro (64KB) ライターのインメモリバッファサイズの少なくとも 2 倍である必要があります。
バイト単位の最大ファイルサイズは概算です。出力ファイルのサイズは若干小さい場合や大きい場合があります。
JDBC 同期をセットアップするには、ソース Overview 画面の右上にある Explore and create syncs を選択します。次に、Foundry に同期したいテーブルを選択します。同期の準備ができたら、Create sync for x datasets を選択します。
Foundry での ソース探索 の詳細をご覧ください。
プレクエリは、実際の SQL クエリが実行される前に実行される SQL クエリのオプションの配列です。プレクエリは、実際のクエリを実行する前にデータベースの更新をトリガーする必要がある場合に使用することをお勧めします。
同期ごとに 1 つの SQL クエリを実行できます。このクエリは、出力としてデータのテーブルを生成する必要があり、ストアドプロシージャの呼び出しなどの操作を実行してはなりません。クエリの結果は Foundry の出力データセットに保存されます。
ソース構成レベルで出力オーバーライドを構成する以外にも、個々の同期出力に特定のオーバーライドを適用することを選択できます。保存された構成は、個々の同期にのみ適用されます。構成オプションの詳細については、上記の 出力オーバーライド セクションを確認してください。
同期構成レベルでは、個々の JDBC 同期に対して Enforce precision limits
を選択できます。この制限は、精度が 38 桁を超える数値を拒否します。この設定はデフォルトで無効になっています。
新しい同期をセットアップしている場合やパフォーマンスの問題に対処している場合は、同期速度と信頼性を向上させるために、増分同期に切り替えるか、SQL クエリを並列化することを検討してください。
まず、増分同期方法を試すことをお勧めします。問題が続く場合は、SQL クエリの並列化に進んでください。
通常、同期はデータが同期間で変更されたかどうかに関係なく、ターゲットテーブルから一致するすべての行をインポートします。一方、増分同期は、同じテーブルからデータを重複させずに APPEND
スタイルのトランザクションを実行できるステートフルな同期です。
増分同期は、JDBC ソースから大きなテーブルを取り込む際に使用できます。増分同期を使用するには、テーブルに単調増加する列が含まれている必要があります。
以下の手順に従って、増分 JDBC 同期を構成します。
APPEND
に設定します。例: 5 TB のテーブルには、Foundry に同期するために必要な数十億の行が含まれています。このテーブルには id
という単調増加する列があります。同期は、増分列として id
列を使用し、初期値を -1 に設定し、50 億行の制限を設定することで、1 回の同期に 5000 万行を取り込むように構成できます。
最初に同期が実行されると、最初の 5000 万行(id
に基づいて昇順)で、id
値が -1 より大きい行が Foundry に取り込まれます。たとえば、この同期が数回実行され、最後の同期の実行中に取り込まれた最大の id
値が 19384004822 だった場合、次の同期では 19384004822 より大きい最初の id
値から始まる次の 5000 万行が取り込まれます。
SQL クエリにも制限を追加することを忘れないでください。たとえば、クエリが SELECT * FROM "sales"."region"
だった場合、SELECT * FROM "sales"."region" WHERE sale_id > ? limit 100000
になる可能性があります。ビルドが実行されるたびに、100000 行が Foundry にインポートされます。クエリの ?
値は、最後の実行時の値で自動的に更新されます。
タイムゾーン定義のないタイムスタンプ列を処理する JDBC システムの場合、タイムスタンプは UTC で表現されると見なされ、増分クエリはそれに応じて実行されます。
並列機能はターゲットデータベースに対して個別のクエリを実行します。SQL クエリを並列化する前に、クエリがわずかに異なる時間に発生する可能性があるライブ更新テーブルにどのように影響するかを検討してください。
増分同期に切り替えた後にパフォーマンスが向上しない場合は、エージェントによって並列に実行される複数の小さなクエリに分割することで SQL クエリを並列化できます。
これを実現するには、SQL クエリの構造を変更する必要があります。たとえば:
SELECT
/* FORCED_PARALLELISM_COLUMN(<column>), FORCED_PARALLELISM_SIZE(<size>) */
/* 強制的に並列処理を行う列を指定: <column>
並列処理のサイズを指定: <size> */
*
FROM <table_name>
以下に、クエリの必要な並列性の詳細を説明します。
FORCED_PARALLELISM_COLUMN(<列>)
:テーブルが分割される列を指定します。可能な限り均等な分布を持つ数値列(または数値列を生成する列式)である必要があります。
FORCED_PARALLELISM_SIZE(<size>)
:並列性の度合いを指定します。例えば、4
を指定すると、同時に五つのクエリが実行されます:四つのクエリは指定された並列列の値を分割し、もう一つのクエリは並列列の NULL 値をクエリします。
例えば、上記の SQL クエリ SELECT * FROM sales_data
を使用して、これに追加の詳細を含めることで並列化することができます:
SELECT
/* FORCED_PARALLELISM_COLUMN(sales_id), FORCED_PARALLELISM_SIZE(4) */
-- FORCED_PARALLELISM_COLUMN(sales_id) は、sales_id カラムに基づいて並列処理を強制します。
-- FORCED_PARALLELISM_SIZE(4) は、並列処理のスレッド数を4に設定します。
*
FROM "sales"."region"
並列化を使用する際に、OR
条件を含む WHERE
句を使用する場合は、条件を括弧で囲むことで条件の評価方法を示します。例えば:SELECT /* FORCED_PARALLELISM_COLUMN(sales_id), FORCED_PARALLELISM_SIZE(4) */ * FROM "sales"."region" WHERE (condition1 = TRUE OR condition2 = TRUE)
Data Connection は、スキーマを持つデータセットのテーブルエクスポートを JDBC ソースに対応しています。
learn.palantir.com のドキュメンテーションを参照して、JDBC エクスポートの有効化、設定、スケジュール設定の方法を学びましょう。
JDBC ソースを使用したテーブルエクスポートでは、宛先のデータベース、スキーマ、テーブルを指定する必要があります。これらの入力は、Foundry のエクスポート先を決定し、ターゲットデータベースに既に存在する値と一致する必要があります。
宛先のデータベース、スキーマ、テーブルの値を手動で入力するか、Explore & autofill ボタンを使用してターゲットデータベースに存在するテーブルを探索し、選択に基づいて入力を自動入力します。
エクスポートモードを選択する必要があります。
バッチサイズは、Foundry とユーザーのソース間でデータを転送する際に、一度に処理されるレコードの数を指します。バッチサイズを調整することで、データエクスポート操作のパフォーマンスと効率が影響を受け、リソース使用の最適化と実行時間の短縮が可能になります。
デフォルトでは、エクスポートバッチングは無効化されています。エクスポートバッチングを有効化した後、バッチサイズを 2
から 5000
の間で選択できます。ユーザーのソースが依存しているドライバーがエクスポートバッチングに対応していれば、この設定は次のエクスポートの実行時に有効になります。
ヘルスチェックは、ソース上で実行され、基礎となるソースの生存状態と利用可能状態を確認します。デフォルトでは、これらは毎時 60 分ごとに実行され、ソースに割り当てられた各エージェントから実行されます。JDBC ソースの場合、ヘルスチェックは SELECT 1
クエリとして実装されています。