我正在开发一个基本的论坛Android应用程序,用户可以发布问题,社区的其他用户可以留下回复,我正在使用DynamoDB来存储“论坛”数据,但因为数据库可能会被读/写成千上万的用户我对性能有点“担心”。
我已经阅读了很多关于定义密钥的内容但是根据DynamoDB的工作方式无法让我明白最佳解决方案。我正在考虑两种可能性,第一种是将question_id(UUID)定义为没有Range Key的Hash Key,并创建一个类似category_id / index的索引(类别是问题的类别,索引用于按日期排序)和第二个可以将category_id定义为散列键,索引为范围键,没有辅助索引(使用第二个选项,我避免创建二级索引)。
请你帮我清楚一下在性能方面哪些方面最好?
编辑只是为了更清楚:
我的场景有点复杂(实际上它与普通的关系数据库系统并不复杂,但DynamoDB有很多局限性,特别是对于向前和向后分页),我需要的是下一个:
用户发布问题,此问题存储在数据库中(没有问题)然后在“问题列表”屏幕中,我应该能够列出按类别分组的问题,并按日期分页和排序(此处开始有点复杂)所以我创建了一个索引属性(因为我知道索引将根据发布顺序(日期)连续,然后它将按日期排序)并且我有一个二级索引,其中我使用category + index属性作为一个键,这种方式我按类别过滤并按索引排序(让我们说日期),我也使用索引进行分页。
所有这些“发明”都很有效,但是,我正在测试一个用户并一次发布一个问题,但不知道数千或数百万用户会发生什么,以及优化/性能问题我想确定我使用的是最好的表键定义模式。
我对问题表的实际键定义是类别+索引(其他字段是主题,问题,时间戳,用户ID等),所以有了这些添加的信息,我希望任何人都可以给我一些提示,如果我要进入正确的方向。