传统关系型数据库、中间件+数据库、原生分布式数据库使用原则?

1、随着newsql数据库发展,数据库可以说是百花齐放,对于银行业应用系统来说,传统关系型数据库、中间件+关系型数据库、原生分布式数据库使用原则从几个维度考虑?
2、对于某些OLAP应用来说,基于中间件+关系型数据库、原生分布式数据库、或者nosql数据库(hadoop、mpp)都可以实现时,是从几个维度考虑使用什么数据库的?

1回答

fanyqingfanyqing  系统架构师 , 厦门银行
Lucky000aigoppb彬彬赞同了此回答
问题1。传统关系型数据库,如Oracle、MySQL、DB2等,支持SQL操作,具备ACID属性,通常用于处理业务数据较小的OLTP。随着业务数据的增长,传统关系型数据库已慢慢无法满足业务需求,于是,应用系统开始考虑分库分表的方式,即将一个业务系统的数据按照一定的规则,分布到多个数据库上,这样每...显示全部

问题1。
传统关系型数据库,如Oracle、MySQL、DB2等,支持SQL操作,具备ACID属性,通常用于处理业务数据较小的OLTP。随着业务数据的增长,传统关系型数据库已慢慢无法满足业务需求,于是,应用系统开始考虑分库分表的方式,即将一个业务系统的数据按照一定的规则,分布到多个数据库上,这样每个数据库需要处理的数据可以更少,以此满足业务系统不断增加的数据处理需求。中间件+分布式数据库模式就是属于此种情形。其中中间件主要用于数据的分片与分布式事务的处理,对应用来说是透明的。因此,中间件+分布式数据库主要用于数据量大的OLTP业务。而原生分布式数据库需重构数据库系统,原生支持分布式事务处理与数据切分,原生分布式数据库根据其数据处理引擎,有些适用于OLTP场景,有些适用于OLAP场景,还有些适用于离线分析场景。因此,我们在选择数据库时,首先要考虑是应用于哪类业务场景,其次要考虑该业务所要处理的数据量、数据增长的速度,业务的并发量等。如果选择的是中间件+关系型数据库,在数据库设计时,需要特别注意分区键和分区策略的选择,合理布局数据,尽量避免跨节点的分布式事务处理,以提高数据库的效率。
问题2:
对于OLAP应用,虽然各类数据库都可以实现业务数据的处理需求,但实现的成本和实现的效果大不不同。比如,关系型数据库(包括中间件+关系型数据库),大都采用行存,适用于OLTP场景,如果用于OLAP,虽然可实现业务能力,但效率较差。即使是原生分布式数据库,因重构数据库系统,也要根据数据处理引擎,选择合适的原生分布式数据库来处理OLAP业务。至于NoSQL,因SQL支持能力有限,如果要用于OLAP,会增加应用的开发难度。故在实际应用时,需要根据业务场景,以及自身发技术储备,选择合适的数据库。

收起
 2021-04-26
浏览477

提问者

Tanxun软件开发工程师, 金电

分布式关系型数据库选型优先顺序调查

发表您的选型观点,参与即得50金币。

问题状态

  • 发布时间:2021-04-20
  • 关注会员:2 人
  • 问题浏览:1060
  • 最近回答:2021-04-26