aafenguk
aafenguk

程序员,旅游爱好者。 个人网站:https://www.aafeng.uk

关于DynamoDB的一个误解 - 多表查询

刚开始接触到DynamoDB的时候,对它有一种误解:和传统的关系型数据库相比,使用DynamoDB无法有效的进行多表查询。


但随着学习的深入,慢慢明白了,其实DynamoDB和传统关系型数据库可以说是各有所长。DynamoDB如果设计上没有问题,可以进行类似的多表查询,而且效率奇高。但对于超级复杂的多表查询,DyanmoDB并不擅长,这是关系型数据库最为擅长的。

其实,说到DynamoDB,其最大的优点包括:

  • 由于基于键/值对的设计,其查询效率超高
  • 基于AWS serverless,无维护成本
  • 可以auto-scaling,可扩展性好

在传统的关系型数据库中,要进行多表查询,往往会把不同表中的数据通过外键关联之后再进行查询。这样就可以组合出非常灵活的查询条件来。

在NoSQL数据库中,其设计思路从根本上是不同的。因此如果用传统的关系型数据库设计思路来理解,就会很难理解。比如在DynamoDB中,可以把在关系型数据库中的多个表放入在DynamoDB的一个表中,再通过Partition Key, Sort Key以及Global Secondary Index进行”多表“查询。

可以这么说吧,如果DynamoDB在设计时考虑到了这种组合查询的话,在后期进行开发的时候是没有问题的。由于DynamoDB是完全基于键/值进行存储的,因此其查询速度超快。但对于设计时没有考虑到的字段,就无法进行这种查询了。

因此,总结一下:如果有大量多表之间的复杂查询,选择关系型数据库。如果只是简单的”多表“查询,则应该选择NoSQL。可以这么说,90%左右的数据库选用NoSQL更为适合。只有10%左右的用例更适合选择关系型数据库。

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论