海量分布式關(guān)系型數(shù)據(jù)庫
原創(chuàng)2013年4月26日-27日,由51CTO傳媒集團(tuán)旗下WOT(World Of Tech)品牌主辦的2013大數(shù)據(jù)全球技術(shù)峰會在北京富力萬麗酒店召開。本次峰會將圍繞大數(shù)據(jù)基礎(chǔ)架構(gòu)與上層應(yīng)用的生態(tài)系統(tǒng),解決大規(guī)模數(shù)據(jù)引發(fā)的問題,探索大數(shù)據(jù)基礎(chǔ)的解決方案,激發(fā)數(shù)據(jù)挖掘帶來的競爭力,讓數(shù)據(jù)發(fā)出聲音。51CTO作為本次峰會的主辦方,將全程視頻、圖文直播報道這場數(shù)據(jù)的盛宴,更多內(nèi)容請點擊專題:2013大數(shù)據(jù)全球技術(shù)峰會。
OceanBase是一個支持海量數(shù)據(jù)的高性能分布式數(shù)據(jù)庫系統(tǒng),實現(xiàn)了數(shù)千億條記錄、數(shù)百TB數(shù)據(jù)上的跨行跨表事務(wù),由淘寶核心系統(tǒng)研發(fā)部、運(yùn)維、DBA、廣告、應(yīng)用研發(fā)等部門共同完成。在設(shè)計和實現(xiàn)OceanBase的時候暫時摒棄了不緊急的DBMS的功能,例如臨時表,視圖(view),研發(fā)團(tuán)隊把有限的資源集中到關(guān)鍵點上,當(dāng)前 OceanBase主要解決數(shù)據(jù)更新一致性、高性能的跨表讀事務(wù)、范圍查詢、join、數(shù)據(jù)全量及增量dump、批量數(shù)據(jù)導(dǎo)入。
在4月26日的NoSQL&NewSQL專場論壇中,支付寶高級技術(shù)專家盧黃貴先生表了主題為“OceanBase: 海量分布式關(guān)系型數(shù)據(jù)庫”的演講。
關(guān)系數(shù)據(jù)庫發(fā)展
1970-72:E.F.Codd 數(shù)據(jù)庫關(guān)系模式
20世紀(jì)80年代
***個商業(yè)數(shù)據(jù)庫Oracle V2
SQL成為“數(shù)據(jù)庫行業(yè)標(biāo)準(zhǔn)”
可擴(kuò)展性
Mainframe:小型機(jī) => 中型機(jī) => 大型機(jī)
Sharding:全局索引? 事務(wù)? 跨庫查詢?
性能
Disk-based design:SSD? Memory?
開源數(shù)據(jù)庫:主備同步?鎖? Schema變更?
并發(fā)事務(wù)管理
使用MVCC保證寫事務(wù)不阻塞只讀事務(wù)
每行為每次事務(wù)保存修改歷史,根據(jù)事務(wù)ID讀取到指定數(shù)據(jù)
修改歷史的合并,不在被讀取的多個歷史版本將被定期合并
Btree和Hash修改的原子性保證
寫事務(wù)
0.3版,單線程寫+repalce語義,在MemTable層實現(xiàn)SnapShot
0.4版,多線程讀寫事務(wù)+完備的DB語義,使用Snapshot+兩階段行互斥鎖控制讀寫事務(wù)并發(fā)
并發(fā)日志回放
以單個事務(wù)日志作為并行的最小單位
并行回放的事務(wù)隔離性、一致性、原子性保證,并行提交的排序算法
主備同步
日志多線程回放
Innodb:記錄binlog邏輯日志,備機(jī)單線程回放
Oracle:記錄物理日志,備機(jī)多線程并發(fā)回放
OceanBase:記錄邏輯日志(無UNDO),備機(jī)多線程并發(fā)回放
主備同步協(xié)議
Mysql:異步,不保證數(shù)據(jù)一致性
Oracle
Maximum Performance(異步)
Maximum Protection(強(qiáng)同步)
Maximum Availability(強(qiáng)同步 => 寫本地)
OceanBase:改進(jìn)的Oracle MA模式
數(shù)據(jù)安全主備checksum校驗:保證增量數(shù)據(jù)的完全一致
tablet副本checksum 每次合并由rs做校驗,保證基線數(shù)據(jù)的一致
主備集群按行進(jìn)行checksum,保證主備集群一致
一致性選擇
用戶可以通過sql hint選擇一致性
寫事務(wù)必須是一致的,選擇主ups
讀事務(wù)可以選擇不一致讀,容忍一定數(shù)據(jù)延時獲得更好的性能
對于一次導(dǎo)入,全天查詢的olap應(yīng)用
只讀基準(zhǔn)數(shù)據(jù)提高性能
優(yōu)化技術(shù)舉例
高性能網(wǎng)絡(luò)框架:萬兆網(wǎng)卡、減少上下文切換
無鎖隊列:push, pop每秒達(dá)到600萬 ~ 1000萬次
避免Linux gettimeofday()調(diào)用
定制化內(nèi)存池:絕大部分事務(wù)執(zhí)行過程中無需動態(tài)內(nèi)存分配
完全避免隨機(jī)寫,適合SSD
定制SSD驅(qū)動?
OceanBase架構(gòu)小結(jié)
OceanBase = Bigtable + MemSQL
保證數(shù)據(jù)不丟失,可擴(kuò)展、高性能、低成本、持續(xù)可用
基線數(shù)據(jù) + 修改增量,每日合并
分布式存儲引擎:水平擴(kuò)展 + 自動容錯
數(shù)據(jù)庫:MVCC,多線程并發(fā)回放,UPS定制優(yōu)化
OceanBase vs 關(guān)系數(shù)據(jù)庫
線性可擴(kuò)展,無需分庫分表
持續(xù)可用:硬件故障、軟件升級、人為故障、etc
線上集群概況
30+應(yīng)用,***單個應(yīng)用80臺服務(wù)器
線上數(shù)據(jù)無丟失,無影響業(yè)務(wù)故障
***表格:收藏夾 10031274509
***qps/tps:45000 / 2500(一次scan 60行)
單日更新數(shù)據(jù)量:5億條(約120GB redo log)
OLAP業(yè)務(wù)
***表格:P4P 49412041894
單次請求最多行數(shù):約500萬,RT < 3秒
***導(dǎo)入數(shù)據(jù)量:SNS每天2TB(4臺機(jī)器)
開源
獲取更多信息,請訪問:
http://oceanbase.alibaba-inc.com/
以上是51CTO.com記者從一線為您帶來的精彩報道。后續(xù)我們還有更加精彩的獨家報道,敬請關(guān)注。