華文網

大揭秘:知名互聯網公司都在使用哪些資料庫?

大資料已經成為國家戰略,而大資料首先所面臨的問題就是大資料的存儲問題,這就繞不開資料庫,因為資料庫就是用來存儲資料的應用軟體。任何資料庫,都有其優缺點, 無論是傳統關係型數據庫還是NoSQL資料庫又或者NewSQL資料庫。

因此,到底選擇哪個資料庫,對企業而言這個決策過程都非常複雜。

就資料庫實際應用水準而言,互聯網公司顯然走在了前列,它們都在使用哪些資料庫?分別對應哪些業務場景,為什麼會是這樣選擇?瞭解的人卻並不多。

為此,老魚在DTCC 2017中國資料庫技術大會召開前夕,走訪了多家知名互聯網公司並採訪了其技術負責人或DBA,為大家一一揭秘。

(注:部分受訪者所屬部門局限,因此,以下所列企業業務線對應資料庫並不全面,僅列出主要應用資料庫,供參考。企業排名不分先後,按採訪順序排序!本文將持續更新中……)

阿裡巴巴/螞蟻金服

採訪對象:楊傳輝(花名:日照),螞蟻金服OceanBase團隊,

負責阿裡巴巴/螞蟻金服自研的分散式關聯式資料庫OceanBase的研發。

阿裡巴巴/螞蟻金服主要使用兩種關聯式資料庫:OceanBase和MySQL。資料規模:MySQL單台機器TB級,OceanBase單個集群從幾個TB到幾百個TB皆有。

楊傳輝: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複製就能很好的滿足要求,基於複製做跨機房的冗災也是一個不錯的選擇。

黃鑽使用者資料等對事務依賴的服務。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複製就能很好的滿足要求,基於複製做跨機房的冗災也是一個不錯的選擇。