您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

HBase分布式事務(wù)與SQL實(shí)現(xiàn)

大?。?/span>0.5 MB 人氣: 2017-10-13 需要積分:1
目前主流的數(shù)據(jù)庫(kù)或者NoSQL要么在CAP里面選擇AP,比較典型的例子是Cassandra,要么選擇CP比如HBase,這兩個(gè)是目前用得非常多的NoSQL的實(shí)現(xiàn)。我們的價(jià)值觀一定認(rèn)為未來(lái)是分布式的,一定是盡量?jī)A向于全部都擁有,大部分情況下取舍都是HA,主流的比較頂級(jí)的數(shù)據(jù)庫(kù)都會(huì)選擇C,分布式系統(tǒng)一定逃不過(guò)P,所以A就只能選擇HA。現(xiàn)在主要領(lǐng)域是數(shù)據(jù)庫(kù)的開(kāi)發(fā),完全分布式,主要方向和谷歌的F1方向非常類(lèi)似。
  目前看NewSQL代表未來(lái)(Google Spanner、F1、FoundationDB),HBase在國(guó)內(nèi)有六個(gè)Committer,在目前主流的開(kāi)源數(shù)據(jù)庫(kù)里面幾乎是最強(qiáng)的陣容。大家選型的時(shí)候會(huì)有一個(gè)猶豫,到底應(yīng)該選擇HBase還是選Cassandra。根據(jù)應(yīng)用場(chǎng)景,如果需要一致性,HBase一定是你最好的選擇,我推薦HBase。它始終保持強(qiáng)一致,我們非常喜歡一致性,喪失一致性的時(shí)候有些錯(cuò)誤會(huì)特別詭異,很難查。對(duì)于Push-down特性的設(shè)計(jì)其實(shí)比較好,全局上是一個(gè)巨大的分布式數(shù)據(jù)庫(kù),但是邏輯上是分成了一個(gè)個(gè)Region,Region在哪臺(tái)機(jī)器上是明確的。
  比如要統(tǒng)計(jì)記錄的條數(shù),假設(shè)數(shù)據(jù)分布在整個(gè)系統(tǒng)里面,對(duì)數(shù)十億記錄做一個(gè)求和操作,就是說(shuō)不同的機(jī)器上都要做一個(gè)sum,把條件告訴他要完成哪些任務(wù),他給你任務(wù)你再匯總,這是典型的分布式的 MPP,做加速的時(shí)候是非常有效的。
  2015年HBaseConf 上面有一句總結(jié): “Nothing is hotter than SQL-on-Hadoop, and now SQL-on- HBase is fast approaching equal hotness status”, 實(shí)際上SQL-on-HBase 也是非?;?。因?yàn)?Schema Less 沒(méi)有約束其實(shí)是很?chē)樔说囊患虑?,?dāng)然沒(méi)有約束也比較爽,就是后期維護(hù)十分痛苦,規(guī)模進(jìn)一步擴(kuò)大了之后又需要遷移到 SQL。
  現(xiàn)在無(wú)論從品質(zhì)還是速度上要求已經(jīng)越來(lái)越高,擁有SQL的同時(shí)還希望有ACID的東西(OLAP一般不追求一致性)。所以TiDB在設(shè)計(jì)時(shí)就強(qiáng)調(diào)這樣的特點(diǎn):始終保持分布式事務(wù)的支持,兼容MySQL協(xié)議。無(wú)數(shù)公司在SQL遇到Scale問(wèn)題的時(shí)候很痛苦地做出了選擇,比如遷移到HBase,Cassandra MongoDB已經(jīng)看過(guò)太多的公司做這種無(wú)比痛苦的事情,現(xiàn)在不用痛苦了,直接遷過(guò)來(lái),直接把數(shù)據(jù)導(dǎo)進(jìn)來(lái)就OK了。TiDB最重要的是關(guān)注OLTP,對(duì)于互聯(lián)網(wǎng)業(yè)務(wù)來(lái)說(shuō)通常是在毫秒級(jí)內(nèi)就需要返回一個(gè)結(jié)果。
  我們到目前為止開(kāi)發(fā)了六個(gè)月,開(kāi)源了兩個(gè)月。昨天晚上TiDB達(dá)到了第一個(gè)Alpha的階段,現(xiàn)在可以擁有一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù):支持分布式事務(wù),始終保持同步的復(fù)制,強(qiáng)大的按需Scale能力,無(wú)阻塞的Schema變更。發(fā)布第一個(gè)Alpha版本的時(shí)候以前的質(zhì)疑都會(huì)淡定下來(lái),因?yàn)槟憧梢蚤喿x每一行代碼,體驗(yàn)每個(gè)功能。選擇這個(gè)領(lǐng)域也是非常艱難的決定,實(shí)在太Hardcore了,當(dāng)初Google Spanner也做了5年。不過(guò)我們是真愛(ài),我們就是技術(shù)狂,就是要解決問(wèn)題,就是要挑大家最頭痛的問(wèn)題去解決。好在目前阿里的OceanBase給我們服了顆定心丸,大家也不會(huì)質(zhì)疑分布式關(guān)系型數(shù)據(jù)庫(kù)是否可行。
  TiDB名字由來(lái)
  為什么叫TiDB?大家起名字的時(shí)候特別喜歡用希臘神話里面的人物,但幾乎所有的希臘神話人物的名字都被別的項(xiàng)目使用了,后來(lái)我們就找了化學(xué)元素周期表(理工科男與生俱來(lái)的特征),化學(xué)元素周期表里找到一個(gè)不俗且又能代表我們數(shù)據(jù)庫(kù)特性的元素-Ti 。Ti是航空航天及航海里面很重要的設(shè)備都會(huì)用到的,特別穩(wěn)定,也比較貴。
  HBase分布式事務(wù)與SQL實(shí)現(xiàn)
  TiDB的系統(tǒng)架構(gòu)圖
  TiDB怎么支持MySQL這個(gè)協(xié)議?這里會(huì)有一個(gè)協(xié)議解析層,它的作用就是去分析MySQL協(xié)議,轉(zhuǎn)成內(nèi)部可以識(shí)別的分發(fā)給自己的SQL Layer。當(dāng)SQL Layer 拿到這個(gè)語(yǔ)句之后會(huì)把它拆成對(duì)應(yīng)的分布式KV操作,所以這里會(huì)有一個(gè)Transactional KV Storage。接下來(lái)是在KV基礎(chǔ)上增加事務(wù)的支持,再往上是普通的KV操作,理論上KV選什么都可以,如果選的是HBase有一個(gè)好處,它本身就是分布式,省掉分布式的工作。目前我們?cè)谛∶椎腡hemis基礎(chǔ)上做了些優(yōu)化和改進(jìn),和我們TiDB做了一個(gè)很好的結(jié)合。后期我們有一個(gè)計(jì)劃,準(zhǔn)備自己重寫(xiě)一套底層的分布式KV,把HBase換掉。因?yàn)镠Base對(duì)于Container不友好,加上GC也是讓人比較討厭的問(wèn)題,壓力比較大的時(shí)候GC延遲會(huì)加長(zhǎng)。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?