《白話大數(shù)據(jù) | 從紅樓夢看NoSQL數(shù)據(jù)庫》要點(diǎn):
本文介紹了白話大數(shù)據(jù) | 從紅樓夢看NoSQL數(shù)據(jù)庫,希望對您有用。如果有疑問,可以聯(lián)系我們。
作者:吳大迪
好吧,相信大家通過我上一篇關(guān)于Hadoop的文章,也都大概知道Hadoop是個(gè)什么鬼了(白話大數(shù)據(jù)|Hadoop究竟是什么鬼).那么小編這次就給大家挖一挖著名的大數(shù)據(jù)核心技術(shù)之一:NoSQL數(shù)據(jù)庫吧!
就像衣服要放進(jìn)衣柜一樣,數(shù)據(jù)就要放進(jìn)數(shù)據(jù)庫,數(shù)據(jù)庫是管理數(shù)據(jù)的工具,人類對數(shù)據(jù)的管理真可謂是歷史悠久~ 從古人用竹子記錄到如今存入電腦,這些都是對數(shù)據(jù)的管理,在電視劇《瑯琊榜》中,就展現(xiàn)了古人精密的數(shù)據(jù)分類儲(chǔ)存系統(tǒng).
但是小編認(rèn)為,在數(shù)據(jù)庫誕生以前,數(shù)據(jù)的管理都還處于較為低級(jí)的階段,直到數(shù)據(jù)庫系統(tǒng)的出現(xiàn).數(shù)據(jù)庫的誕生數(shù)據(jù)庫其實(shí)也挺年輕的,也就60多歲吧.初生的事物總是有較快的發(fā)展,從最原始的數(shù)據(jù)庫誕生到早期數(shù)據(jù)庫系統(tǒng)的建立,不過短短十年而已.早期的數(shù)據(jù)庫系統(tǒng)以IBM公司開發(fā)的IMS層次性數(shù)據(jù)庫最為著名(下圖夠不夠有層次啊~ 感覺眼淚都要出來了)
該數(shù)據(jù)系統(tǒng)結(jié)構(gòu)簡單但不能準(zhǔn)確反映數(shù)據(jù)之間的關(guān)系,實(shí)際操作起來又很復(fù)雜,因而這個(gè)數(shù)據(jù)庫系統(tǒng)最終消逝在歷史長流之中,小編就不對其多講了.
當(dāng)今使用最多數(shù)據(jù)庫——關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫組起源于IBM的研究院E.F.Codd提出的關(guān)系模型的概念,這也成為了關(guān)系型數(shù)據(jù)庫的基礎(chǔ).關(guān)系模型由關(guān)系和關(guān)系模式組成,關(guān)系模式是型,關(guān)系是它的值.其實(shí)所謂關(guān)系模型其實(shí)就是一張表!
舉個(gè)例子:
紅樓夢里的人物關(guān)系如果用數(shù)據(jù)庫來存儲(chǔ)的話,是這樣的:
簡單地說關(guān)系型數(shù)據(jù)庫就是能做好多好多張表(配偶表、父子(女)表、母子(女)表......),把表放在一起構(gòu)成一個(gè)數(shù)據(jù)庫.
再配合簡單易懂的操作語句(SQL),用于對數(shù)據(jù)的查找、添加、刪除和改動(dòng),這些就構(gòu)成了關(guān)系型數(shù)據(jù)庫~ 關(guān)系型數(shù)據(jù)庫總體說來,操作簡單,理論基礎(chǔ)非常扎實(shí).
賈政生完探春以后又生了寶玉怎么辦?數(shù)據(jù)庫回答:添加一行唄上面那一堆表示新手建的.老手會(huì)這樣建立表格:
是不是更加清楚了?雖然關(guān)系型數(shù)據(jù)庫很好用,但它一切都是建立在關(guān)系之上的.如果關(guān)系變多了,比如除了上述父親、母親等等屬性外,還需要增加一條大女兒的屬性,那么程序猿哥哥就會(huì)覺得你好討厭呀,為什么不早點(diǎn)說啦...表都建好了,牽一發(fā)而動(dòng)千鈞又或者除了存儲(chǔ)這些文字描述外,你還要存一張賈政的照片,以及修過圖的照片......程序猿哥哥說:咱做不了,洗洗睡吧
后起之秀——NoSQL數(shù)據(jù)庫
NoSQL是泛指非關(guān)系型數(shù)據(jù)庫,全名叫Not Only SQL(不僅僅是SQL),所以說NoSQL是一場數(shù)據(jù)庫的革命性運(yùn)動(dòng),旨在打破關(guān)系型數(shù)據(jù)庫統(tǒng)治的格局,解決關(guān)系型數(shù)據(jù)庫所解決不了的問題.
1.NoSQL是一類數(shù)據(jù)庫的統(tǒng)稱,不同的NoSQL是為了解決不同問題而開發(fā)的.著名的NoSQL數(shù)據(jù)庫有MongDB, HBase.其中Facebook是HBase的最大 用戶.
2.NoSQL有一個(gè)共同的特點(diǎn),就是能儲(chǔ)存海量的數(shù)據(jù),當(dāng)然還是用我們熟知的分布式的思想.(戳這里回憶什么是分布式)NoSQL沒有復(fù)雜的關(guān)系模式,表示可以拆分的,關(guān)系型數(shù)據(jù)庫是無法拆分的,因?yàn)椴鸱謺?huì)破壞關(guān)系模式.
3.在數(shù)據(jù)如此之多的今天,我們都把數(shù)據(jù)存進(jìn)表中,那么查詢效率太低了.像紅樓夢里面人物數(shù)量是比較少的,實(shí)際數(shù)據(jù)庫中上億條數(shù)據(jù),查起來太慢啦.于是有些NoSQL(例如HBase等)為這種問題想出的方法就是KV儲(chǔ)存
4.對數(shù)據(jù)的儲(chǔ)存類型沒有要求,什么都能往里面塞,這也是NoSQL可以儲(chǔ)存圖像等復(fù)雜文件的原因.其中有專業(yè)圖儲(chǔ)存的Neo4J,文檔儲(chǔ)存比較占優(yōu)勢的MongoDB,其他的還有Cassandra等.
知道這段你們又不想看了,還是舉個(gè)栗子吧,依舊以上面紅樓夢為例
這張表是我們原先的存儲(chǔ)模式,這里面的種種問題剛才也講了.那么NoSQL是怎么解決的呢?
HBase中存儲(chǔ)是key-value存儲(chǔ).Key的組成包括了rowkey+屬性列名+數(shù)據(jù)寫入時(shí)間戳,也就是上圖的黃色+藍(lán)色+數(shù)據(jù)寫入時(shí)間戳.Value則是中間對應(yīng)的白色框的值.
例如賈赦的信息,是這樣一條一條存好的......
然后開始存賈政的....
存完了以后發(fā)現(xiàn),哎呀,原來賈政還有女兒啊.....如果再關(guān)系型數(shù)據(jù)庫里,就很麻煩,但是在HBase中,太簡單啦,直接加一條進(jìn)去就好啦.不管你有幾個(gè)女兒,幾個(gè)兒子,想生就生,想加就加給寶玉再生個(gè)弟弟妹妹把!!
又過了一天發(fā)現(xiàn),哎呀,賈政生了那么多子女,怎么會(huì)只有40歲呢?再去檢查看看,噢,原來是45歲啦.程序猿哥哥拍著胸脯說,這好辦,就交給我吧!!刷刷刷,一條帶有新的時(shí)間戳的記錄就這樣加進(jìn)去了.下次查詢賈政年齡的時(shí)候,系統(tǒng)只會(huì)讀取最近插入的那條記錄,也就是45歲.
在大數(shù)據(jù)中,所有的數(shù)據(jù)是這樣一條一條存儲(chǔ)在Hbase數(shù)據(jù)庫中噠!但是開源HBase中,只能對Key這一列進(jìn)行查找,也就是只能以“賈政”或者“賈赦”進(jìn)行查詢.如果想以“賈代善”為關(guān)鍵詞進(jìn)行查詢,那就會(huì)需要很長時(shí)間.
另外,因?yàn)閿?shù)據(jù)庫采用了KV存儲(chǔ),為了充分利用大數(shù)據(jù)技術(shù),程序猿哥哥不僅要適應(yīng)新的存儲(chǔ)方式,還需要把舊的數(shù)據(jù)庫轉(zhuǎn)變使用方式,這是一項(xiàng)非常非常非常非常非常浩大的工程.
星環(huán)的程序猿小哥們發(fā)揮了聰明的才智,他們做了幾件事情,分分鐘把廣大程序猿從水深火熱中解救出來
1. 利用星環(huán)Hyperbase,程序猿哥哥完全可以按照傳統(tǒng)數(shù)據(jù)庫方式進(jìn)行代碼編寫,Hyperbase提供JDBC/ODBC接口,支持SQL直接操作.對于非常急需大數(shù)據(jù)存儲(chǔ)技術(shù)的程序猿哥哥,猶如40度的天氣下送來了一臺(tái)中央空調(diào).
2. 無論是從key,還是從屬性列,都可以快速查詢.
今天的故事講完了,咱們下期見咯~~
文章來源36大數(shù)據(jù),www.36dsj.com ,微信號(hào)dashuju36 ,36大數(shù)據(jù)是一個(gè)專注大數(shù)據(jù)創(chuàng)業(yè)、大數(shù)據(jù)技術(shù)與分析、大數(shù)據(jù)商業(yè)與應(yīng)用的網(wǎng)站.分享大數(shù)據(jù)的干貨教程和大數(shù)據(jù)應(yīng)用案例,提供大數(shù)據(jù)分析工具和資料下載,解決大數(shù)據(jù)產(chǎn)業(yè)鏈上的創(chuàng)業(yè)、技術(shù)、分析、商業(yè)、應(yīng)用等問題,為大數(shù)據(jù)產(chǎn)業(yè)鏈上的公司和數(shù)據(jù)行業(yè)從業(yè)人員提供支持與服務(wù).
End.
歡迎參與《白話大數(shù)據(jù) | 從紅樓夢看NoSQL數(shù)據(jù)庫》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10135.html