天天看點

社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想

從下周開始每周将在釘釘群裡【直播技術分享】和專家面對面【線上回答技術問題】,感興趣的同學加入啊~   每周具體直播時間,請關注釘釘群内群公告。

【号外号外】為了更好的服務咱們HBase開發者,HBase技術社群釘釘企業号大群建立啦:

釘釘直播入群方式:

https://dwz.cn/Fvqv066s

Apache HBase Operator Tools:

https://github.com/apache/hbase-operator-tools

社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想

在學習的時候,我一直保持着記筆記或者做簡單總結的習慣,内容比較随性,但這些内容有助于自己的快速回顧。在技術領域,最好的總結是一個直覺的流程圖,所謂”一圖勝千言”,然後配以簡單的文字說明。但可惜,那時沒有想過寫作公開的技術部落格,周邊也缺乏這樣的氛圍。

幾個月前,正式決定開始寫部落格和公衆号。初衷還是希望能督促自己在業餘時間的學習,當正式開始以後,如下幾點内容感受非常深刻:

  1. “以輸出倒逼輸入”,這就要求每天必須堅持學習。如果寫作隻是将自己知道的内容寫出來,對于我,那将變成一件枯燥而無趣的事情。
  2. 公開的内容對品質會有更高的要求,進一步提高了對學習的要求。
  3. 如果寫作的内容得到其他人的認可,可以帶給自己更多堅持下去的信心。

但頻繁更新卻是一件極其艱難的事情。技術總結内容,通常需要細緻的閱讀源碼細節,如果追求高品質輸出,難以在短時間内快速完成。另外因日常工作方面的原因,自由可支配的時間時常不受控制。

上面這些内容,更多的是自己的幾點感受。希望閱讀了此文的同學們也能開始自己的技術寫作,對于已經開始的,也應該長期堅持下去。

接下來是關于NoSQL技術的一些漫談内容。最初,對于這個公衆号名稱,我曾糾結過一段時間。NoSQL一詞,俨然已過了風頭正盛的時期,甚至聽起來像一個”過時”的概念。關于這個公衆号,主要想探讨如下領域的内容:

  • 分布式KeyValue系統
  • 稀疏矩陣形态的寬列存儲技術
  • 搜尋技術
  • 圖資料庫技術
  • 文檔資料庫技術
  • 時序/時空資料庫技術
  • 多模資料庫技術
  • 分布式索引技術
  • NewSQL技術
  • 分布式計算技術

認真思考一下,也隻有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的設計後全新實作
  • 半關系型模型
  • 支援同步容災
  • 支援廣泛的分布式事務能力

F1: 

  • 基于Spanner建構
  • 分布式SQL查詢能力
  • 支援事務一緻性的二級索引
  • 支援異步的Schema變更
  • 支援樂觀事務
  • 資料變更曆史記錄跟蹤

關于NoSQL與NewSQL,這篇文章《

NewSQL是否是NoSQL的取代者?

》做了更詳細的探讨。這裡僅簡單的羅列一下觀點:

– NoSQL通常指一種非關系型存儲技術,涉及的範圍廣泛,本身與是否具有SQL接口能力無關。

– NewSQL更多是指一種分布式的關系型資料庫技術,典型意義上的NewSQL包括Spanner, CockroachDB, NuoDB以及國内的TiDB,它通常會更加強調分布式事務能力。

NewSQL更多是RDBMS與NoSQL技術結合的一種産物,對于傳統的應用,會更加友好,也具有廣泛的普适性。在可預見的未來,它也一直會有可觀的市場空間。而每一種NoSQL技術更像是一種專業化能力的存在:

  • HBase:稀疏矩陣,基于KeyValue提供了簡單的讀寫接口
  • Elasticsearch:提供分布式搜尋能力
  • Druid:基于事件資料的OLAP能力
  • Neo4j:提供圖資料庫能力
  • OpenTSDB/InfluxDB:提供時序資料庫能力

在”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為例,它同樣支援如下三種模型:

ArrangoDB主要提供了AQL(SQL-Like)接口以及HTTP接口。

多模資料庫像是NoSQL技術的大雜燴,但的确不失為NoSQL技術一個不錯的演進方向。随着公有雲,人工智能,物聯網等行業的快速發展,以及即将到來的5G技術,需要存儲和查詢的資料量也會變得越來越大,相信NoSQL技術會生生不息,一定會取得更廣泛的應用場景。 這也是我堅持在”NoSQL”領域寫技術部落格的一個關鍵原因。

社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想

大家工作學習遇到HBase技術問題,把問題釋出到HBase技術社群論壇http://hbase.group,歡迎大家論壇上面提問留言讨論。想了解更多HBase技術關注HBase技術社群公衆号(微信号:hbasegroup),非常歡迎大家積極投稿。

社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想

關于"NoSQL漫談"

NoSQL主要泛指一些分布式的非關系型資料存儲技術,這其實是一個非常廣泛的定義,可以說涉及到分布式系統技術的方方面面。随着人工智能、物聯網、大資料、雲計算以及區塊鍊技術的不斷普及,NoSQL技術将會發揮越來越大的價值。

請長按下面的二維碼關注我們

社群直播 | NoSQL漫談:堅持寫HBase技術部落格的感想

更多NoSQL技術分享,敬請期待!

HBase技術交流社群 - 阿裡官方“HBase生态+Spark社群大群”點選加入: