我面临以下问题:
我需要建立一个包含许多属性的表:status、user_id、attribute_1、attribute_2 ... attribute_n
我需要执行仅按状态过滤的大量查询,但此属性的基数较低(只有两个值:启用和禁用),但是,为了执行这些查询,我需要使用 satus 作为分区键
第二种选择是使用user_id,但是如果不建立二级索引,我就无法按状态进行查询
解决这个问题的最佳方法是什么?建立低基数的二级索引有何影响?
提前谢谢您。
我考虑过的选项:
建立二级索引
使用扫描(已废弃)
使用低基数分区键
您需要根据您计划拥有的访问模式而不是数据结构来设计表。 DynamoDB 可以轻松存储复杂的数据属性。
如果需要访问特定用户在特定状态下的所有记录,则需要定义键和二级索引来满足此要求。在数据和访问键中包含时间戳字段总是好的,允许您根据时间进行过滤或排序。
因此,根据您的描述,您应该将用户 ID 和时间戳作为表的键以及状态的二级索引。