OSS Tables は、Lance REST Namespace と互換性のある API エンドポイントを提供します。このトピックでは、API、パラメーター、認証の 3 つのディメンションから、リクエストパラメーター、応答フィールド、動作セマンティクスの観点で OSS Tables と Lance Namespace 標準プロトコルの違いについて説明します。この情報は、カスタムクライアントを開発したり、コンピュートエンジンを選択したりする際に、互換性範囲を評価するのに役立ちます。
互換性の設計原則
OSS Tables の Lance REST Namespace API は、以下の設計原則に従います:
-
標準プロトコルを優先:可能な限り、API、パラメーター、および応答セマンティクスは Lance REST Namespace 仕様に従って実装されます。TableBucket モデルによって制約される機能については、その違いと制限が明示的にリストされています。
-
TableBucket リソースモデルに従う:名前空間、テーブル、およびストレージロケーションはサーバーによって管理されます。単一レベルの名前空間のみがサポートされており、
RegisterTableを使用して任意の既存のストレージロケーションを登録することはサポートされていません。 -
V4 署名認証を統一的に使用:AWS SigV4 と OSS V4 がサポートされています。署名サービス名は
osstablesで、OSS Tables の権限システムが使用されます。認証情報ベンディングはサポートされておらず、クライアントは独自のデータアクセス認証情報を設定する必要があります。 -
Lance ネイティブバージョン管理を使用:データセットバージョンは、名前空間で管理されるバージョン管理メカニズムではなく、Lance によって管理されます。
managed_versioningはfalseを返します。
アクセスエンドポイントとリソース識別子
OSS Tables は Lance REST Namespace エンドポイントを提供します。Lance クライアントはこれらのエンドポイントを使用して、名前空間、テーブル、およびテーブルメタデータを管理します。各エンドポイントはテーブルバケットに対応します。クライアントが接続する際には、テーブルバケット名、バケットが属する Alibaba Cloud アカウント、およびリージョンを指定する必要があります。エンドポイントのフォーマットは次のとおりです:
|
ネットワークタイプ |
エンドポイント |
|
パブリックネットワーク |
|
|
内部ネットワーク |
|
-
tableBucketName:テーブルバケット名、uid:Alibaba Cloud アカウントの UID、region:リージョン ID。 -
テーブルバケットが存在するリージョンの第 3 レベルドメイン名 (
{tableBucketName}-{uid}プレフィックス) を使用する必要があります。リージョンドメイン名のみの使用はサポートされていません。第 3 レベルドメイン名のプレフィックスがない場合、LanceThirdLevelDomainRequiredエラーが返されます。 -
テーブルバケット ARN をパスやリソース識別子に追加する必要はありません。
API パス内の {id} は、名前空間またはテーブルを識別します。これは、SDK 内の識別子配列の各部分を delimiter で結合して形成されます。デフォルトのデリミタは $ であり、URL パスの一部として渡す場合は URL エンコードする必要があります。以下の例はすべてデフォルトのデリミタを使用しています。
|
リソース |
SDK 内の識別子配列 |
REST パス内の識別子の例 |
|
ルート名前空間 |
空の配列 (長さ 0) |
|
|
名前空間 |
|
|
|
テーブル |
|
|
以降のセクションの API パスは、すべて上記のエンドポイントからの相対パスです。実際のリクエスト URL は、エンドポイントと API パスを連結して形成されます。たとえば、my_table テーブルを my_db 名前空間でクエリするためのリクエスト URL は https://{tableBucketName}-{uid}.{region}.oss-tables.aliyuncs.com/lance/v1/table/my_db%24my_table/describe です。
一般的な互換性の制約
以下の制約は関連する API に適用され、後続の API テーブルでは繰り返されません。
|
項目 |
互換性 |
|
名前空間レベル |
単一レベルの名前空間のみがサポートされています。複数レベルの名前空間およびルート名前空間直下のテーブルはサポートされていません。 |
|
名前空間プロパティ |
カスタム名前空間プロパティはサポートされていません。関連する応答の |
|
|
デフォルト値は |
|
ページネーションパラメーター |
|
|
|
カスタムビジネスコンテキストは処理されません。 |
|
トランザクション |
|
|
バージョン管理 |
Lance ネイティブバージョン管理が使用されます。 |
API の互換性
以下の表は、OSS Tables が現在サポートしている 14 の Lance Namespace 標準 API (5 つの名前空間 API と 9 つのテーブル API) を示しています。記載されていない標準 API はサポートされていません。
表中の「パス」と「メソッド」は REST リクエストの構築に使用され、「操作」は標準の Lance Namespace 操作名に対応します。「互換性」列には、各 API のパラメーター制約、応答の違い、および動作の制約が記載されています。上記の一般的な制約以外に違いがない API は、「Lance Namespace 仕様に準拠」とマークされています。
名前空間 API
|
パス |
メソッド |
操作 |
互換性 |
|
|
POST |
|
ルート名前空間の作成はサポートされていません。 |
|
|
GET |
|
Lance Namespace 仕様に準拠しています。 |
|
|
POST |
|
Lance Namespace 仕様に準拠しています。 |
|
|
POST |
|
Lance Namespace 仕様に準拠しています。 |
|
|
POST |
|
ルート名前空間の削除はサポートされていません。 |
テーブル API
|
パス |
メソッド |
操作 |
互換性 |
|
|
GET |
|
|
|
|
GET |
|
|
|
|
POST |
|
|
|
|
POST |
|
空でない |
|
|
POST |
|
|
|
|
POST |
|
Lance Namespace 仕様に準拠しています。 |
|
|
POST |
|
テーブルデータはバックグラウンドでクリーンアップされます。API 呼び出しが成功しても、物理データがクリーンアップされたことを示すものではありません。 |
|
|
POST |
|
Lance Namespace 仕様に準拠しています。 |
|
|
POST |
|
Lance Namespace 仕様に準拠しています。詳細については、以下の DeregisterTable の実装に関する注意点をご参照ください。 |
DeregisterTable の実装に関する注意点
DeregisterTable はテーブルの登録を解除するために使用され、データは削除しません。処理ロジックは次のとおりです:
-
テーブルはシステム予約の名前空間
oss-deregistered-nsに移動されます。 -
テーブル名は
oss-deregistered-table-{tableId}に変更されます。ここで、tableIdは元のテーブル ID です。元のテーブル名は再利用できます。 -
ListNamespacesは予約された名前空間をリストせず、ListAllTablesは登録解除されたテーブルをリストしません。 -
ListTablesを呼び出してoss-deregistered-nsをリストし、登録解除されたテーブルを表示します。 -
テーブルを完全に削除するには、一覧表示操作で返された予約された名前空間とテーブル名を使用して
DropTableを呼び出します。これにより、テーブルとそのデータが削除されます。
認証メカニズムと権限
OSS Tables の Lance REST Namespace API は、AWS SigV4 および OSS V4 署名認証のみをサポートします。署名サービス名またはプロダクト名は osstables で、署名リージョンはテーブルバケットが存在するリージョンです。OAuth2、Bearer トークン、および API キー認証はサポートされていません。
|
認証方法 |
互換性 |
|
AWS SigV4 |
サポート (推奨)。署名サービス名は |
|
OSS V4 |
サポートされています。OSS V4 署名ルールを使用します。署名プロダクト名は |
|
OAuth2、Bearer トークン、 |
サポートされていません。OSS Tables のリクエスト署名を使用する必要があります。 |
|
認証情報ベンディング |
|