大数据已经成为国家战略,而大数据首先所面临的问题就是大数据的存储问题,这就绕不开数据库,因为数据库就是用来存储数据的应用软件。任何数据库,都有其优缺点, 无论是传统关系型数据库还是NoSQL数据库又或者NewSQL数据库。因此,到底选择哪个数据库,对企业而言这个决策过程都非常复杂。
就数据库实际应用水平而言,互联网公司显然走在了前列,它们都在使用哪些数据库?分别对应哪些业务场景,为什么会是这样选择?了解的人却并不多。为此,老鱼在DTCC 2017中国数据库技术大会召开前夕,走访了多家知名互联网公司并采访了其技术负责人或DBA,为大家一一揭秘。
(注:部分受访者所属部门局限,因此,以下所列企业业务线对应数据库并不全面,仅列出主要应用数据库,供参考。企业排名不分先后,按采访顺序排序!本文将持续更新中……)
阿里巴巴/蚂蚁金服
采访对象:杨传辉(花名:日照),蚂蚁金服OceanBase团队,负责阿里巴巴/蚂蚁金服自研的分布式关系数据库OceanBase的研发。
杨传辉:OceanBase分布式关系数据库:蚂蚁金服的所有核心业务和部分其他业务以及少部分阿里巴巴的业务,可靠性高(单机/单机房故障不停服务、不丢数据)、水平伸缩、高性价比。OceanBase在去年双11支撑了蚂蚁金服100%的交易、支付以及账务流量。
MySQL:蚂蚁金服部分非核心业务和阿里巴巴大部分系统,类似于其他互联网公司。
去哪儿
采访对象:周彦伟,去哪儿网数据库总监,负责数据库平台的管理和维护工作。工作范围包括MySQL,redis,HBase平台的架构设计,性能调优,日常运维以及自动化运维平台设计。
周彦伟:去哪儿使用MySQL支撑公司大部分OLTP业务,有上千台规模。
同时针对热点数据以及对访问延时特别敏感的业务,去哪儿大规模的使用Redis做缓存。
对于数据量非常大,又不不利于分库分表的数据,去哪儿选择性的使用HBase。
腾讯
采访对象:王懂道,腾讯社交网络运营部平台技术运营中心,负责腾讯社交网络海量存储集群的运维和优化,服务对象包括QQ空间,相册,微云,QQ音乐等。
腾讯社交网络主要使用深度定制MySQL数据库 自研NoSQL,规模万台以上服务器,千万级qps。
王懂道:最早的存储是单机MySQL,服务性能和容灾、可用性方面都很欠缺,2010年在农牧场业务爆发时期,数据库已经成为业务发展瓶颈,因此当时自研了TTC(内存cache MySQL)的缓存服务器,将MySQL表数据缓存到内存中,提供高速,高并发的访问能力,支撑了腾讯第一代的社交游戏产品。
为了实现高效运维,提高服务可用性,2011年实现了以MySQL为基础的CDB关系型存储集群,这是目前腾讯社交网络最常用的关系数据库集群,存储如QQ秀的用户物品列表,黄钻用户数据等对事务依赖的服务。CDB提供对前端透明的主备切换,一键扩容,快速回档能力。
随着互联网高速发展,尤其是社交应用的爆发式增长,传统的关系数据库存在扩展能力薄弱,性能满足不了业务需求的问题,2011年腾讯又自研了CMEM这种纯内存高性能NoSQL存储集群,现在如空间的赞计数,每秒高达数百万的访问量,就使用这种存储。CMEM兼容memcached,但实现了数据持久化,主备容灾自动切换和快速弹性扩展能力,在春节红包等放量活动中,有着优异的表现。同期也自研了基于SSD的NoSQL存储集群TSSD,存放数据量庞大但是访问量不高的数据,如空间的说说存储。
2013年也可以说是腾讯的成本元年,腾讯开始投入精力做成本的优化,在内存存储成本不断膨胀,但又要保证访问质量的背景下,我们实现了CKV(CMEM TSSD)这种二级NoSQL存储模型。分层存储更符合社交业务的特性,随着业务生命周期的演变,数据会有逐渐变冷的时候,如微云的文件索引存储,用户几天前的赞数据等。可以将热数据保留在CMEM的内存中,冷数据自动下沉到TSSD,且冷热数据随着用户自身的访问行为自动上升和下沉,释放了数千台的内存服务器。
百度外卖
采访对象:徐俊劲,百度外卖DBA技术负责人,当前在百度外卖研发中心,负责百度外卖mysql、redis等数据库的设计优化、数据库平台建设工作。
百度外卖目前线上主要使用Mysql、redis等数据库。MySQL 数据数百TB级,redis 数据几TB级。
徐俊劲:Mysql主要用在订单、支付、结算等业务场景。这些业务:1)对于数据库的稳定性要求高,需要数据持久化存储2)存储空间的需求也比较大, 数据量在几十TB、几百TB级别3)对于事务有强烈需求,需要保证事务的ACID特性 4)读写量大,需要数据库性能优良,可扩展性好,能集群化提供服务。对于上面这些需求,Mysql都可以很好的满足,因此选择Mysql作为存储。
Redis主要用在缓存、计数的业务场景。这些业务有的对于读取QPS非常高,可以达到每秒几万QPS,有的更新非常频繁,对于数据类型支持的要求比较丰富,因此选择redis作为存储。
魅族
采访对象:龙启东,魅族高级DBA, 主要负责MySQL,Redis,Mongodb相关服务的运营管理,包括架构选型,设计,性能优化,自动化平台建设。目前主要专注于魅族自建RDS平台建设和落地实施,负责方案选型,产品设计与规划,高可用平台,慢日志平台等。
目前魅族OLTP场景主要使用的是MySQL,缓存服务使用的是Redis。数据库实例近1000,数据大小100T , redis实例1000
龙启东:MySQL使用覆盖应用中心,游戏中心,用户中心,云服务等主要业务,之所以选择MySQL,主要是开源,无linsen 费用,而且扩展性好,如云服务,随着用户数的不断增加,数据量也不断的增加,最开始只有几台DB服务器,数据量的不断增加,即使采用商业数据库产品也无法很好的支撑数据的快快速增长,而MySQL扩展性好的优势就体现出来了,利用复制架构能快速的对单台服务器容量进行拆分,到目前为止仅云服务就已经从最开始的几组服务器增加到好几十组DB服务器。而且从最开始的不断拆分模式演变为只要增加机器即可满足数据量的快速增长。同时MySQL slave复制能很好的扩展读性能,跨机房冗灾,比如三大中心业务需要灾各个机房进行读扩展,利用slave复制就能很好的满足要求,基于复制做跨机房的冗灾也是一个不错的选择。
,