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