分类: Mysql/postgreSQL
2019-12-27 18:20:52
我们进行数据库选型的时候要考虑哪些问题?有哪些需求?待选用的数据库是否和需求对得上?是不是直接可以拿来用?需不需要一些额外的开发?一起来看看~
转自:阿飞的博客
我们做选型的时候首先要问:
谁选型?是负责采购的同学、 DBA 还是业务研发?
如果选型的是采购的同学,他们更注重成本,包括存储方式、网络需求等。
如果选型的是 DBA 同学,他们关心的:
① 运维成本
首先是运维成本,包括监控告警是否完善、是否有备份恢复机制、升级和迁移的成本是否高、社区是否稳定、是否方便调优、排障是否简易等;
② 稳定性
其次,DBA会关注稳定性,包括是否支持数据多副本、服务高可用、多写多活等;
③ 性能
第三是性能,包括延迟、QPS 以及是否支持更高级的分级存储功能等;
④ 拓展性
第四是扩展性,如果业务的需求不确定,是否容易横向扩展和纵向扩容;
⑤ 安全
最后是安全,需要符合审计要求,不容易出现 SQL 注入或拖库情况。
⑥ 其他
除了采购和 DBA之外,后台应用研发的同学同样会关注稳定性、性能、扩展性等问题,同时也非常关注数据库接口是否便于开发,是否便于修改数据库 schema 等问题。
接下来我们来看一下爱奇艺使用的数据库类型:
可以看到爱奇艺的数据库种类还是很多的,这会造成业务开发的同学可能不太清楚在他的业务场景下应该选用哪种数据库系统。
那么,我们先对这些数据库按照接口(SQL、NoSQL)和面向的业务场景(OLTP、OLAP)这两位维度进行一个简单非严谨的分类。
下图中,左上角是面向 OLTP、支持 SQL 的这样一类系统,例如 MySQL,一般支持事务不同的隔离级别, QPS 要求比较高,延时比较低,主要用于交易信息和关键数据的存储,比如订单、VIP 信息等。
左下角是 NoSQL 数据库,是一类针对特殊场景做优化的系统,schema 一般比较简单,吞吐量较高、延迟较低,一般用作缓存或者 KV 数据库。
整个右侧都是 OLAP 的大数据分析系统,包括 Clickhouse、Impala等,一般支持SQL、不支持事务,扩展性比较好,可以通过加机器增加数据的存储量,响应延迟较长。
还有一类数据库是比较中立的,在数据量比较小的时候性能比较好,在数据量较大或复杂查询的时候性能也不差,一般通过不同的存储引擎和查询引擎来满足不同的业务需求,我们把它叫做 HTAP,TiDB 就是这样一种数据库。