全部產品
Search
文件中心

ApsaraDB for MongoDB:DynamoDB協議相容版執行個體支援詳情

更新時間:Dec 11, 2024

ApsaraDB for MongoDB對DynamoDB協議提供了支援。本文詳細介紹ApsaraDB for MongoDB對DynamoDB協議的相容情況。

重要

DynamoDB協議相容版執行個體已停止新購,如需使用分區叢集執行個體,建議選擇MongoDB協議。更多說明,請參見【通知】分區叢集DynamoDB協議相容版執行個體停止新購

背景資訊

Amazon DynamoDB是一種完全託管的NoSQL資料庫服務,提供快速且可預測的效能,能夠實現無縫擴充。ApsaraDB for MongoDB版現在相容了DynamoDB協議,您可以在建立ApsaraDB for MongoDB執行個體時選擇支援DynamoDB協議即可使用DynamoDB協議。

注意事項

  • 僅ApsaraDB for MongoDB4.0版本的分區叢集執行個體支援DynamoDB協議。

  • 存量執行個體可通過開啟相容DynamoDB協議來擷取支援。

  • 目前DynamoDB相容功能僅支援在VPC環境下使用,使用時無需鑒權。

DynamoDB介面支援情況

介面名

參數

是否支援

備忘

CreateTable

請求參數

必選參數:AttributeDefinitions

必選參數:KeySchema

必選參數:TableName

  • 不能包含以下特殊字元:貨幣符號 ($)。

  • 不能以system.首碼開頭。

  • 長度限制:1~100位元組。

選擇性參數:BillingMode

選擇性參數:GlobalSecondaryIndexes

選擇性參數:LocalSecondaryIndexes

選擇性參數:ProvisionedThroughput

選擇性參數:SSESpecification

選擇性參數:StreamSpecification

StreamViewType參數當前僅支援如下值:

  • KEYS_ONLY

    說明

    KEYS_ONLY當前僅支援包含分區鍵(Partition key),不支援表中存在排序鍵(Sort key)。

  • NEW_IMAGE

選擇性參數:Tags

返回參數

TableDescription

UpdateTable

請求參數

選擇性參數:AttributeDefinitions

選擇性參數:BillingMode

必選參數:GlobalSecondaryIndexesUpdates

支援Create和Delete,不支援Update。

選擇性參數:ProvisionedThroughput

選擇性參數:ReplicaUpdates

選擇性參數:SSESpecification

選擇性參數:StreamSpecification

StreamViewType參數當前僅支援如下值:

  • KEYS_ONLY

    說明

    KEYS_ONLY當前僅支援包含分區鍵(Partition key),不支援表中存在排序鍵(Sort key)。

  • NEW_IMAGE

必選參數:TableName

返回參數

TableDescription

參見TableDescription

DescribeTable

請求參數

必選參數:TableName

返回參數

Table

參見TableDescription

ListTables

請求參數

選擇性參數:ExclusiveStartTableName

不支援分頁查詢,沒有返回記錄條數的限制。

選擇性參數:Limit

不支援分頁查詢,沒有返回記錄條數的限制。

返回參數

LastEvaluatedTableName

TableNames

DeleteTable

請求參數

必選參數:TableName

返回參數

TableDescription

參見TableDescription

PutItem

請求參數

必選參數:Item

必選參數:TableName

選擇性參數:ConditionalOperator

選擇性參數:ConditionExpression

參見運算式支援情況

選擇性參數:Expected

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ExpressionAttributeValues

參見運算式支援情況

選擇性參數:ReturnConsumedCapacity

選擇性參數:ReturnItemCollectionMetrics

選擇性參數:ReturnValues

返回參數

Attributes

ConsumedCapacity

ItemCollectionMetrics

UpdateItem

請求參數

必選參數:Key

必選參數:TableName

選擇性參數:AttributeUpdates

選擇性參數:ConditionalOperator

選擇性參數:ConditionExpression

參見運算式支援情況

選擇性參數:Expected

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ExpressionAttributeValues

參見運算式支援情況

選擇性參數:ReturnConsumedCapacity

選擇性參數:ReturnItemCollectionMetrics

選擇性參數:ReturnValues

選擇性參數:UpdateExpression

