接口兼容性介绍
本章节介绍GeminiDB DynamoDB支持的接口详情以及注意事项。
使用须知
- GeminiDB DynamoDB只支持使用DynamoDB的API对表进行增删改操作,控制台只支持读操作。
- 非DynamoDB的API创建的表,无法在GeminiDB DynamoDB中使用。
- 当前版本不支持流量统计、流量限制、事务功能(TransactWriteItems, TransactGetItems)。
- 当前版本不支持按需备份接口:CreateBackup、DescribeBackup、 DeleteBackup、 ListBackups、 RestoreTableFromBackup。
- 在DynamoDB中,哈希键(或分区键)决定项目存储在DynamoDB内部存储中的位置。DynamoDB使用专有的哈希函数,GeminiDB DynamoDB使用的是Murmur3算法,这种差异会导致Scan操作返回的数据顺序不同。
- 相关应用程序需要使用负载均衡插件将请求均匀地发送到所有节点。若不使用该插件,则只会发送到指定的单个Endponit地址。详细的负载均衡插件代码包可联系GeminiDB DynamoDB的客服提供。
- 表/索引名称中不能包含的字符有:"."。
- 由于编码方式不同,GeminiDB DynamoDB表中的每行数据不会严格限制400KB大小。
- DDL接口均为同步接口。
负载均衡
DynamoDB应用程序通常先连接一个URL,然后在服务端内部进行请求的分发。我们希望GeminiDB DynamoDB接口的请求均匀分布在所有节点。为了实现这个目标,我们提供了低成本并且小型的库,并将该库附加到DynamoDB SDK,其基本原理是在DynamoDB SDK发送请求前,拦截器会修改请求头中的目标地址为当前集群存活节点列表中的任意一个节点,从而达到负载均衡的目的。下面提供简单的使用示例:
TABLE_NAME ='user' // seed url URL = boto3_lb.setup(['***.***.***.***'],'http',8000,'fake.domain.com') dynamodb = boto3.resource('dynamodb', endpoint_url=URL,region_name='None', aws_access_key_id='None', aws_secret_access_key='None')
支持的表达式
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'。
兼容的接口列表
接口名称 |
---|
接口名称 |
参数 |
是否必选 |
是否支持 |
备注 |
|
---|---|---|---|---|---|
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 |
- |
是 |
- |