【发布时间】:2021-03-11 19:44:39
【问题描述】:
由于 Dynamodb 以键值对的形式存储数据,其中 key 是主键的类型,value 是与之关联的数据。我想知道 dynamo db 是否真正理解 value(json)?按 value I表示与键关联的 json 对象(RDBMS 中的一行)。dynamo db 是否理解有一些属性并且它要存储一些属性值?
上下文:我在 dynamo db 中有一个人表,它具有不同的属性,比如 100,其中一个是年龄,现在假设有一些要求我想根据年龄获取一些记录。如果 dynamo db 一个一个地读取每个条目然后读取它的记录并假设每个记录都很大,那么 dynamo db 是读取记录的整个数据还是可以在恒定时间内只访问年龄属性而不管记录的大小?
【问题讨论】:
-
如果您扫描表并按年龄过滤,DynamoDB 将读取您的所有项目。如果您希望这样做高效,请创建一个以年龄为 GSI 排序键的 GSI,然后您的查询可以在您的
KeyConditionExpression中包含age BETWEEN 10 AND 20。 -
是的,我会这样做的。对于上面的问题,我只想知道是否在每个项目中,它会只读年龄属性吗?一旦有记录,它可以直接读取年龄吗?或者它需要读取整条记录才能读取年龄?就像一个人有不同的记录,假设它在记录x,它可以直接读取x的年龄还是需要读取整条记录才能知道x属性中的年龄在哪里?跨度>
-
如果属性未键入,则 DynamoDB 会先读取项目,然后才能过滤该属性的给定值 afaik。如果它是键控的,那么 DynamoDB 可以简单地使用索引(包含值)。
标签: amazon-web-services nosql amazon-dynamodb system-design