全部產品
Search
文件中心

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

更新時間:Jun 19, 2024

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

背景資訊

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

注意事項

  • 僅ApsaraDB for MongoDB4.0版本的分區叢集執行個體支援DynamoDB協議。
  • 存量執行個體可通過開啟相容DynamoDB協議來擷取支援。
  • 目前DynamoDB相容功能僅支援在VPC環境下使用,使用時無需鑒權。

DynamoDB介面支援情況

介面名參數是否支援備忘
CreateTable請求參數必選參數:AttributeDefinitions
必選參數:KeySchema
必選參數:TableName
  • 不能包含以下特殊字元:貨幣符號 ($)。
  • 不能以system.首碼開頭。
  • 長度限制:1~100位元組。
選擇性參數:BillingMode
選擇性參數:GlobalSecondaryIndexes
選擇性參數:LocalSecondaryIndexes
選擇性參數:ProvisionedThroughput
選擇性參數:SSESpecification
選擇性參數:StreamSpecificationStreamViewType參數當前僅支援如下值:
  • KEYS_ONLY
    說明 KEYS_ONLY當前僅支援包含分區鍵(Partition key),不支援表中存在排序鍵(Sort key)。
  • NEW_IMAGE
選擇性參數:Tags
返回參數TableDescription
UpdateTable請求參數選擇性參數:AttributeDefinitions
選擇性參數:BillingMode
必選參數:GlobalSecondaryIndexesUpdates支援Create和Delete,不支援Update。
選擇性參數:ProvisionedThroughput
選擇性參數:ReplicaUpdates
選擇性參數:SSESpecification
選擇性參數:StreamSpecificationStreamViewType參數當前僅支援如下值:
  • 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請求參數必選參數:RequestItemsItem元素不支援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
選擇性參數:SequenceNumberShardIteratorTypeAFTER_SEQUENCE_NUMBER時使用,可傳入32位秒級時間戳記。
返回參數必選參數:ShardIterator
GetRecords請求參數必選參數:ShardIterator
選擇性參數:Limit不指定時預設按照每101條記錄進行分頁,而非1MB資料大小。
返回參數必選參數:Records

DynamoDB介面相關資料結構

資料類型欄位是否支援
TableDescriptionArchivalSummary
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資料類型
BBinary data
BOOLBoolean
BS*
LArray
MObject
NDouble
NS*
NULLNull
SString
SS*
說明 DynamoDB中的BS(binary set)、NS(number set)、SS(string set)資料類型不允許重複資料。例如,在NS中插入1,2,2,3,NS會對資料做去重操作,最終結果會變成1,2,3。而DynamoDB協議相容版當前暫不支援對這三種資料類型進行去重,因此上面表格中標記為星號(*)的部分都將作為數組(Array)進行處理。阿里雲會在後續版本中對這三種資料類型進行最佳化以支援去重。