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

in cn •  4 years ago 

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

image

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

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

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

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

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

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!
Sort Order:  
  ·  4 years ago  ·  

不需要 range query 就要用 NoSQL
然后 如果有钱/Budget, 就用 DynamoDB

  ·  4 years ago  ·  

如果项目肯定是基于AWS的,那么和AWS RDS相比,DynamoDB不贵啊