自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oceanbase一個(gè)千億級(jí)海量數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
淘寶Oceanbase設(shè)計(jì)之初對(duì)淘寶的在線(xiàn)存儲(chǔ)需求進(jìn)行分析發(fā)現(xiàn):淘寶的數(shù)據(jù)總量比較大,未來(lái)一段時(shí)間,比如五年之內(nèi)的數(shù)據(jù)規(guī)模為百TB級(jí)別,千億條記錄,另外,數(shù)據(jù)膨脹很快,傳統(tǒng)的分庫(kù)分表對(duì)業(yè)務(wù)造成很大的壓力,必須設(shè)計(jì)自動(dòng)化的分布式系統(tǒng);然而,在線(xiàn)存儲(chǔ)每天的修改量很小,大多數(shù)情況下單機(jī)的內(nèi)存就能存放下。因此,我們采用將動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)分離的辦法。

 

有一些同學(xué)問(wèn)我,Oceanbase的創(chuàng)新點(diǎn)在哪里? 從大學(xué)的數(shù)據(jù)結(jié)構(gòu)課程可以知道,數(shù)據(jù)量比較大時(shí),有兩種數(shù)據(jù)結(jié)構(gòu)很常用:哈希表和B+樹(shù),分布式系統(tǒng)也是類(lèi)似的。如下圖:

 

Amazon的系統(tǒng)實(shí)現(xiàn)了一個(gè)分布式哈希表,而Google Bigtable, Yahoo PNUTS,Microsoft SQL Azure實(shí)現(xiàn)了一顆分布式B+樹(shù)。分布式哈希表實(shí)現(xiàn)相對(duì)簡(jiǎn)單,但只支持隨機(jī)讀取;而分布式B+樹(shù)支持范圍查詢(xún),但實(shí)現(xiàn)比較復(fù)雜,主要有兩個(gè)難點(diǎn):

1, 狀態(tài)數(shù)據(jù)的持久化和遷移。更新操作改變系統(tǒng)的狀態(tài),數(shù)據(jù)庫(kù)系統(tǒng)中更新操作首先以事務(wù)提交日志(MySQL稱(chēng)為binlog, NOSQL稱(chēng)為commit log)寫(xiě)入到磁盤(pán),為了保證可靠性,commit log需要復(fù)制多份并保證它們之間的一致性。另外,機(jī)器宕機(jī)時(shí)需要通過(guò)commit log記錄的狀態(tài)修改信息將服務(wù)遷移到集群中的其它節(jié)點(diǎn)。

2, 子表的分裂和合并。B+樹(shù)實(shí)現(xiàn)的難點(diǎn)在于樹(shù)節(jié)點(diǎn)的分裂與合并,在分布式系統(tǒng)中,數(shù)據(jù)被順序劃分為大小在幾十到幾百M(fèi)B大小的數(shù)據(jù)范圍,一般稱(chēng)為子表,相當(dāng)于B+樹(shù)結(jié)構(gòu)中的葉子節(jié)點(diǎn)。由于每個(gè)子表在系統(tǒng)中存儲(chǔ)多份,需要保證多個(gè)副本之間的分裂點(diǎn)是一致的。由于子表在分裂的同時(shí)也有更新操作,保證多個(gè)副本之間一致是比較困難的。

對(duì)于這兩個(gè)問(wèn)題,不同的系統(tǒng)有不同的解決方法:

1, 狀態(tài)維持。Google Bigtable將狀態(tài)數(shù)據(jù)寫(xiě)入到GFS中,由GFS提供可靠性保證,但GFS本身是一個(gè)巨大的工程;Yahoo PNUTS將狀態(tài)數(shù)據(jù)寫(xiě)入到分布式消息中間件,Yahoo內(nèi)部稱(chēng)為Yahoo Message Broker;Microsoft SQL Azure直接通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)復(fù)制到多機(jī),由于一臺(tái)機(jī)器服務(wù)多個(gè)子表,這些子表的副本可能分布在整個(gè)集群中,因此,任何兩臺(tái)機(jī)器都可能建立數(shù)據(jù)復(fù)制的網(wǎng)絡(luò)通道,需要處理與這些通道有關(guān)的異常情況。

2, 子表分裂。由于底層有GFS保證可靠性,Google Bigtable設(shè)計(jì)時(shí)保證每一個(gè)子表同時(shí)只被一臺(tái)機(jī)器(Tablet Server)服務(wù);Yahoo PNUTS通過(guò)引入復(fù)雜的兩節(jié)點(diǎn)提交(Two-phase commit)協(xié)議協(xié)調(diào)多個(gè)副本之間的一致性,使得他們的分裂點(diǎn)相同;Microsoft SQL Azure干脆不支持子表分裂,犧牲一部分?jǐn)U展性從而簡(jiǎn)化系統(tǒng)設(shè)計(jì)。

