更新时间:2024-10-30 GMT+08:00

接口兼容性介绍

本章节介绍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'。

兼容的接口列表

表2 CreateTable接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

CreateTable

请求参数

AttributeDefinitions

-

KeySchema

-

TableName

Table Name 字符长度3~48,正则表达式([\w-]+)。

BillingMode

计费属性,暂不支持。

GlobalSecondaryIndexes

-

LocalSecondaryIndexes

-

ProvisionedThroughput

-

SSESpecification

当前版本不支持,规划中。

StreamSpecification

当前版本不支持,规划中。

Tags

当前版本不支持,规划中。

返回参数

TableDescription

-

-

表3 UpdateTable接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

UpdateTable

请求参数

AttributeDefinitions

-

BillingMode

计费属性,不予支持。

GlobalSecondaryIndexesUpdates

支持Create和Delete,不支持Update。

ProvisionedThroughput

计费属性,不予支持。

ReplicaUpdates

默认强一致性。

SSESpecification

当前版本不支持,规划中。

StreamSpecification

当前版本不支持,规划中。

TableName

-

返回参数

TableDescription

-

-

表4 DescribeTable接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

DescribeTable

请求参数

TableName

-

返回参数

Table

-

不支持itemCount字段。

表5 ListTables接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

ListTables

请求参数

ExclusiveStartTableName

-

Limit

-

返回参数

LastEvaluatedTableName

-

-

TableNames

-

-

表6 DeleteTable接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

DeleteTable

请求参数

TableName

-

返回参数

TableDescription

-

-

表7 PutItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

PutItem

请求参数

Item

-

TableName

-

ConditionalOperator

遗弃参数,见ConditionExpression。

ConditionExpression

-

Expected

遗弃参数,见该接口中ConditionExpression字段。

ExpressionAttributeNames

-

ExpressionAttributeValues

-

ReturnConsumedCapacity

计费属性,暂不支持。

ReturnItemCollectionMetrics

统计属性,暂不支持。

ReturnValues

-

返回参数

Attributes

-

-

ConsumedCapacity

-

计费属性,暂不支持。

ItemCollectionMetrics

-

统计属性,暂不支持。

表8 UpdateItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

UpdateItem

请求参数

Key

-

TableName

-

AttributeUpdates

遗弃参数,见该接口中UpdateExpression字段。

ConditionalOperator

遗弃参数,见该接口中UpdateExpression字段。

ConditionExpression

-

Expected

遗弃参数,见该接口中UpdateExpression字段。

ExpressionAttributeNames

-

ExpressionAttributeValues

-

ReturnConsumedCapacity

计费属性,暂不支持。

ReturnItemCollectionMetrics

统计属性,暂不支持。

ReturnValues

-

UpdateExpression

-

返回参数

Attributes

-

-

ConsumedCapacity

-

计费属性,暂不支持。

ItemCollectionMetrics

-

统计属性,暂不支持。

表9 GetItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

GetItem

请求参数

Key

-

TableName

-

AttributesToGet

遗弃参数,见该接口中ProjectionExpression字段。

ConsistentRead

默认强一致性。

ExpressionAttributeNames

-

ProjectionExpression

-

ReturnConsumedCapacity

计费属性,暂不支持。

返回参数

ConsumedCapacity

-

计费属性,暂不支持。

Item

-

-

表10 DeleteItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

DeleteItem

请求参数

Key

-

TableName

-

ConditionalOperator

遗弃参数,见该接口中ConditionExpression字段。

ConditionExpression

-

Expected

遗弃参数,见该接口中ConditionExpression字段。

ExpressionAttributeNames

-

ExpressionAttributeValues

-

ReturnConsumedCapacity

计费属性,暂不支持。

ReturnItemCollectionMetrics

统计属性,暂不支持。

ReturnValues

-

返回参数

Attributes

-

-

ConsumedCapacity

-

计费属性,暂不支持。

ItemCollectionMetrics

-

统计属性,暂不支持。

表11 BatchWriteItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

BatchWriteItem

请求参数

RequestItems

-

ReturnConsumedCapacity

计费属性,暂不支持。

ReturnItemCollectionMetrics

统计属性,暂不支持。

返回参数

ConsumedCapacity

-

计费属性,暂不支持。

ItemCollectionMetrics

-

统计属性,暂不支持。

UnprocessedItems

-

-

表12 BatchGetItem接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

BatchGetItem

请求参数

RequestItems

ReturnConsumedCapacity

计费属性,暂不支持。

返回参数

ConsumedCapacity

-

统计属性,暂不支持。

Responses

-

-

UnprocessedKeys

-

-

表13 Query接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

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

-

-

表14 Scan接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

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

-

-

表15 UpdateTimeToLive接口兼容性介绍

接口名称

参数

是否必选

是否支持

备注

UpdateTimeToLive

请求参数

TableName

-

TimeToLiveSpecification

-

返回参数

TimeToLiveSpecification

-

-