2016-07-24 8 views
2

Von AWS DynamoDB documentation:Gibt es eine Größenbeschränkung für Partitionsteil eines zusammengesetzten Primärschlüssels in AWS DynamoDB?

Wenn Sie einen Primärschlüssel Attribut als String type-Attribut definieren, gelten die folgenden zusätzlichen Einschränkungen:

  • Für einen einfachen Primärschlüssel, die maximalen Länge des ersten Attributs value (der Partitionsschlüssel) ist 2048 Bytes.
  • Bei einem zusammengesetzten Primärschlüssel beträgt die maximale Länge des zweiten Attributwerts (Sortierschlüssel) 1024 Byte.

Bedeutet es, im Falle eines zusammengesetzten Primärschlüssel, dass die maximale Länge der Partition Schlüssel nicht begrenzt ist?

(Es gibt ein allgemeines 400 KB pro Stück Größenbeschränkung, aber die Frage ist nicht darüber)

Antwort

2

Ich bin mir ziemlich sicher, dass es nur zu sagen haben 2048 Bytes ist die Grenze für alle Partitionsschlüssel, und wenn Sie Haben Sie einen Sortierschlüssel, dann hat dieser Sortierschlüssel ein Limit von 1024 Bytes. Das scheint auch das zu sein, was sie deutlicher unter this page sagen.

0

Mark ist richtig. Der Partitionsschlüssel ist auf 2048 Byte beschränkt, unabhängig vom Primärschlüsseltyp (Einzelattribut oder Verbund). Ich habe es gerade von der Kommandozeile aus getestet. Unten sind die Befehle, die ich verwendet habe. Wenn Sie 2048 in 2049 in dem zweiten Befehl ändern, wird DynamoDB das Element mit ValidationException Fehler nicht hinzufügen.

# Create test table 
aws dynamodb create-table --table-name testdb5 --attribute-definitions '[{"AttributeName": "Id", "AttributeType": "S"}, {"AttributeName": "LastName", "AttributeType": "S"}]' --key-schema '[{"AttributeName": "Id", "KeyType": "HASH"}, {"AttributeName": "LastName", "KeyType": "RANGE"}]' --provisioned-throughput '{"ReadCapacityUnits": 5, "WriteCapacityUnits": 5}' 

# Add an item 
aws dynamodb put-item --table-name testdb5 --item '{ "Id": {"S": '$(python -c "print '\"' + 'A'*2048 + '\"'")'}, "LastName": {"S": '$(python -c "print '\"' + 'B'*1024 + '\"'")'}}' 

# Delete an item 
aws dynamodb delete-item --table-name testdb5 --key '{ "Id": {"S": '$(python -c "print '\"' + 'A'*2048 + '\"'")'}, "LastName": {"S": '$(python -c "print '\"' + 'B'*1024 + '\"'")'}}'