淘寶Oceanbase設(shè)計(jì)之初對(duì)淘寶的在線(xiàn)存儲(chǔ)需求進(jìn)行分析發(fā)現(xiàn):淘寶的數(shù)據(jù)總量比較大,未來(lái)一段時(shí)間,比如五年之內(nèi)的數(shù)據(jù)規(guī)模為百TB級(jí)別,千億條記錄,另外,數(shù)據(jù)膨脹很快,傳統(tǒng)的分庫(kù)分表對(duì)業(yè)務(wù)造成很大的壓力,必須設(shè)計(jì)自動(dòng)化的分布式系統(tǒng);然而,在線(xiàn)存儲(chǔ)每天的修改量很小,大多數(shù)情況下單機(jī)的內(nèi)存就能存放下。因此,我們采用將動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)分離的辦法。動(dòng)態(tài)數(shù)據(jù)的數(shù)據(jù)量小,采用集中式的方法解決,這樣,狀態(tài)數(shù)據(jù)維持從一個(gè)分布式的問(wèn)題轉(zhuǎn)化為單機(jī)的問(wèn)題;靜態(tài)數(shù)據(jù)的數(shù)據(jù)量大,采用分布式的方法解決,因?yàn)殪o態(tài)數(shù)據(jù)基本不變,實(shí)現(xiàn)時(shí)不需要復(fù)雜的線(xiàn)程同步機(jī)制,另外,保證靜態(tài)數(shù)據(jù)的多個(gè)副本之間一致性是比較容易的,簡(jiǎn)化了子表的分裂和合并操作。通過(guò)這樣的權(quán)衡,淘寶Oceanbase以一種很簡(jiǎn)單的方式滿(mǎn)足了未來(lái)一段時(shí)間的在線(xiàn)存儲(chǔ)需求,并且還獲得了一些其它特性,如高效支持跨行跨表事務(wù),這對(duì)于淘寶的業(yè)務(wù)是非常重要的。另外,我們之所以敢于做這樣的權(quán)衡,還有一個(gè)重要的原因:我們內(nèi)部已經(jīng)思考了很多關(guān)于動(dòng)態(tài)數(shù)據(jù)由集中式變?yōu)榉植际降姆桨?,即使我們?duì)需求估計(jì)有些偏差,也可以很快修改原有系統(tǒng)進(jìn)一步提高可擴(kuò)展性。

【編輯推薦】

 

  1. 淘寶海量數(shù)據(jù)庫(kù)之克服隨機(jī)IO難題
  2. 數(shù)據(jù)庫(kù)如何抵抗隨機(jī)IO的問(wèn)題、方法與現(xiàn)實(shí)
  3. 一步一步設(shè)計(jì)你的數(shù)據(jù)庫(kù)之不可輕視的需求分析
  4. 養(yǎng)成一個(gè)SQL好習(xí)慣帶來(lái)一筆大財(cái)富
  5. MySQL中創(chuàng)建及優(yōu)化索引組織結(jié)構(gòu)的思路
責(zé)任編輯:艾婧 來(lái)源: sunvince的專(zhuān)欄
相關(guān)推薦

2011-09-01 10:54:28

OceanBase數(shù)據(jù)庫(kù)海量

2011-09-01 10:10:56

OceanBase海量淘寶

2015-04-02 11:02:39

阿里巴巴OceanBase

2019-07-29 09:37:44

海量數(shù)據(jù)企業(yè)級(jí)私有云

2023-11-29 12:12:24

Oceanbase數(shù)據(jù)庫(kù)

2015-04-20 17:29:44

2011-03-28 08:47:46

海量數(shù)據(jù)庫(kù)管理中韓數(shù)據(jù)庫(kù)專(zhuān)家

2021-05-14 10:45:21

PythonNoSQL數(shù)據(jù)庫(kù)

2017-05-18 12:16:03

LinuxPythonNoSql

2011-07-20 13:40:00

SQLite數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)

2018-02-25 17:30:18

2012-05-11 10:24:05

SQL數(shù)據(jù)庫(kù)SQLitl

2021-08-04 05:49:40

數(shù)據(jù)庫(kù)數(shù)時(shí)序數(shù)據(jù)庫(kù)技術(shù)

2011-08-18 18:18:05

MySQL數(shù)據(jù)庫(kù)優(yōu)化

2011-05-12 09:19:36

海量數(shù)據(jù)庫(kù)管理

2011-06-03 09:22:04

OracleOracle應(yīng)用服務(wù)器

2022-07-25 17:27:19

數(shù)據(jù)庫(kù)

2013-04-26 16:18:29

大數(shù)據(jù)全球技術(shù)峰會(huì)

2011-07-20 12:55:17

SQLite數(shù)據(jù)庫(kù)插入數(shù)據(jù)

2023-03-30 22:32:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)