我刚刚发现了我在创建 dynamodb 结构时犯的一个大错误。我创建了 11 个表,其中一个是最常被引用的表,其他是补充表。例如,我有一个表,其中包含名为“Names”的名称(连同其他信息)和另一个名为“NamesMappings”的表,其中包含添加到“Names”表中的所有这些名称,以便每次用户想要添加名称时在“Names”表中,他首先尝试将名称放入“NamesMappings”中,并且只有在成功(因此该名称不存在)时,他才能将该名称添加到“Names”表中。如果名称不是唯一的并且不是“名称”表中的主键,则此过程会有所帮助,并且使用此技术我不必在“名称”中搜索
首先,我想问你这是一种常见的方法还是有更好的方法?
接下来,我发现通过这种设计,我很快就达到了 11 个表,每个表都有 5 个预置的读写容量,这导致在免费层下总共有 55 个预置的读写。然后我明白了为什么我每个月都会收到所有这些付款,因为随着表的数量越来越大,我将预置容量保留为默认值(读/写容量均为 5),我得到越来越多的预置容量。
那么,从这种理解中我应该得出什么结论呢?即使在表内执行扫描和查询需要更多努力,我是否应该尝试减少表的数量?或者我应该像我一样拆分表,但减少这些映射表的容量,这些映射表仅用于指示项目是否存在于另一个表中?