參見運算式支援情況

返回參數

Attributes

ConsumedCapacity

ItemCollectionMetrics

GetItem

請求參數

必選參數:Key

必選參數:TableName

選擇性參數:AttributesToGet

選擇性參數:ConsistentRead

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ProjectionExpression

參見運算式支援情況

選擇性參數:ReturnConsumedCapacity

返回參數

ConsumedCapacity

Item

DeleteItem

請求參數

必選參數:Key

必選參數:TableName

選擇性參數:ConditionalOperator

選擇性參數:ConditionExpression

參見運算式支援情況

選擇性參數:Expected

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ExpressionAttributeValues

參見運算式支援情況

選擇性參數:ReturnConsumedCapacity

選擇性參數:ReturnItemCollectionMetrics

選擇性參數:ReturnValues

返回參數

Attributes

ConsumedCapacity

ItemCollectionMetrics

BatchWriteItem

請求參數

必選參數:RequestItems

選擇性參數:ReturnConsumedCapacity

選擇性參數:ReturnItemCollectionMetrics

返回參數

ConsumedCapacity

ItemCollectionMetrics

UnprocessedItems

BatchGetItem

請求參數

必選參數:RequestItems

Item元素不支援AttributesToGetConsistentRead參數。

選擇性參數:ReturnConsumedCapacity

返回參數

ConsumedCapacity

Responses

UnprocessedKeys

Query

請求參數

必選參數:TableName

選擇性參數:AttributesToGet

選擇性參數:ConditionalOperator

選擇性參數:ConsistentRead

選擇性參數:ExclusiveStartKey

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ExpressionAttributeValues

參見運算式支援情況

選擇性參數:FilterExpression

參見運算式支援情況

選擇性參數:IndexName

選擇性參數:KeyConditionExpression

參見運算式支援情況

選擇性參數:KeyConditions

選擇性參數:Limit

選擇性參數:ProjectionExpression

參見運算式支援情況

選擇性參數:QueryFilter

選擇性參數:ReturnConsumedCapacity

選擇性參數:ScanIndexForward

選擇性參數:Select

返回參數

ConsumedCapacity

Count

Items

LastEvaluatedKey

ScannedCount

Scan

請求參數

必選參數:TableName

選擇性參數:AttributesToGet

選擇性參數:ConditionalOperator

選擇性參數:ConsistentRead

選擇性參數:ExclusiveStartKey

選擇性參數:ExpressionAttributeNames

參見運算式支援情況

選擇性參數:ExpressionAttributeValues

參見運算式支援情況

選擇性參數:FilterExpression

參見運算式支援情況

選擇性參數:IndexName

選擇性參數:Limit

選擇性參數:ProjectionExpression

參見運算式支援情況

選擇性參數:ReturnConsumedCapacity

選擇性參數:ScanFilter

選擇性參數:Segment

選擇性參數:Select

選擇性參數:TotalSegments

返回參數

ConsumedCapacity

Count

Items

LastEvaluatedKey

ScannedCount

DynamoDBStreams介面支援情況

介面名

參數

是否支援

備忘

DescribeStream

請求參數

必選參數:StreamArn

選擇性參數:Limit

選擇性參數:ExclusiveStartShardId

返回參數

必選參數:StreamDescription

對比Amazon DynamoDB執行個體,該返回參數返回結果有如下區別:

  • StartingSequenceNumber欄位固定為unknown

  • EndingSequenceNumber欄位以時間戳記體現。

  • 由於DynamoDB協議相容版執行個體僅有一個Shard,ShardId欄位固定為arn:alibaba:mongo-dynamodb@shard-only-1

ListStreams

請求參數

選擇性參數:TableName

選擇性參數:Limit

選擇性參數:ExclusiveStartStreamArn

返回參數

必選參數:Streams

每個表中最多隻能返回一個Stream。

GetShardIterator

請求參數

必選參數:StreamArn

必選參數:ShardId

由於DynamoDB協議相容版執行個體僅有一個Shard,本欄位固定為arn:alibaba:mongo-dynamodb@shard-only-1

必選參數:ShardIteratorType

當前僅支援傳入LATESTAFTER_SEQUENCE_NUMBER

選擇性參數:SequenceNumber

