gpt4 book ai didi

amazon-web-services - 用于存储不同对象的 DynamoDB 数据库模型

转载 作者:行者123 更新时间:2023-12-04 04:23:22 25 4
gpt4 key购买 nike

我正在尝试学习 DynamoDB 只是为了教学目的,因此我建议自己创建一个小项目来销售车辆(汽车、自行车、四轮摩托车等),以便学习和获得 NoSQL 数据库的一些经验.我阅读了很多关于创建正确模型的文档,但我仍然无法找到存储数据的最佳方式。

我想通过以下过滤器获取所有车辆:

  • 获取所有车龄不超过 3 个月的汽车。
  • 按品牌、年份和型号获取所有车龄不超过 3 个月的汽车。
  • 以及之前对自行车、四轮摩托车等的相同查询。

阅读官方文档和其他带有示例的页面(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html#bp-general-nosql-design-approachhttps://medium.com/swlh/data-modeling-in-aws-dynamodb-dcec6798e955Separate tables vs map lists - DynamoDB)后,他们说最好的设计只使用一个表来存储所有内容,所以我最终得到了一个像下一个:

-------------------------------------------------------------------------------------
Partition key | Sort key | Specific attributes for each type of vehicle
-------------------------------------------------------------------------------------
cars | date#brand#year#model | {main attributes for the car}
bikes | date#brand#year#model | {main attributes for the bike}
-------------------------------------------------------------------------------------

我使用了复合排序键,因为他们指定这是搜索数据的好习惯 (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html)。

但是在定义了我的模型之后,我发现之前的模型会有一个称为“Hotspotting”或“Hoy key”的问题。 (https://medium.com/expedia-group-tech/dynamodb-data-modeling-c4b02729ac08https://dzone.com/articles/partitioning-behavior-of-dynamodb)因为在官方文档中,他们建议使用具有高基数的分区键来避免该问题。

所以在这一点上,我对如何定义一个良好且可扩展的模型有点困惑。关于如何实现模型以获取上述查询,您能否提供一些帮助或示例?

注意:我还考虑过为每辆车创建一个特定的表,但这会产生更多问题,因为要查找信息,我需要执行全表扫描。

最佳答案

一些事情...

热分区,只有如果您有多个分区...

仅仅因为您有多个分区(散列)键,并不自动意味着 DDB 将需要多个分区。您还需要使用超过 10GB 的数据和/或超过 3000 个 RCU 或 1000 个 WCU。

接下来,DDB 现在支持“自适应容量”,因此热分区不再像以前那么重要了。 why what you know about DynamoDB might be outdated

结合更新的“瞬时自适应能力”,您可以按需获得 DDB。

最后一点,您可能认为给定的分区(哈希)键下最多只能有 10GB 的数据。如果您的表使用本地二级索引 (LSI),则为真,否则为假。因此,请考虑使用全局二级索引 (GSI)。 GSI 会产生额外费用,因此需要权衡取舍。

关于amazon-web-services - 用于存储不同对象的 DynamoDB 数据库模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com