我是爱奇艺的数据库和中间件负责人郭磊涛,今天主要向大家分享数据库选型方面的思路,供大家参考和学习。我们进行数据库选型的时候要考虑哪些问题?有哪些需求?待选用的数据库是否和需求对的上?是不是直接就可以拿来用?需不需要一些额外的开发?这些都会在今天的分享中提及。
我们做选型的时候首先要问:
谁选型?是负责采购的同学、 DBA 还是业务研发?
如果选型的是采购的同学,他们更注重成本,包括存储方式、网络需求等。
如果选型的是 DBA 同学,他们关心的:
- 首先是运维成本,包括监控告警是否完善、是否有备份恢复机制、升级和迁移的成本是否高、社区是否稳定、是否方便调优、排障是否简易等;
- 其次DBA会关注稳定性,包括是否支持数据多副本、服务高可用、多写多活等;
- 第三是性能,包括延迟、QPS 以及是否支持更高级的分级存储功能等;
- 第四是扩展性,如果业务的需求不确定,是否容易横向扩展和纵向扩容;最后是安全,需要符合审计要求,不容易出现 SQL 注入或拖库情况。
除了采购和 DBA之外,后台应用研发的同学同样会关注稳定性、性能、扩展性等问题,同时也非常关注数据库接口是否便于开发,是否便于修改数据库 schema 等问题。
接下来我们来看一下爱奇艺使用的数据库类型。
- MySQL, 互联网业务必备系统;
- TiDB;爱奇艺的 TiDB 实践会有另外的具体介绍;
- Redis, KV 数据库,互联网公司标配;
- Couchbase,这个在爱奇艺用的比较多,但国内互联网公司用的比较少,接下来的部分会详细说明;
- 其他,比如 MongoDB、图数据库、自研 KV 数据库 HiKV 等;
- 大数据分析相关系统,比如 Hive、Impala 等等。
可以看到爱奇艺的数据库种类还是很多的,这会造成业务开发的同学可能不太清楚在他的业务场景下应该选用哪种数据库系统。那么,我们先对这些数据库按照接口(SQL,NoSQL)和面向的业务场景(OLTP, OLAP)这两位维度进行一个简单非严谨的分类。