DynamoDB batchGet 与多个 getItem
DynamoDB batchGet vs multiple getItem
使用多个 getItem
调用在成本或性能方面是否有任何差异:
Promise.all([
client.getItem({ TableName, Key }).promise(),
client.getItem({ TableName, Key }).promise(),
client.getItem({ TableName, Key }).promise(),
]
给一个 batchGet
电话:
const params = {
RequestItems: {
'TABLE_NAME': {
Keys: [
{'KEY_NAME': {N: 'KEY_VALUE_1'}},
{'KEY_NAME': {N: 'KEY_VALUE_2'}},
{'KEY_NAME': {N: 'KEY_VALUE_3'}}
]
}
}
};
db.batchGetItem(params).promise()
就成本而言:否 - 两个操作消耗相同数量的读取容量单位。
就性能而言:是 - 使用多个 GetItem 请求会为每个请求发送单独的网络请求,而 BatchGetItem 只有一个请求,这应该会快很多.
BatchGetItem 没有真正的缺点,只是在找不到某些项目时稍微增加了复杂性。
使用多个 getItem
调用在成本或性能方面是否有任何差异:
Promise.all([
client.getItem({ TableName, Key }).promise(),
client.getItem({ TableName, Key }).promise(),
client.getItem({ TableName, Key }).promise(),
]
给一个 batchGet
电话:
const params = {
RequestItems: {
'TABLE_NAME': {
Keys: [
{'KEY_NAME': {N: 'KEY_VALUE_1'}},
{'KEY_NAME': {N: 'KEY_VALUE_2'}},
{'KEY_NAME': {N: 'KEY_VALUE_3'}}
]
}
}
};
db.batchGetItem(params).promise()
就成本而言:否 - 两个操作消耗相同数量的读取容量单位。
就性能而言:是 - 使用多个 GetItem 请求会为每个请求发送单独的网络请求,而 BatchGetItem 只有一个请求,这应该会快很多.
BatchGetItem 没有真正的缺点,只是在找不到某些项目时稍微增加了复杂性。