? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?天津九安醫(yī)療電子--吳偉
1、? Hbase適合大量插入同時又有讀的情況核偿。輸入一個Key獲取一個value或輸入一些key獲得一些value呈驶。
2卓研、? Hbase的瓶頸是硬盤傳輸速度缔莲。Hbase的操作肄渗,它可以往數(shù)據(jù)里面insert搞乏,也可以update一些數(shù)據(jù)扶欣,但update的實(shí)際上也是insert,只是插入一個新的時間戳的一行音同。Delete數(shù)據(jù),也是insert权均,只是insert一行帶有delete標(biāo)記的一行顿膨。Hbase的所有操作都是追加插入操作。Hbase是一種日志集數(shù)據(jù)庫恋沃。它的存儲方式必指,像是日志文件一樣囊咏。它是批量大量的往硬盤中寫,通常都是以文件形式的讀寫塔橡。這個讀寫速度梅割,就取決于硬盤與機(jī)器之間的傳輸有多快。
? ? ? 而Oracle的瓶頸是硬盤尋道時間葛家。它經(jīng)常的操作時隨機(jī)讀寫户辞。要update一個數(shù)據(jù),先要在硬盤中找到這個block惦银,然后把它讀入內(nèi)存咆课,在內(nèi)存中的緩存中修改,過段時間再回寫回去扯俱。由于你尋找的block不同,這就存在一個隨機(jī)的讀喇澡。硬盤的尋道時間主要由轉(zhuǎn)速來決定的迅栅。而尋道時間,技術(shù)基本沒有改變晴玖,這就形成了尋道時間瓶頸读存。
3、? Hbase中數(shù)據(jù)可以保存許多不同時間戳的版本(即同一數(shù)據(jù)可以復(fù)制許多不同的版本呕屎,準(zhǔn)許數(shù)據(jù)冗余让簿,也是優(yōu)勢)。數(shù)據(jù)按時間排序秀睛,因此Hbase特別適合尋找按照時間排序?qū)ふ襎op n的場景尔当。找出某個人最近瀏覽的消息,最近寫的N篇博客蹂安,N種行為等等椭迎,因此Hbase在互聯(lián)網(wǎng)應(yīng)用非常多锐帜。
4、? Hbase的局限畜号。只能做很簡單的Key-value查詢缴阎。它適合有高速插入,同時又有大量讀的操作場景简软。而這種場景又很極端蛮拔,并不是每一個公司都有這種需求。在一些公司痹升,就是普通的OLTP(聯(lián)機(jī)事務(wù)處理)隨機(jī)讀寫语泽。在這種情況下,Oracle的可靠性视卢,系統(tǒng)的負(fù)責(zé)程度又比Hbase低一些踱卵。而且Hbase局限還在于它只有主鍵索引,因此在建模的時候就遇到了問題据过。比如惋砂,在一張表中,很多的列我都想做某種條件的查詢绳锅。但卻只能在主鍵上建快速查詢西饵。所以說,不能籠統(tǒng)的說那種技術(shù)有優(yōu)勢鳞芙。
5眷柔、 Oracle是行式數(shù)據(jù)庫,而Hbase是列式數(shù)據(jù)庫原朝。列式數(shù)據(jù)庫的優(yōu)勢在于數(shù)據(jù)分析這種場景驯嘱。數(shù)據(jù)分析與傳統(tǒng)的OLTP的區(qū)別。數(shù)據(jù)分析喳坠,經(jīng)常是以某個列作為查詢條件鞠评,返回的結(jié)果也經(jīng)常是某一些列,不是全部的列壕鹉。在這種情況下剃幌,行式數(shù)據(jù)庫反應(yīng)的性能就很低效。
行式數(shù)據(jù)庫:Oracle為例晾浴,數(shù)據(jù)文件的基本組成單位:塊/頁负乡。塊中數(shù)據(jù)是按照一行行寫入的。這就存在一個問題脊凰,當(dāng)我們要讀一個塊中的某些列的時候抖棘,不能只讀這些列,必須把這個塊整個的讀入內(nèi)存中,再把這些列的內(nèi)容讀出來钉答。換句話就是:為了讀表中的某些列础芍,必須要把整個表的行全部讀完,才能讀到這些列数尿。這就是行數(shù)據(jù)庫最糟糕的地方仑性。
列式數(shù)據(jù)庫:是以列作為元素存儲的。同一個列的元素會擠在一個塊右蹦。當(dāng)要讀某些列诊杆,只需要把相關(guān)的列塊讀到內(nèi)存中,這樣讀的IO量就會少很多何陆。通常晨汹,同一個列的數(shù)據(jù)元素通常格式都是相近的。這就意味著贷盲,當(dāng)數(shù)據(jù)格式相近的時候淘这,數(shù)據(jù)就可以做大幅度的壓縮。所以巩剖,列式數(shù)據(jù)庫在數(shù)據(jù)壓縮方面有很大的優(yōu)勢铝穷,壓縮不僅節(jié)省了存儲空間,同時也節(jié)省了IO佳魔。(這一點(diǎn)曙聂,可利用在當(dāng)數(shù)據(jù)達(dá)到百萬、千萬級別以后鞠鲜,數(shù)據(jù)查詢之間的優(yōu)化宁脊,提高性能,示場景而定)