閱讀954 返回首頁    go 技術社區[雲棲]


淘寶海量數據庫之一:來自業務的挑戰

作為一個電子商務企業,從一開始,數據庫及其事務能力在淘寶就扮演著十分關鍵的角色,淘寶也積累了豐富的數據庫的架構和規劃等方麵的經驗,產生了眾多優秀的DBA。

 

淘寶是一家迅速發展的公司。全球網站排名公司Alexa提供的數據顯示,2010年4月27日,Amazon、Ebay的用戶占全球互聯網用戶的百分比分別為3.47%和2.68%,而淘寶的用戶占全球互聯網用戶的百分比則達到了4.1%,淘寶網日獨立訪問量從此超過了Amazon和Ebay。

 

淘寶的數據規模及其訪問量對關係數據庫提出了很大挑戰:數十億條的記錄、數TB的數據、數千TPS、數萬QPS讓傳統的關係數據庫不堪重負,單純的硬件升級已經無法使得問題得到解決,分庫分表也並不總是湊效。下麵來看一個實際的例子。

 

淘寶收藏夾是淘寶線上應用之一,淘寶用戶在其中保存自己感興趣的寶貝(即商品,此外用戶也可以收藏感興趣的店鋪)以便下次快速訪問、對比和購買等,用戶可以展示和編輯(添加/刪除等)自己的收藏。

 

淘寶收藏夾數據庫包含了收藏info表(一條一條的收藏信息)和收藏item表(被收藏的寶貝和店鋪)等:

  • 收藏info表保存收藏信息條目,數十億條
  • 收藏item表保存收藏的寶貝和店鋪的詳細信息,數億條
  • 熱門寶貝可能被多達數十萬買家收藏
  • 每個用戶可以收藏千個寶貝
  • 寶貝的價格、收藏人氣等信息隨時變化

 

如果用戶選擇按寶貝價格排序後展示,那麼數據庫需要從收藏item表中讀取收藏的寶貝的價格等最新信息,然後進行排序處理。如果用戶的收藏條目比較多(例如1000條),那麼查詢對應的item的時間會較長:假設如果平均每條item查詢時間是5ms,則1000條的查詢時間可能達到5s,若果真如此,則用戶體驗會很差。

 

如果把收藏的寶貝的詳細信息實時冗餘到收藏info表,則上述查詢收藏item表的操作就不再需要了。但是,由於許多熱門商品可能有幾千到幾十萬人收藏,這些熱門商品的價格等信息的變動可能導致收藏info表的大量修改,並壓垮數據庫。

 

OceanBase是淘寶自主研發的海量數據庫,並且已經開源( https://oceanbase.taobao.org/ )。在應用團隊和OceanBase團隊的共同努力下,上述問題得到了很好地解決:平均響應時間幾十毫秒,最長響應時間一百多毫秒。與先前使用的關係數據庫相比,係統QPS和TPS提升了幾倍,服務器數量反而減少了。


Author:正祥


最後更新:2017-04-03 07:57:03

  上一篇:go ttf設置文字字體
  下一篇:go 【理想流】項目管理本質論 .