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