社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想
從下週開始每週將在釘釘群裡【直播技術分享】和專家面對面【線上回答技術問題】,感興趣的同學加入啊~ 每週具體直播時間,請關注釘釘群內群公告。
【號外號外】為了更好的服務咱們HBase開發者,HBase技術社群釘釘企業號大群建立啦:
釘釘直播入群方式:
https://dwz.cn/Fvqv066s
Apache HBase Operator Tools:
https://github.com/apache/hbase-operator-tools
在學習的時候,我一直保持著記筆記或者做簡單總結的習慣,內容比較隨性,但這些內容有助於自己的快速回顧。在技術領域,最好的總結是一個直觀的流程圖,所謂”一圖勝千言”,然後配以簡單的文字說明。但可惜,那時沒有想過寫作公開的技術部落格,周邊也缺乏這樣的氛圍。
幾個月前,正式決定開始寫部落格和公眾號。初衷還是希望能督促自己在業餘時間的學習,當正式開始以後,如下幾點內容感受非常深刻:
-
“ 以輸出倒逼輸入” ,這就要求每天必須堅持學習。如果寫作只是將自己知道的內容寫出來,對於我,那將變成一件枯燥而無趣的事情。
-
公開的內容對質量會有更高的要求,進一步提高了對學習的要求。
-
如果寫作的內容得到其他人的認可,可以帶給自己更多堅持下去的信心。
但頻繁更新卻是一件極其艱難的事情。技術總結內容,通常需要細緻的閱讀原始碼細節,如果追求高質量輸出,難以在短時間內快速完成。另外因日常工作方面的原因,自由可支配的時間時常不受控制。
上面這些內容,更多的是自己的幾點感受。希望閱讀了此文的同學們也能開始自己的技術寫作,對於已經開始的,也應該長期堅持下去。
接下來是關於NoSQL技術的一些漫談內容。最初,對於這個公眾號名稱,我曾糾結過一段時間。NoSQL一詞,儼然已過了風頭正盛的時期,甚至聽起來像一個”過時”的概念。關於這個公眾號,主要想探討如下領域的內容:
認真思考一下,也只有NoSQL一詞可將其儘可能的囊括起來。每一種技術,都有自己獨特的精彩實現內容,但更多的是一些通用的技術,如RPC通訊技術,索引技術,分散式共識演算法,MVCC, SQL能力等等。
對比於NoSQL,NewSQL聽起來像是一個更新潮的概念。Google對於NoSQL與NewSQL技術架構的影響可謂深遠,我們先來看看Google從Bigtable到Spanner/F1的演進過程,下面列舉了每一種技術的設計關鍵點:
Bigtable:
-
LSM-Tree架構
-
Auto-Scaling
-
基於分散式檔案系統GFS/Colossus
-
稀疏矩陣
-
Schema less設計
-
行級事務
-
非同步容災(Paper中提及但最終未實現)
Megastore:
-
基於Bigtable構建
-
在NoSQL與RDBMS之間做了妥協,支援半關係型模型
-
支援 SQL 介面
-
支援多種 二級索引 型別
-
基於Paxos協議實現了跨DataCenters間的 同步容災
-
支援Entity Group級別的跨行事務
Spanner:
-
參考了Bigtable的設計後全新實現
-
Auto-Scaling
-
半關係型模型
-
支援 SQL 介面
-
支援 同步容災
-
支援廣泛的 分散式事務能力
F1:
-
基於Spanner構建
-
分散式SQL查詢能力
-
支援事務一致性的 二級索引
-
支援非同步的 Schema變更
-
支援 樂觀事務
-
資料 變更歷史記錄 跟蹤
關於NoSQL與NewSQL,這篇文章《 ofollow,noindex" target="_blank"> NewSQL是否是NoSQL的取代者? 》做了更詳細的探討。這裡僅簡單的羅列一下觀點:
– NoSQL 通常指一種非關係型儲存技術,涉及的範圍廣泛,本身與是否具有SQL介面能力無關。
– NewSQL 更多是指一種分散式的關係型資料庫技術,典型意義上的NewSQL包括Spanner, CockroachDB, NuoDB以及國內的TiDB,它通常會更加強調分散式事務能力。
NewSQL更多是RDBMS與NoSQL技術結合的一種產物,對於傳統的應用,會更加友好,也具有廣泛的普適性。在可預見的未來,它也一直會有可觀的市場空間。而每一種NoSQL技術更像是一種專業化能力的存在:
在”nosql-database.org”這個網站中,收錄了大量的NoSQL技術,大家可以參考一下。
如果每一種技術只提供一種專業的能力,那就帶來了通用性方面的問題,同一份資料時常需要在不同的系統中各複製一份是一個無法忍受的問題。從應用的角度來看,大家更期望一種”One Size Fit More/All”的技術,但這在技術實現上幾乎不可能。 多模資料庫 似乎是一個不錯的答案,它的設計理念為:
“ 基於一套儲存引擎,提供多種模型,多種訪問介面 ”
以當前火熱的AZure Cosmos DB為例,支援如下三種模型:
– Document
– Graph
– KeyValue
AZure Cosmos DB基於上面三種模型,提供了多語言(Java/Python/Node.js/.NET)訪問介面,並且提供了MongoDB Document API以及基於SQL的訪問介面。
再以ArrangoDB為例,它同樣支援如下三種模型:
– Document
– Graph
– KeyValue
ArrangoDB主要提供了AQL(SQL-Like)介面以及HTTP介面。
多模資料庫像是NoSQL技術的大雜燴,但的確不失為NoSQL技術一個不錯的演進方向。隨著公有云,人工智慧,物聯網等行業的快速發展,以及即將到來的5G技術,需要儲存和查詢的資料量也會變得越來越大,相信NoSQL技術會生生不息,一定會取得更廣泛的應用場景。 這也是我堅持在”NoSQL”領域寫技術部落格的一個關鍵原因。

大家工作學習遇到HBase技術問題,把問題釋出到HBase技術社群論壇http://hbase.group,歡迎大家論壇上面提問留言討論。想了解更多HBase技術關注HBase技術社群公眾號(微信號:hbasegroup),非常歡迎大家積極投稿。
關於"NoSQL漫談"
NoSQL主要泛指一些分散式的 非關係型資料儲存 技術,這其實是一個 非常廣泛 的定義,可以說涉及到分散式系統技術的方方面面。隨著 人工智慧 、 物聯網 、 大資料 、 雲端計算 以及 區塊鏈 技術的不斷普及, NoSQL 技術將會發揮越來越大的價值。
請長按下面的二維碼關注我們
更多NoSQL技術分享,敬請期待!
HBase技術交流社群 - 阿里官方“HBase生態+Spark社群大群”點選加入: https://dwz.cn/Fvqv066s