ShardIteratorTypeAFTER_SEQUENCE_NUMBER時使用,可傳入32位秒級時間戳記。

返回參數

必選參數:ShardIterator

GetRecords

請求參數

必選參數:ShardIterator

選擇性參數:Limit

不指定時預設按照每101條記錄進行分頁,而非1MB資料大小。

返回參數

必選參數:Records

DynamoDB介面相關資料結構

資料類型

欄位

是否支援

TableDescription

ArchivalSummary

AttributeDefinitions

BillingModeSummary

CreationDateTime

GlobalSecondaryIndexes

GlobalTableVersion

ItemCount

KeySchema

LatestStreamArn

LatestStreamLabel

LocalSecondaryIndexes

ProvisionedThroughput

Replicas

RestoreSummary

SSEDescription

StreamSpecification

TableArn

TableId

TableName

TableSizeBytes

TableStatus

運算式支援情況

  • .屬性名稱的處理:一個帶.的屬性名稱可能表示一個scalar屬性,也可能表示一個嵌入文檔。在DynamoDB中的處理規則是:如果在運算式屬性名稱中能夠找到該屬性名稱對應的映射,就按照scalar屬性進行處理,否則按照嵌入文檔進行處理。

    說明

    目前暫不支援帶.scalar屬性的相關處理,如查詢、投影等。

  • ProjectionExpression: 只支援一維數組,並且當運算式中只包含數組某個元素時則會返回其他欄位。

  • ConditionExpression:

    • DynamoDB中的ConditionExpression文法如下:

      condition-expression ::=
            operand comparator operand
          | operand BETWEEN operand AND operand
          | operand IN ( operand (',' operand (, ...) ))
          | function
          | condition AND condition
          | condition OR condition
          | NOT condition
          | ( condition )
      
      comparator ::=
          =
          | <>
          | <
          | <=
          | >
          | >=
      
      function ::=
          attribute_exists (path)
          | attribute_not_exists (path)
          | attribute_type (path, type)
          | begins_with (path, substr)
          | contains (path, operand)
          | size (path)
    • operand1 comparator operand2文法中,operand1必須為pathoperand2必須為運算式屬性值。

    • operand1 BETWEEN operand2 AND operand3文法中,operand1必須為path,其餘operand必須為運算式屬性值。

    • operand1 IN ( operand2 (',' operand3 (, ...) ))文法中,operand1必須為path,其餘operand必須為運算式屬性值。

    • 對於function中的size(path)函數,只支援path欄位為字串類型(判斷長度)或Set/List類型,用於判斷大小,不支援BinaryMap類型。

  • UpdateExpression:

    • 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-action:

      • SET path = operand文法中,不支援operandpath的情境。

      • SET path = operand1 '+'|'-' operand2文法中,operand1必須等於path,即在此情境下只支援欄位自增或自減。

      • SET path = if_not_exists (path, value)文法中,兩個path必須相等,且value只能是運算式屬性值。

      • SET path = if_not_exists (path, value)文法中,在同時指定多個時不支援部分更新,即需要滿足全部條件才能執行成功。

      • SET path = list_append(list1, list2)文法中,list1list2中必須有一個等於path,另外一個是運算式屬性值。

    • remove-action:用於移除List中某個元素時,用null代替被移除的元素,List大小不變,剩下的元素不會發生移位。

資料類型映射說明

DynamoDB提供的資料類型和MongoDB的不同,因此,阿里雲會在DynamoDB協議相容版以及MongoDB的資料類型之間做映射,使二者相互相容彼此的資料類型。

資料類型映射關係表:

DynamoDB資料類型

MongoDB資料類型

B

Binary data

BOOL

Boolean

BS

*

L

Array

M

Object

N

Double

NS

*

NULL

Null

S

String

SS

*

說明

DynamoDB中的BS(binary set)、NS(number set)、SS(string set)資料類型不允許重複資料。例如,在NS中插入1,2,2,3,NS會對資料做去重操作,最終結果會變成1,2,3。而DynamoDB協議相容版當前暫不支援對這三種資料類型進行去重,因此上面表格中標記為星號(*)的部分都將作為數組(Array)進行處理。阿里雲會在後續版本中對這三種資料類型進行最佳化以支援去重。