在Amazon DynamoDB中,分区键和排序键是用于创建和查询表格的两个关键概念。
分区键(Partition Key)是用于分割数据并将其分布在不同的分区中的主要标识符。它决定了数据在DynamoDB中的物理存储位置。分区键的选择对于表格的性能至关重要,因为它会直接影响到数据在分区中的分布均衡和查询的并发性能。
排序键(Sort Key)则是在分区内对数据进行排序和聚合的附加标识符。它可以帮助我们进行范围查询、条件查询和聚合操作。分区键和排序键的组合构成了表格的主键(Primary Key)。
下面是一个使用DynamoDB SDK进行创建表格和查询的示例代码:
import boto3
# 创建DynamoDB客户端
dynamodb = boto3.client('dynamodb')
# 创建表格
response = dynamodb.create_table(
TableName='my_table',
AttributeDefinitions=[
{
'AttributeName': 'partition_key',
'AttributeType': 'S'
},
{
'AttributeName': 'sort_key',
'AttributeType': 'N'
}
],
KeySchema=[
{
'AttributeName': 'partition_key',
'KeyType': 'HASH'
},
{
'AttributeName': 'sort_key',
'KeyType': 'RANGE'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
# 等待表格创建完成
dynamodb.get_waiter('table_exists').wait(TableName='my_table')
# 插入数据
response = dynamodb.put_item(
TableName='my_table',
Item={
'partition_key': {'S': 'user'},
'sort_key': {'N': '1'},
'name': {'S': 'John Doe'},
'age': {'N': '30'}
}
)
# 查询数据
response = dynamodb.query(
TableName='my_table',
KeyConditionExpression='partition_key = :pk',
ExpressionAttributeValues={
':pk': {'S': 'user'}
}
)
# 打印查询结果
for item in response['Items']:
print(item)
上述代码中,我们创建了一个名为my_table的表格,并定义了partition_key和sort_key作为主键。然后我们插入了一条数据,并使用query方法查询了具有特定partition_key的所有数据。
通过这个示例,我们可以看到分区键和排序键的区别,分区键用于将数据分布在不同的分区中,而排序键用于对数据进行排序和聚合。
上一篇:Amazon DynamoDB中的地图和列表的全局二级索引是否有解决方案?
下一篇:Amazon DynamoDB:- Invalid UpdateExpression:表达式大小超过了 DynamoDB 允许的最大大小。