1. DynamoDB表含义
DynamoDB表概念,对于新手非常不友好,而且官网介绍比较粗略。不少应该有例子的地方,没有给出代码例子。也就是说,文档也不友好。我尝试友好的说几句,看看能否“直击痛点”:
DynamoDB的主键,可以是1个字段,也可以是2个字段,不能含有2个以上字段。
如果想要高效查询,即Query操作;另一种不高效“查询”,在DynamoDB的世界,叫Scan操作。

比如,交易记录表(Trans)含有字段:
id,from,to,amount,createAt,status这些字段,其中id为主键。因为查询(Query)操作,必须要指定Partition Key的等式筛选条件。假如当前要查询status=1的交易记录。因为status不是Partition Key,因此无法执行这样的where条件:
where status=1 // 这个是伪代码
table.Get("status", 1) // Go 查询语法因此,按照DynamoDB的规则,我们可以创建Secondary Index来实现。
Partition Key: status
Sort Key: id这样,查询语句类似
where status=$statusMySQL的分页语法是:
select * from Table limit 20, 10 //查询21~40行记录DynamoDB的分页语法是:
// status=1的查询,查询出来的第20条记录的id
// 一般情况下,由前端保存前面20条记录,查询第二页的时候,传给后台
lastEvaluatedKey=map[string]*dynamodb.AttributeValue{
param.SortKeyName: {
pageKeyValue.S = aws.String("第20条记录的id")
},
}
table.Get("status", 1).StartFrom(lastEvaluatedKey).Limit(20)
弊端:
猜测DynamoDB最佳姿势:
亚马逊的服务,看起来蹩脚,如果按照既有搞代码的思想去用,会更加蹩脚。如果,换成流、服务等思路,可以打开新的局面。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000523/viewspace-3152230/ ,如需转载,请注明出处,否则将追究法律责任。