DynamoDB复合键vs二级索引:5000万图书场景选型咨询
DynamoDB图书数据模型设计最佳实践
最优方案选择:方案2(book_id为单属性分区键,配合author_id的二级索引)
各方案分析:
方案1(author_id + book_id复合键):完全不可行。高频的按book_id查询需求无法通过该复合键直接实现——复合键的分区键是author_id,查询book_id必须同时指定author_id,否则只能执行全表扫描,这会导致极高的延迟和成本,完全无法支撑每日2000万次的高频请求。
方案2(book_id单键+author_id二级索引):完美匹配需求:
- 高频的book_id查询直接走主表的单分区键查询,这是DynamoDB性能最高、成本最优的操作,能轻松应对每日2000万次的请求量。
- 低频的按author_id查询需求,通过以author_id为分区键的全局二级索引(GSI)实现,GSI可以高效返回该作者的所有图书数据。虽然GSI会带来少量额外的存储和写入成本,但由于查询频率极低(每周1次),这种成本完全在可接受范围内,且不会影响主表的核心查询性能。
方案3(认为是过早优化):不成立。当前需求明确,两种查询的频率差异极大,选择合适的模型是必要的设计,而非过早优化——错误的模型会直接导致核心高频查询性能崩盘,属于必须提前规划的内容。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

