接口兼容性介绍
本章节介绍GeminiDB兼容DynamoDB接口支持的接口详情以及注意事项。
使用须知
- GeminiDB兼容DynamoDB接口支持使用DynamoDB的API对表进行增删改操作,控制台只支持读操作。
- 非DynamoDB的API创建的表,无法在GeminiDB兼容DynamoDB接口中使用。
- 当前版本不支持流量统计、流量限制、事务功能(TransactWriteItems, TransactGetItems)。
- 当前版本不支持按需备份接口:CreateBackup、DescribeBackup、 DeleteBackup、 ListBackups、 RestoreTableFromBackup。
- 在DynamoDB中,哈希键(或分区键)决定项目存储在DynamoDB内部存储中的位置。DynamoDB使用专有的哈希函数,GeminiDB兼容DynamoDB接口使用的是Murmur3算法,这种差异会导致Scan操作返回的数据顺序不同。
- 表/索引名称中不能包含的字符有:"."。
- 由于编码方式不同,GeminiDB兼容DynamoDB接口表中的每行数据不会严格限制400KB大小。
- DDL接口均为同步接口。
- 通常情况下,索引同步可在1秒内完成;在极端场景下,延迟最多延长至1~2分钟。
支持的表达式
GeminiDB兼容DynamoDB接口中的ConditionExpression支持的函数语法如下:
function ::=
attribute_exists (path)
| attribute_not_exists (path)
| attribute_type (path, type)
| begins_with (path, substr)
| contains (path, operand)
contains(path,operand)中operand只能是属性值(即传入的value占位符)。 GeminiDB兼容DynamoDB接口中的UpdateExpression语法如下:
update-expression ::=
[ SET action [, action] ... ]
[ REMOVE action [, action] ...]
[ ADD action [, action] ... ]
[ DELETE action [, action] ...]
set-action ::=
path =value
value ::=
operand
| operand '+' operand
| operand '-' operand
operand ::=
path | function
function ::=
if_not_exists (path, value)
| list_append (list1, list2)
remove-action ::=
path
add-action ::=
path value
delete-action ::=
path value
SET path = operand语法中,不支持operand是path的场景。
SET path = operand1 '+'|'-' operand2语法中,operand1必须等于path,operand2必须是属性值
SET path = if_not_exists (path, value)语法中,两个path必须相等,且value只能是表达式属性值。
所有的value只能是占位符,比如':placeholder'。 不兼容的接口列表
| 接口名称 |
|---|
| BatchExecuteStatement |
| CreateBackup |
| CreateGlobalTable |
| DeleteBackup |
| DescribeBackup |
| DescribeEndpoints |
| DescribeExport |
| DescribeGlobalTable |
| DescribeGlobalTableSettings |
| DescribeImport |
| DescribeLimits |
| ExecuteStatement |
| ExecuteTransaction |
| ExportTableToPointInTime |
| ImportTable |
| ListBackups |
| ListExports |
| ListGlobalTables |
| ListImports |
| ListTagsOfResource |
| PutResourcePolicy |
| RestoreTableFromBackup |
| RestoreTableToPointInTime |
| TagResource |
| TransactGetItems |
| TransactWriteItems |
| UpdateGlobalTable |
| UpdateGlobalTableSettings |
兼容的接口列表
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| CreateTable | 请求参数 | AttributeDefinitions | 是 | 是 | - |
| KeySchema | 是 | 是 | - | ||
| TableName | 是 | 是 | Table Name 字符长度3~48,正则表达式([\w-]+)。 | ||
| BillingMode | 否 | 否 | 计费属性,暂不支持。 | ||
| GlobalSecondaryIndexes | 否 | 是 | - | ||
| LocalSecondaryIndexes | 否 | 是 | - | ||
| ProvisionedThroughput | 是 | 是 | - | ||
| SSESpecification | 否 | 否 | 当前版本不支持,规划中。 | ||
| StreamSpecification | 否 | 是 | - | ||
| Tags | 否 | 否 | 当前版本不支持,规划中。 | ||
| 返回参数 | TableDescription | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| UpdateTable | 请求参数 | AttributeDefinitions | 否 | 是 | - |
| BillingMode | 否 | 否 | 计费属性,不予支持。 | ||
| GlobalSecondaryIndexesUpdates | 是 | 是 | 支持Create和Delete,不支持Update。 | ||
| ProvisionedThroughput | 否 | 否 | 计费属性,不予支持。 | ||
| ReplicaUpdates | 否 | 否 | 默认强一致性。 | ||
| SSESpecification | 否 | 否 | 当前版本不支持,规划中。 | ||
| StreamSpecification | 否 | 是 | - | ||
| TableName | 是 | 是 | - | ||
| 返回参数 | TableDescription | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DescribeTable | 请求参数 | TableName | 是 | 是 | - |
| 返回参数 | Table | - | 是 | 不支持itemCount字段。 | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| ListTables | 请求参数 | ExclusiveStartTableName | 否 | 是 | - |
| Limit | 否 | 是 | - | ||
| 返回参数 | LastEvaluatedTableName | - | 是 | - | |
| TableNames | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DeleteTable | 请求参数 | TableName | 是 | 是 | - |
| 返回参数 | TableDescription | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| PutItem | 请求参数 | Item | 是 | 是 | - |
| TableName | 是 | 是 | - | ||
| ConditionalOperator | 否 | 否 | 遗弃参数,见ConditionExpression。 | ||
| ConditionExpression | 否 | 是 | - | ||
| Expected | 否 | 否 | 遗弃参数,见该接口中ConditionExpression字段。 | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ExpressionAttributeValues | 否 | 是 | - | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ReturnItemCollectionMetrics | 否 | 否 | 统计属性,暂不支持。 | ||
| ReturnValues | 否 | 是 | - | ||
| 返回参数 | Attributes | - | 是 | - | |
| ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | ||
| ItemCollectionMetrics | - | 否 | 统计属性,暂不支持。 | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| UpdateItem | 请求参数 | Key | 是 | 是 | - |
| TableName | 是 | 是 | - | ||
| AttributeUpdates | 否 | 否 | 遗弃参数,见该接口中UpdateExpression字段。 | ||
| ConditionalOperator | 否 | 否 | 遗弃参数,见该接口中UpdateExpression字段。 | ||
| ConditionExpression | 否 | 是 | - | ||
| Expected | 否 | 否 | 遗弃参数,见该接口中UpdateExpression字段。 | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ExpressionAttributeValues | 否 | 是 | - | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ReturnItemCollectionMetrics | 否 | 否 | 统计属性,暂不支持。 | ||
| ReturnValues | 否 | 是 | - | ||
| UpdateExpression | 否 | 是 | - | ||
| 返回参数 | Attributes | - | 是 | - | |
| ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | ||
| ItemCollectionMetrics | - | 否 | 统计属性,暂不支持。 | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| GetItem | 请求参数 | Key | 是 | 是 | - |
| TableName | 是 | 是 | - | ||
| AttributesToGet | 否 | 否 | 遗弃参数,见该接口中ProjectionExpression字段。 | ||
| ConsistentRead | 否 | 否 | 默认强一致性。 | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ProjectionExpression | 否 | 是 | - | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| 返回参数 | ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | |
| Item | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DeleteItem | 请求参数 | Key | 是 | 是 | - |
| TableName | 是 | 是 | - | ||
| ConditionalOperator | 否 | 否 | 遗弃参数,见该接口中ConditionExpression字段。 | ||
| ConditionExpression | 否 | 是 | - | ||
| Expected | 否 | 否 | 遗弃参数,见该接口中ConditionExpression字段。 | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ExpressionAttributeValues | 否 | 是 | - | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ReturnItemCollectionMetrics | 否 | 否 | 统计属性,暂不支持。 | ||
| ReturnValues | 否 | 是 | - | ||
| 返回参数 | Attributes | - | 是 | - | |
| ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | ||
| ItemCollectionMetrics | - | 否 | 统计属性,暂不支持。 | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| BatchWriteItem | 请求参数 | RequestItems | 是 | 是 | - |
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ReturnItemCollectionMetrics | 否 | 否 | 统计属性,暂不支持。 | ||
| 返回参数 | ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | |
| ItemCollectionMetrics | - | 否 | 统计属性,暂不支持。 | ||
| UnprocessedItems | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| BatchGetItem | 请求参数 | RequestItems | 是 | 是 | 无 |
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| 返回参数 | ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | |
| Responses | - | 是 | - | ||
| UnprocessedKeys | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| Query | 请求参数 | TableName | 是 | 是 | - |
| AttributesToGet | 否 | 否 | 遗弃参数,见该接口中ProjectionExpression字段。 | ||
| ConditionalOperator | 否 | 否 | 遗弃参数,见该接口中ProjectionExpression字段。 | ||
| ConsistentRead | 否 | 否 | 默认强一致性。 | ||
| ExclusiveStartKey | 否 | 是 | - | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ExpressionAttributeValues | 否 | 是 | - | ||
| FilterExpression | 否 | 是 | - | ||
| IndexName | 否 | 是 | - | ||
| KeyConditionExpression | 否 | 是 | - | ||
| KeyConditions | 否 | 否 | 遗弃参数,见该接口中KeyConditionExpression字段。 | ||
| Limit | 否 | 是 | - | ||
| ProjectionExpression | 否 | 是 | - | ||
| QueryFilter | 否 | 否 | 遗弃参数,见该接口中FilterExpression字段。 | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ScanIndexForward | 否 | 是 | - | ||
| Select | 否 | 是 | 不支持Count。 | ||
| 返回参数 | ConsumedCapacity | - | 否 | 计费属性,暂不支持。 | |
| Count | - | 是 | - | ||
| Items | - | 是 | - | ||
| LastEvaluatedKey | - | 是 | - | ||
| ScannedCount | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| Scan | 请求参数 | TableName | 是 | 是 | - |
| AttributesToGet | 否 | 否 | 遗弃参数,见该接口中ProjectionExpression字段。 | ||
| ConditionalOperator | 否 | 否 | 遗弃参数,见该接口中ConditionExpression字段。 | ||
| ConsistentRead | 否 | 否 | 默认强一致性。 | ||
| ExclusiveStartKey | 否 | 是 | - | ||
| ExpressionAttributeNames | 否 | 是 | - | ||
| ExpressionAttributeValues | 否 | 是 | - | ||
| FilterExpression | 否 | 是 | - | ||
| IndexName | 否 | 是 | - | ||
| Limit | 否 | 是 | - | ||
| ProjectionExpression | 否 | 是 | - | ||
| ReturnConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | ||
| ScanFilter | 否 | 否 | 遗弃参数,该接口中FilterExpression字段。 | ||
| Segment | 否 | 是 | - | ||
| Select | 否 | 是 | 不支持Count类型。 | ||
| TotalSegments | 否 | 是 | - | ||
| 返回参数 | ConsumedCapacity | 否 | 否 | 计费属性,暂不支持。 | |
| Count | - | 是 | - | ||
| Items | - | 是 | - | ||
| LastEvaluatedKey | - | 是 | - | ||
| ScannedCount | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| UpdateTimeToLive | 请求参数 | TableName | 是 | 是 | - |
| TimeToLiveSpecification | 是 | 是 | - | ||
| 返回参数 | TimeToLiveSpecification | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DescribeTimeToLive | 请求参数 | TableName | 是 | 是 | - |
| 返回参数 | TimeToLiveSpecification | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DescribeStream | 请求参数 | StreamArn | 是 | 是 | - |
| ExclusiveStartShardId | 否 | 是 | - | ||
| Limit | 否 | 是 | - | ||
| ShardFilter | 否 | 是 | - | ||
| 返回参数 | StreamDescription | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| GetRecords | 请求参数 | ShardIterator | 是 | 是 | - |
| Limit | 否 | 是 | - | ||
| 返回参数 | NextShardIterator | - | 是 | - | |
| Records | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| GetShardIterator | 请求参数 | ShardId | 是 | 是 | - |
| ShardIteratorType | 是 | 是 | - | ||
| StreamArn | 是 | 是 | - | ||
| SequenceNumber | 否 | 是 | - | ||
| 返回参数 | ShardIterator | - | 是 | - | |
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| ListStreams | 请求参数 | ExclusiveStartStreamArn | 否 | 是 | - |
| Limit | 否 | 是 | - | ||
| TableName | 否 | 是 | - | ||
| 返回参数 | Streams | - | 是 | - | |
| LastEvaluatedStreamArn | - | 是 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| ImportTable | 请求参数 | ClientToken | 否 | 是 | 幂等令牌 |
| S3BucketSource | 是 | 是 | - | ||
| S3BucketSource.S3Bucket | 是 | 是 | - | ||
| S3BucketSource.S3KeyPrefix | 否 | 是 | S3 键前缀。 | ||
| S3BucketSource.S3BucketOwner | 是 | 是 | 仅支持 AK、SK 和 Endpoint。 | ||
| TableCreationParameters | 是 | 是 | - | ||
| TableCreationParameters.TableName | 是 | 是 | 内部通过 CreateTable 接口建表。 | ||
| TableCreationParameters.KeySchema | 是 | 是 | - | ||
| TableCreationParameters.AttributeDefinitions | 是 | 是 | - | ||
| TableCreationParameters.BillingMode | 否 | 是 | - | ||
| TableCreationParameters.ProvisionedThroughput | 否 | 是 | - | ||
| TableCreationParameters.GlobalSecondaryIndexes | 否 | 是 | 仅在列表非空时设置。 | ||
| InputFormat | 是 | 是 | 仅支持 DYNAMODB_JSON 和 CSV(忽略大小写)。 | ||
| InputCompressionType | 否 | 是 | 仅支持 NONE、GZIP、ZSTD;为 null 时视为 NONE。 | ||
| InputFormatOptions.Csv.HeaderList | 否 | 是 | 仅支持 CSV 格式,且每个 Header 需通过属性名校验。 | ||
| InputFormatOptions.Csv.Delimiter | 否 | 是 | 仅支持 CSV 格式。分隔符必须为单个字符,且仅限以下选项之一:逗号(,)、分号(;)、冒号(:)、反斜杠(\)、竖线(|)、制表符(\t)或空格。 | ||
| 返回参数 | ImportArn | 是 | 是 | arn:dynamo:import:<tableName>:<importId>。 | |
| ImportStatus | 是 | 是 | 创建时状态固定为 IN_PROGRESS(对外映射为 CREATING)。 | ||
| TableArn | 是 | 是 | arn:dynamo:table:<tableName>。 | ||
| TableId | 否 | 是 | 取自 CreateTable 结果,获取失败时为 null。 | ||
| TableCreationParameters | 是 | 是 | 回显入参。 | ||
| S3BucketSource | 是 | 是 | 回显入参。 | ||
| InputFormat | 是 | 是 | 回显入参。 | ||
| InputCompressionType | 否 | 是 | 入参为 null 时,返回 null。 | ||
| ProcessedSizeBytes | 是 | 是 | - | ||
| ImportedItemCount | 是 | 是 | - | ||
| ProcessedItemCount | 是 | 是 | - | ||
| ErrorCount | 是 | 是 | - | ||
| ClientToken | 否 | 是 | 入参为 null 时,返回 null。 | ||
| StartTime | 是 | 是 | 创建时刻。 | ||
| EndTime | 否 | 否 | - | ||
| FailureCode | 否 | 否 | - | ||
| FailureMessage | 否 | 否 | - | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| ListImports | 请求参数 | TableArn | 否 | 是 | 非空时校验格式 arn:dynamo:table:<tableName>,提取 tableName 按表过滤;省略则返回全部表作业。 |
| PageSize | 否 | 是 | 默认25,钳制到 [1,25]。 | ||
| NextToken | 否 | 是 | 分页游标。 | ||
| 返回参数 | ImportSummaryList | 是 | 是 | 可能为空列表。 | |
| NextToken | 否 | 是 | 有下一页时填入值,无更多数据时为 null。 | ||
| ImportSummary.ImportArn | 是 | 是 | - | ||
| ImportSummary.ImportStatus | 是 | 是 | 由 toApiStatus 映射得到。 | ||
| ImportSummary.TableArn | 是 | 是 | - | ||
| ImportSummary.StartTime | 否 | 是 | 当 startedAt > 0 时填入值,否则为 null。 | ||
| ImportSummary.EndTime | 否 | 是 | 当 endedAt > 0 时填入值,否则为 null(进行中时填 null)。 | ||
| 接口名称 | 参数 | 是否必选 | 是否支持 | 备注 | |
|---|---|---|---|---|---|
| DescribeImport | 请求参数 | ImportArn | 是 | 是 | 必填,格式为 arn:dynamo:import:<tableName>:<importId>;需校验拆分后长度至少为 5。 |
| 返回参数 | ImportArn | 是 | 是 | - | |
| ImportStatus | 是 | 是 | IN_PROGRESS/COMPLETED/FAILED/CANCELLED。 | ||
| TableArn | 是 | 是 | - | ||
| TableId | 否 | 是 | - | ||
| S3BucketSource.S3Bucket | 是 | 是 | - | ||
| S3BucketSource.S3KeyPrefix | 是 | 是 | - | ||
| InputFormat | 是 | 是 | - | ||
| InputCompressionType | 否 | 是 | - | ||
| ProcessedSizeBytes | 是 | 是 | - | ||
| ImportedItemCount | 是 | 是 | - | ||
| ProcessedItemCount | 是 | 是 | - | ||
| ErrorCount | 是 | 是 | - | ||
| FailureCode | 否 | 是 | 仅当状态为 FAILED 时返回具体值,否则返回 null。 | ||
| FailureMessage | 否 | 是 | 仅当状态为 FAILED 时返回具体值,否则返回 null。 | ||
| ClientToken | 否 | 是 | - | ||
| StartTime | 否 | 是 | 当 startedAt > 0 时填入值,否则为 null。 | ||
| EndTime | 否 | 是 | 当 endedAt > 0 时填入值,否则为 null(进行中时填 null)。 | ||
| TableCreationParameters | 否 | 否 | 该字段仅在 ImportTable 创建响应中返回。 | ||