我想要喜欢DynamoDB,但主要的缺点是在整个数据库上进行查询/扫描以获取一个查询的结果。我是否会更好地使用MySQL,或者我应该注意另一种解决方案吗?
用途:
新闻源项目(从表中拉出最近的项目,其中id为x,x,x,x,x)
用户个人资料关系(用户关注和朋友彼此)
用户列表(用户最多可在一个列表中包含1,000个项目)
我很乐意混合搭配数据库解决方案。主要用途是列表。
最终会有几百万个列表,每个列表有5到1000个项目。列表的格式如下:list_id(bigint)| order(int(1))| item_text(varchar(500))| item_text2(varchar(12))| timestamp(int(11))
此数据库的主要查询将在' list_relations'表:
选择' item_text'从列表中list_id = 539830
我想我的主要问题。我们可以获取特定list_id的所有项目,而无需慢速查询/扫描吗?并且通过“缓慢的”#39;人们意味着一秒钟?还是几分钟?
谢谢
答案 0 :(得分:0)
我不打算说明这是一个不错的选择还是正确的选择,但你可以做你所要求的。我有一个大型的dynamoDB实例,车辆VIN作为哈希,我的范围还有其他东西,我有一个关于vin的二级索引和一个时间戳字段,我能够通过时间戳搜索快速查询特定车辆的数千条记录,没问题。
答案 1 :(得分:0)
在DynamoDB中构建模式需要考虑的不同于在MySQL中构建。
您希望尽可能避免扫描,这意味着要仔细选择您的哈希密钥。
根据您的确切查询,您可能还需要拥有多个具有相同数据的表...但是根据您的查询需求使用不同的hashkey。
您也没有提到DynamoDB的LSI和GSI功能,这些功能也有助于您的查询能力,但也有各自的缺点。如果不了解有关您的要求的更多细节,很难进一步建议。