OSS Tables は、Apache Iceberg REST Catalog および AWS S3 Tables と互換性のある API エンドポイントを提供します。このトピックでは、リクエストパラメーター、レスポンスフィールド、および期待される動作における、OSS Tables と Iceberg REST 標準プロトコルの差異を、エンドポイント、パラメーター、認証の 3 つの観点から説明します。この情報を使用して、独自のクライアントを構築する場合や、コンピューティングエンジンを選定する場合の互換性を評価してください。
互換性の設計原則
OSS Tables は、Iceberg REST Catalog インターフェイスでは、次の 3 つの原則に従います:
AWS S3 Tables との互換性:Iceberg 標準プロトコルが曖昧である、または複数の実装を許容する場合、OSS Tables は S3 Tables の動作との互換性を優先します。これにより、クロス-クラウドでのクライアント再利用とコード移行が容易になります。
主流のオープンソース SDK との互換性:S3 Tables との互換性を損なわない範囲で、OSS Tables は特定のフィールド (ページネーショントークンなど) を 2 つの形式で書き込みます。これにより、公式の Apache Iceberg Java および C++ SDK を変更せずにそのまま使用できます。
未サポート機能の明確化:未サポート機能には、ビュー、CTAS (CREATE TABLE AS SELECT)、マルチレベル名前空間、Plan API、OAuth2、および BearerAuth 認証が含まれます。
エンドポイントの互換性
次の表は、OSS Tables の Iceberg REST Catalog が公開する 13 個すべてのエンドポイントを示します。「S3 Tables の動作」列は Iceberg 仕様からの具体的な差異を示し、「OSS Tables の互換性」列は、OSS Tables が各ケースをどのように処理するか、およびクライアントへの影響を説明します。
OSS Tables は、Iceberg クライアントがテーブルメタデータを管理するために使用する Iceberg REST Catalog エンドポイントを提供します。エンドポイント形式は次のとおりです:
プライベートネットワーク:
https://{region}-internal.oss-tables.aliyuncs.com/icebergパブリックネットワーク:
https://{region}.oss-tables.aliyuncs.com/iceberg
次の表では、{prefix} パラメーターには、テーブルバケット ARN を URL エンコードした形式を指定します。ARN の形式は acs:osstables:{region}:{userId}:bucket/{tableBucketName} です。
パス | メソッド | オペレーション | S3 Tables の動作 |
| GET |
| レスポンスに |
| GET |
| レスポンスには、 |
| POST |
| owner プロパティのみが受け入れられ、その他のプロパティはすべて拒否されます。 |
| GET |
| レスポンスには |
| HEAD |
| Iceberg 仕様に準拠しています。 |
| DELETE |
| Iceberg 仕様に準拠しています。 |
| GET |
|
|
| POST |
|
|
| GET |
| クエリパラメーター |
| POST |
| Iceberg 仕様に準拠しています。サポートされている |
| DELETE |
|
|
| HEAD |
| Iceberg 仕様に準拠しています。 |
| POST |
| Iceberg 仕様に準拠しています。 |
updateTable の互換性
updateTable エンドポイントは、requirements (オプティミスティックロックの前提条件) と updates (メタデータ変更アクション) という 2 つの配列を使用してトランザクションを送信します。
サポートされている requirements
Iceberg 仕様で定義されている 8 種類の requirement タイプすべてをサポートします:
assert-createassert-table-uuidassert-ref-snapshot-idassert-last-assigned-field-idassert-current-schema-idassert-last-assigned-partition-idassert-default-spec-idassert-default-sort-order-id
サポートされている updates (メタデータ変更アクション)
assign-uuidupgrade-format-versionadd-schemaset-current-schemaadd-specset-default-specset-partition-statisticsremove-partition-statisticsadd-sort-orderset-default-sort-orderadd-snapshotset-snapshot-refremove-snapshot-refremove-snapshotsset-propertiesremove-propertiesset-statisticsremove-statistics
未サポートの updates
remove-schemasremove-partition-specsset-locationadd-encryption-keyremove-encryption-keyadd-view-versionset-current-view-version
一般ルール
フィールド型の厳密な一致:すべての JSON フィールド型は正確である必要があります (数値を文字列として渡したり、配列をオブジェクトとして渡したりしないでください)。正しくないと、リクエストは失敗します。
action フィールドの一致:各リクエスト内の action フィールド値は、対応する action 名と完全に一致する必要があります。
ID -1 の意味:
set-current-schema、set-default-spec、set-default-sort-orderでは、*-idの値が -1 の場合、Iceberg プロトコルの慣例に従い、「直近に追加された対応オブジェクトを指す」ことを意味します。べき等性:
add-schema、add-spec、add-sort-order、add-snapshotなどの操作は、対象オブジェクトがすでに存在する場合は実行をスキップします。重複は追加しません。
パラメーターの互換性
次の表は、Iceberg REST 標準プロトコルで定義されている一般的なパスパラメーター、クエリパラメーター、およびリクエストヘッダーの互換性を示します。
パラメーター | 互換性 |
| マルチレベル名前空間はサポートされません。マルチレベル名前空間を含むリクエストは失敗します。 |
| サポートされています。 |
| サポートされています。 |
| サポートされません。Plan API は実装されていません。 |
| ビューはサポートされません。 |
| サポートされません。リクエストヘッダーは無視されます。 |
| マルチレベル名前空間はサポートされません。このパラメーターを含むリクエストは失敗します。 |
| サポートされています。URL エンコードしたクエリ文字列パラメーターとして渡します。最終ページのレスポンスでは、このフィールドは返されません。 |
| サポートされています。 |
| サポートされています。 |
| サポートされません。リクエストヘッダーは無視されます。 |
認証の互換性
OSS Tables の Iceberg REST Catalog は、SigV4 署名認証 (サービス名は osstables) のみをサポートします。Iceberg 仕様で定義されているその他の認証方式はサポートされません:
認証方式 | 互換性 |
SigV4 | サポートされています (推奨)。署名のサービス名は |
OAuth2 | サポートされません。Iceberg 仕様では |
BearerAuth | サポートされません。 |
統合に関する推奨事項
OSS Tables と統合する前に、次の 3 つの点に特に注意してください:
クライアントの選定:公式の Apache Iceberg Java または C++ SDK を使用してください。
テーブルの作成と削除:CTAS (CREATE TABLE AS SELECT) はサポートされません。まず
createTableを呼び出して空のテーブルを作成し、その後データを書き込みます。テーブルを削除する場合は、purgeRequested=trueを明示的に含める必要があります。含めないと、リクエストは 400 エラーを返します。未サポート機能:未サポート機能には、ビュー、マルチレベル名前空間、Plan API、
Idempotency-Key、X-Iceberg-Access-Delegation、OAuth2、および BearerAuth 認証が含まれます。