Dynamo DB 如何存储数据?

rah*_*rma 0 amazon-web-services nosql system-design amazon-dynamodb

由于Dynamodb以键值对的形式存储数据,其中键是主键的类型,值是与其关联的数据。我想知道dynamo db是否真正理解值(json)?我所说的值是指json与键关联的对象(RDBMS 中的一行)。dynamo db 是否理解有一些属性以及它要存储的属性的一些值?

上下文:我在 dynamo 数据库中有一个人员表,它具有不同的属性,比如 100,其中之一是年龄,现在假设有一些要求,我想根据年龄获取一些记录。如果dynamo db逐一读取每个条目,然后读取其记录,并假设每条记录都非常大,那么dynamo db是否会读取记录的整个数据,或者无论记录的大小如何,它都可以在恒定时间内仅访问年龄属性吗?

Pet*_*ner 7

dynamo db 是否理解有一些属性以及它要存储的属性的一些值?

不,不是的。

DynamoDB 是一种“宽列”风格的 NoSQL 数据库。虽然在表构建时没有定义超出主键的架构,但查询能力仅限于主键或二级索引。创建全局二级索引允许您查询其他属性值。本地二级索引也可以被查询,但它们有点奇怪。请参阅此处,了解两种二级索引类型的详细比较。

如果您的需求确实包括在属性内部进行查询,请查看一些“面向文档”风格的 NoSQL 数据库,其中大多数人想到的是MongoDB 。如果您已经嵌入 AWS 生态系统并且不想脱离它,AWS 提供DocumentDB作为由 AWS 管理的 MongoDB 兼容服务。

宽列和文档式数据存储具有不同的优缺点。一般来说,宽列方法更适合以一致的成本和速度实现极端可扩展性,而面向文档的方法则随着数据访问模式随着时间的推移而变化而提供更大的灵活性。选择最适合您需求的一款。