《在NoSQL空間里的多種語言》要點:
本文介紹了在NoSQL空間里的多種語言,希望對您有用。如果有疑問,可以聯系我們。
關系數據庫已經存在很長時間,通常開發人員傾向于經常使用它們,并很熟悉使用它們所提供的特性集.關系數據庫的設計是從用戶隱藏內部中做的一項偉大的工作.像數據如何存儲在磁盤上的問題、如安在底層寫入路徑,以及數據庫緩存問題和如何經常使用過于先進的常規數據庫.
我們生活在一個數據密集的世界,在過去的幾年我們見證了社會網絡和物聯網的擴張,一切都連接到了互聯網,并且一切都會發出和接收事件.在關系世界中,數據需要以不同的方式處理.我們看到越來越多的哀求只是為了存儲非結構化數據存儲的值.截至2012年,每一天以2.5艾字節(2.5×1018)被存儲,盡管世界上90%的存儲數據已經聚集在過去的兩年.這只是一些原因,我們需要一個思維的轉變,關于存儲和為什么NoSQL不再是炒作.
在NoSQL的世界里,事情有點不同.數據庫是不通用的,他們通常用來辦理一個特定的用例.他們工作得很好,但并不那么優秀,也會有其他問題.他們通常選擇大數據項目,我們需要較高的、非功能的需求,并且它幾乎不可能不知道內部使用NoSQL數據庫.
NoSQL空間
在NoSQL空間中,主要分為四個類型:文檔數據庫、鍵值存儲、列數據庫和圖形數據庫.
文檔數據庫可能是最受歡迎的數據庫類型了,主要是MongoDB在DB-Engine rankings中排出的所有數據庫排名中排在前十,在以NoSQL數據庫為代表中排名第一.MongoDB有豐富的特性,具有主/從內置的碎片復制和使用內存映射文件的數據存儲.它是偉大的原型,由于存儲和查詢數據時的靈活性,在大多數地方它是一個很好的替代品.但PostgreSQL或其他RDBMS適合但預定義模式會阻礙你的.這種類型的其他數據庫都是CouchDB文檔存儲與主主復制和最終一致性、Couchbase兩個鍵值和文檔存儲,提供JSON API是有用的作為客戶端-服務器應用法式的存儲引擎.
當你想到鍵值存儲時,可以考慮分布式執行的地圖.Redis和HazelCast就是這種類型的數據庫.Redis是一個速度極快的數據庫.它是用C編寫的,具有自動故障轉移的主從復制,它是快速變化的數據與一個可預見的數據庫大小的最佳選擇.使用的一個例子可以是會話存儲,為電子商務網站購物車,或者實時分析.HazelCast是內存中的分布式存儲和計算平臺,提供開箱即用的分布式實現許多API,Java開發人員熟悉的分布式實現,如地圖、集、列表、信號量、執行等,它可以被視為一個插件替換工具,好比像EhCache、Redis、JCache.
列族數據庫(Column family)包括相關數據列,存儲為鍵值對.這種類型最受歡迎的數據庫是Cassandra和HBase.Cassandra起源于亞馬遜的DynamoDB和Google的BigTable,它非常適合存儲大量數據.所有節點都是平等的,無共享架構,無主無單點故障.CQL(Cassandra查詢語言)類似于SQL.它通常應用于網絡分析、計數、事務日志和存儲的傳感器數據.HBase是Hadoop框架的一部分,使用HDFS文件系統作為存儲,可應用于Hadoop的Map/Reduce、日志數據的分析,以及在任何地方掃描巨大,也需要加入二維表.
在圖形數據庫中,兩個實體之間的關系比實體本身更重要.這種類型主要的代表是Neo4J和TitanDB.Neo4J為圖形數據庫是用Java編寫的,且使用的是基于模式匹配的查詢語言,但也可以使用“Gremlin”圖遍歷語言.它有很好的圖形風格,具有著豐富和復雜且相互關聯的數據,如搜索路線、社會關系、公共交通、道路地圖,或網絡拓撲結構.TitanDB是一個可伸縮的圖表框架優化存儲,以及查詢包括數以千億計的頂點和邊的跨多機集群分布圖.它可以使用不同的存儲后端:Cassandra、HBase、BerkeleyDB,和為主流框架(Hadoop、Spark、ElasticSearch、Solr)整合提供了巨大支持.
多種語言的持久性辦法
這些天并不少見的是,在同一項目中的關系和非關系數據庫組合,甚而不同的數據庫相同類型的組合.微服務架構影響很大,因為每個小服務是其數據的所有者,而且API和服務分離背后所暗藏的一切都是基于使用案例的,所以很自然地選擇它作為最佳存儲.
Martin Fowler的博客中有一個多存儲引擎的應用.用戶會話,作為臨時數據快速優化的頻繁讀取,放置在Redis中.財務數據,則是自然關系存儲在關系數據庫中的報告.購物車有會議的類似性質,具有臨時快速拜訪數據,所以它存儲在鍵值存儲區.作為圖形數據庫Neo4j推薦引擎的大力支持,用戶相似性是推薦給客戶的重要因素,這是選擇的主要原因.產品目錄有文檔的性質,有很多動態查詢這些數據的標準,在用例中MongoDB的靈活性和速度是很棒的.Cassandra的殺手锏是時間序列數據,它有Spark和Solr的大整合,因此它是分析和用戶活動日志的最佳選擇.
總結
多語種的支持并不是免費的午餐,它是有代價的,代價是系統的復雜性.幾年前,它就足夠了解一種編程語言,為一個存儲引擎構建一個系統的.但現在你需要通曉各方面的數種語言.這就是為什么你需要熟悉每個選擇的成本,并引入一個新的技術,只有當它的好處遠高于它帶來表的復雜性.最可怕的事情是,現在每個人都在談論語言的辦法,目的只是為了新的技術.
因為NoSQL的本質是建立辦理一個具體的用例,準備挖得更深一些,且掌握數據庫的功能.大數據和分布式的系統的問題不同于單個實例的問題,并不熟悉的技術可能會導致更大范圍內的問題.做好功課,探索可能的辦理你的問題,做出決定,并熟悉你所選擇的工具.
原文:Polyglot Persistence in NoSQL Space
編纂:孫思,關注數據庫,歡迎加入CSDN 數據庫討論QQ群:123038767.尋求報道或投稿,請聯系 sunsi@csdn.net
由CSDN重磅打造的2016中國云計算技術大會(CCTC 2016)將于5月13日-15日在北京舉辦,大會特設“中國Spark技術峰會”、“Container技術峰會”、“OpenStack技術峰會”、“大數據核心技術與應用實戰峰會”等四大技術主題峰會,以及“云計算核心技術架構”、“云計算平臺構建與實踐”等專場技術論壇.80+位一線互聯網公司的技術專家將到場分享他們在云計算、大數據領域的技術實踐,目前大會剩票不多,欲購趕快.詳情請點擊CCTC 2016大會官網.
歡迎參與《在NoSQL空間里的多種語言》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9337.html