特點(diǎn):
創(chuàng)新互聯(lián)專注骨干網(wǎng)絡(luò)服務(wù)器租用十載,服務(wù)更有保障!服務(wù)器租用,四川雅安服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。
它們可以處理超大量的數(shù)據(jù)。
它們運(yùn)行在便宜的PC服務(wù)器集群上。
PC集群擴(kuò)充起來非常方便并且成本很低,避免了“sharding”操作的復(fù)雜性和成本。
它們擊碎了性能瓶頸。
NoSQL的支持者稱,通過NoSQL架構(gòu)可以省去將Web或Java應(yīng)用和數(shù)據(jù)轉(zhuǎn)換成SQL友好格式的時(shí)間,執(zhí)行速度變得更快。
“SQL并非適用于所有的程序代碼,” 對于那些繁重的重復(fù)操作的數(shù)據(jù),SQL值得花錢。但是當(dāng)數(shù)據(jù)庫結(jié)構(gòu)非常簡單時(shí),SQL可能沒有太大用處。
沒有過多的操作。
雖然NoSQL的支持者也承認(rèn)關(guān)系數(shù)據(jù)庫提供了無可比擬的功能集合,而且在數(shù)據(jù)完整性上也發(fā)揮絕對穩(wěn)定,他們同時(shí)也表示,企業(yè)的具體需求可能沒有那么多。
Bootstrap支持
因?yàn)镹oSQL項(xiàng)目都是開源的,因此它們?nèi)狈?yīng)商提供的正式支持。這一點(diǎn)它們與大多數(shù)開源項(xiàng)目一樣,不得不從社區(qū)中尋求支持。
優(yōu)點(diǎn):
易擴(kuò)展
NoSQL數(shù)據(jù)庫種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴(kuò)展。也無形之間,在架構(gòu)的層面上帶來了可擴(kuò)展的能力。
大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。一般MySQL使用 Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的 Cache是記錄級的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來說就要性能高很多了。
靈活的數(shù)據(jù)模型
NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時(shí)可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直就是一個(gè)噩夢。這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)代尤其明顯。
高可用
NoSQL在不太影響性能的情況,就可以方便的實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過復(fù)制模型也能實(shí)現(xiàn)高可用。
主要應(yīng)用:
Apache HBase
這個(gè)大數(shù)據(jù)管理平臺建立在谷歌強(qiáng)大的BigTable管理引擎基礎(chǔ)上。作為具有開源、Java編碼、分布式多個(gè)優(yōu)勢的數(shù)據(jù)庫,Hbase最初被設(shè)計(jì)應(yīng)用于Hadoop平臺,而這一強(qiáng)大的數(shù)據(jù)管理工具,也被Facebook采用,用于管理消息平臺的龐大數(shù)據(jù)。
Apache Storm
用于處理高速、大型數(shù)據(jù)流的分布式實(shí)時(shí)計(jì)算系統(tǒng)。Storm為Apache Hadoop添加了可靠的實(shí)時(shí)數(shù)據(jù)處理功能,同時(shí)還增加了低延遲的儀表板、安全警報(bào),改進(jìn)了原有的操作方式,幫助企業(yè)更有效率地捕獲商業(yè)機(jī)會、發(fā)展新業(yè)務(wù)。
Apache Spark
該技術(shù)采用內(nèi)存計(jì)算,從多迭代批量處理出發(fā),允許將數(shù)據(jù)載入內(nèi)存做反復(fù)查詢,此外還融合數(shù)據(jù)倉庫、流處理和圖計(jì)算等多種計(jì)算范式,Spark用Scala語言實(shí)現(xiàn),構(gòu)建在HDFS上,能與Hadoop很好的結(jié)合,而且運(yùn)行速度比MapReduce快100倍。
Apache Hadoop
該技術(shù)迅速成為了大數(shù)據(jù)管理標(biāo)準(zhǔn)之一。當(dāng)它被用來管理大型數(shù)據(jù)集時(shí),對于復(fù)雜的分布式應(yīng)用,Hadoop體現(xiàn)出了非常好的性能,平臺的靈活性使它可以運(yùn)行在商用硬件系統(tǒng),它還可以輕松地集成結(jié)構(gòu)化、半結(jié)構(gòu)化和甚至非結(jié)構(gòu)化數(shù)據(jù)集。
Apache Drill
你有多大的數(shù)據(jù)集?其實(shí)無論你有多大的數(shù)據(jù)集,Drill都能輕松應(yīng)對。通過支持HBase、Cassandra和MongoDB,Drill建立了交互式分析平臺,允許大規(guī)模數(shù)據(jù)吞吐,而且能很快得出結(jié)果。
Apache Sqoop
也許你的數(shù)據(jù)現(xiàn)在還被鎖定于舊系統(tǒng)中,Sqoop可以幫你解決這個(gè)問題。這一平臺采用并發(fā)連接,可以將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫系統(tǒng)方便地轉(zhuǎn)移到Hadoop中,可以自定義數(shù)據(jù)類型以及元數(shù)據(jù)傳播的映射。事實(shí)上,你還可以將數(shù)據(jù)(如新的數(shù)據(jù))導(dǎo)入到HDFS、Hive和Hbase中。
Apache Giraph
這是功能強(qiáng)大的圖形處理平臺,具有很好可擴(kuò)展性和可用性。該技術(shù)已經(jīng)被Facebook采用,Giraph可以運(yùn)行在Hadoop環(huán)境中,可以將它直接部署到現(xiàn)有的Hadoop系統(tǒng)中。通過這種方式,你可以得到強(qiáng)大的分布式作圖能力,同時(shí)還能利用上現(xiàn)有的大數(shù)據(jù)處理引擎。
Cloudera Impala
Impala模型也可以部署在你現(xiàn)有的Hadoop群集上,監(jiān)視所有的查詢。該技術(shù)和MapReduce一樣,具有強(qiáng)大的批處理能力,而且Impala對于實(shí)時(shí)的SQL查詢也有很好的效果,通過高效的SQL查詢,你可以很快的了解到大數(shù)據(jù)平臺上的數(shù)據(jù)。
Gephi
它可以用來對信息進(jìn)行關(guān)聯(lián)和量化處理,通過為數(shù)據(jù)創(chuàng)建功能強(qiáng)大的可視化效果,你可以從數(shù)據(jù)中得到不一樣的洞察力。Gephi已經(jīng)支持多個(gè)圖表類型,而且可以在具有上百萬個(gè)節(jié)點(diǎn)的大型網(wǎng)絡(luò)上運(yùn)行。Gephi具有活躍的用戶社區(qū),Gephi還提供了大量的插件,可以和現(xiàn)有系統(tǒng)完美的集成到一起,它還可以對復(fù)雜的IT連接、分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)、數(shù)據(jù)流等信息進(jìn)行可視化分析。
MongoDB
這個(gè)堅(jiān)實(shí)的平臺一直被很多組織推崇,它在大數(shù)據(jù)管理上有極好的性能。MongoDB最初是由DoubleClick公司的員工創(chuàng)建,現(xiàn)在該技術(shù)已經(jīng)被廣泛的應(yīng)用于大數(shù)據(jù)管理。MongoDB是一個(gè)應(yīng)用開源技術(shù)開發(fā)的NoSQL數(shù)據(jù)庫,可以用于在JSON這樣的平臺上存儲和處理數(shù)據(jù)。目前,紐約時(shí)報(bào)、Craigslist以及眾多企業(yè)都采用了MongoDB,幫助他們管理大型數(shù)據(jù)集。(Couchbase服務(wù)器也作為一個(gè)參考)。
十大頂尖公司:
Amazon Web Services
Forrester將AWS稱為“云霸主”,談到云計(jì)算領(lǐng)域的大數(shù)據(jù),那就不得不提到亞馬遜。該公司的Hadoop產(chǎn)品被稱為EMR(Elastic Map Reduce),AWS解釋這款產(chǎn)品采用了Hadoop技術(shù)來提供大數(shù)據(jù)管理服務(wù),但它不是純開源Hadoop,經(jīng)過修改后現(xiàn)在被專門用在AWS云上。
Forrester稱EMR有很好的市場前景。很多公司基于EMR為客戶提供服務(wù),有一些公司將EMR應(yīng)用于數(shù)據(jù)查詢、建模、集成和管理。而且AWS還在創(chuàng)新,F(xiàn)orrester稱未來EMR可以基于工作量的需要自動(dòng)縮放調(diào)整大小。亞馬遜計(jì)劃為其產(chǎn)品和服務(wù)提供更強(qiáng)大的EMR支持,包括它的RedShift數(shù)據(jù)倉庫、新公布的Kenesis實(shí)時(shí)處理引擎以及計(jì)劃中的NoSQL數(shù)據(jù)庫和商業(yè)智能工具。不過AWS還沒有自己的Hadoop發(fā)行版。
Cloudera
Cloudera有開源Hadoop的發(fā)行版,這個(gè)發(fā)行版采用了Apache Hadoop開源項(xiàng)目的很多技術(shù),不過基于這些技術(shù)的發(fā)行版也有很大的進(jìn)步。Cloudera為它的Hadoop發(fā)行版開發(fā)了很多功能,包括Cloudera管理器,用于管理和監(jiān)控,以及名為Impala的SQL引擎等。Cloudera的Hadoop發(fā)行版基于開源Hadoop,但也不是純開源的產(chǎn)品。當(dāng)Cloudera的客戶需要Hadoop不具備的某些功能時(shí),Cloudera的工程師們就會實(shí)現(xiàn)這些功能,或者找一個(gè)擁有這項(xiàng)技術(shù)的合作伙伴。Forrester表示:“Cloudera的創(chuàng)新方法忠于核心Hadoop,但因?yàn)槠淇蓪?shí)現(xiàn)快速創(chuàng)新并積極滿足客戶需求,這一點(diǎn)使它不同于其他那些供應(yīng)商?!蹦壳?,Cloudera的平臺已經(jīng)擁有200多個(gè)付費(fèi)客戶,一些客戶在Cloudera的技術(shù)支持下已經(jīng)可以跨1000多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)對PB級數(shù)據(jù)的有效管理。
Hortonworks
和Cloudera一樣,Hortonworks是一個(gè)純粹的Hadoop技術(shù)公司。與Cloudera不同的是,Hortonworks堅(jiān)信開源Hadoop比任何其他供應(yīng)商的Hadoop發(fā)行版都要強(qiáng)大。Hortonworks的目標(biāo)是建立Hadoop生態(tài)圈和Hadoop用戶社區(qū),推進(jìn)開源項(xiàng)目的發(fā)展。Hortonworks平臺和開源Hadoop聯(lián)系緊密,公司管理人員表示這會給用戶帶來好處,因?yàn)樗梢苑乐贡还?yīng)商套牢(如果Hortonworks的客戶想要離開這個(gè)平臺,他們可以輕松轉(zhuǎn)向其他開源平臺)。這并不是說Hortonworks完全依賴開源Hadoop技術(shù),而是因?yàn)樵摴緦⑵渌虚_發(fā)的成果回報(bào)給了開源社區(qū),比如Ambari,這個(gè)工具就是由Hortonworks開發(fā)而成,用來填充集群管理項(xiàng)目漏洞。Hortonworks的方案已經(jīng)得到了Teradata、Microsoft、Red Hat和SAP這些供應(yīng)商的支持。
IBM
當(dāng)企業(yè)考慮一些大的IT項(xiàng)目時(shí),很多人首先會想到IBM。IBM是Hadoop項(xiàng)目的主要參與者之一,F(xiàn)orrester稱IBM已有100多個(gè)Hadoop部署,它的很多客戶都有PB級的數(shù)據(jù)。IBM在網(wǎng)格計(jì)算、全球數(shù)據(jù)中心和企業(yè)大數(shù)據(jù)項(xiàng)目實(shí)施等眾多領(lǐng)域有著豐富的經(jīng)驗(yàn)?!癐BM計(jì)劃繼續(xù)整合SPSS分析、高性能計(jì)算、BI工具、數(shù)據(jù)管理和建模、應(yīng)對高性能計(jì)算的工作負(fù)載管理等眾多技術(shù)?!?/p>
Intel
和AWS類似,英特爾不斷改進(jìn)和優(yōu)化Hadoop使其運(yùn)行在自己的硬件上,具體來說,就是讓Hadoop運(yùn)行在其至強(qiáng)芯片上,幫助用戶打破Hadoop系統(tǒng)的一些限制,使軟件和硬件結(jié)合的更好,英特爾的Hadoop發(fā)行版在上述方面做得比較好。Forrester指出英特爾在最近才推出這個(gè)產(chǎn)品,所以公司在未來還有很多改進(jìn)的可能,英特爾和微軟都被認(rèn)為是Hadoop市場上的潛力股。
MapR Technologies
MapR的Hadoop發(fā)行版目前為止也許是最好的了,不過很多人可能都沒有聽說過。Forrester對Hadoop用戶的調(diào)查顯示,MapR的評級最高,其發(fā)行版在架構(gòu)和數(shù)據(jù)處理能力上都獲得了最高分。MapR已將一套特殊功能融入其Hadoop發(fā)行版中。例如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、災(zāi)難恢復(fù)以及高可用性功能。Forrester說MapR在Hadoop市場上沒有Cloudera和Hortonworks那樣的知名度,MapR要成為一個(gè)真正的大企業(yè),還需要加強(qiáng)伙伴關(guān)系和市場營銷。
1. CouchDB
所用語言: Erlang
特點(diǎn):DB一致性,易于使用
使用許可: Apache
協(xié)議: HTTP/REST
雙向數(shù)據(jù)復(fù)制,
持續(xù)進(jìn)行或臨時(shí)處理,
處理時(shí)帶沖突檢查,
因此,采用的是master-master復(fù)制(見編注2)
MVCC – 寫操作不阻塞讀操作
可保存文件之前的版本
Crash-only(可靠的)設(shè)計(jì)
需要不時(shí)地進(jìn)行數(shù)據(jù)壓縮
視圖:嵌入式 映射/減少
格式化視圖:列表顯示
支持進(jìn)行服務(wù)器端文檔驗(yàn)證
支持認(rèn)證
根據(jù)變化實(shí)時(shí)更新
支持附件處理
因此, CouchApps(獨(dú)立的 js應(yīng)用程序)
需要 jQuery程序庫
最佳應(yīng)用場景:適用于數(shù)據(jù)變化較少,執(zhí)行預(yù)定義查詢,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)的應(yīng)用程序。適用于需要提供數(shù)據(jù)版本支持的應(yīng)用程序。
例如: CRM、CMS系統(tǒng)。 master-master復(fù)制對于多站點(diǎn)部署是非常有用的。
(編注2:master-master復(fù)制:是一種數(shù)據(jù)庫同步方法,允許數(shù)據(jù)在一組計(jì)算機(jī)之間共享數(shù)據(jù),并且可以通過小組中任意成員在組內(nèi)進(jìn)行數(shù)據(jù)更新。)
2. Redis
所用語言:C/C++
特點(diǎn):運(yùn)行異常快
使用許可: BSD
協(xié)議:類 Telnet
有硬盤存儲支持的內(nèi)存數(shù)據(jù)庫,
但自2.0版本以后可以將數(shù)據(jù)交換到硬盤(注意, 2.4以后版本不支持該特性?。?/p>
Master-slave復(fù)制(見編注3)
雖然采用簡單數(shù)據(jù)或以鍵值索引的哈希表,但也支持復(fù)雜操作,例如 ZREVRANGEBYSCORE。
INCR co (適合計(jì)算極限值或統(tǒng)計(jì)數(shù)據(jù))
支持 sets(同時(shí)也支持 union/diff/inter)
支持列表(同時(shí)也支持隊(duì)列;阻塞式 pop操作)
支持哈希表(帶有多個(gè)域的對象)
支持排序 sets(高得分表,適用于范圍查詢)
Redis支持事務(wù)
支持將數(shù)據(jù)設(shè)置成過期數(shù)據(jù)(類似快速緩沖區(qū)設(shè)計(jì))
Pub/Sub允許用戶實(shí)現(xiàn)消息機(jī)制
最佳應(yīng)用場景:適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內(nèi)存容量)的應(yīng)用程序。
例如:股票價(jià)格、數(shù)據(jù)分析、實(shí)時(shí)數(shù)據(jù)搜集、實(shí)時(shí)通訊。
(編注3:Master-slave復(fù)制:如果同一時(shí)刻只有一臺服務(wù)器處理所有的復(fù)制請求,這被稱為
Master-slave復(fù)制,通常應(yīng)用在需要提供高可用性的服務(wù)器集群。)
3. MongoDB
所用語言:C++
特點(diǎn):保留了SQL一些友好的特性(查詢,索引)。
使用許可: AGPL(發(fā)起者: Apache)
協(xié)議: Custom, binary( BSON)
Master/slave復(fù)制(支持自動(dòng)錯(cuò)誤恢復(fù),使用 sets 復(fù)制)
內(nèi)建分片機(jī)制
支持 javascript表達(dá)式查詢
可在服務(wù)器端執(zhí)行任意的 javascript函數(shù)
update-in-place支持比CouchDB更好
在數(shù)據(jù)存儲時(shí)采用內(nèi)存到文件映射
對性能的關(guān)注超過對功能的要求
建議最好打開日志功能(參數(shù) –journal)
在32位操作系統(tǒng)上,數(shù)據(jù)庫大小限制在約2.5Gb
空數(shù)據(jù)庫大約占 192Mb
采用 GridFS存儲大數(shù)據(jù)或元數(shù)據(jù)(不是真正的文件系統(tǒng))
最佳應(yīng)用場景:適用于需要?jiǎng)討B(tài)查詢支持;需要使用索引而不是 map/reduce功能;需要對大數(shù)據(jù)庫有性能要求;需要使用
CouchDB但因?yàn)閿?shù)據(jù)改變太頻繁而占滿內(nèi)存的應(yīng)用程序。
例如:你本打算采用 MySQL或 PostgreSQL,但因?yàn)樗鼈儽旧碜詭У念A(yù)定義欄讓你望而卻步。
4. Riak
所用語言:Erlang和C,以及一些Javascript
特點(diǎn):具備容錯(cuò)能力
使用許可: Apache
協(xié)議: HTTP/REST或者 custom binary
可調(diào)節(jié)的分發(fā)及復(fù)制(N, R, W)
用 JavaScript or Erlang在操作前或操作后進(jìn)行驗(yàn)證和安全支持。
使用JavaScript或Erlang進(jìn)行 Map/reduce
連接及連接遍歷:可作為圖形數(shù)據(jù)庫使用
索引:輸入元數(shù)據(jù)進(jìn)行搜索(1.0版本即將支持)
大數(shù)據(jù)對象支持( Luwak)
提供“開源”和“企業(yè)”兩個(gè)版本
全文本搜索,索引,通過 Riak搜索服務(wù)器查詢( beta版)
支持Masterless多站點(diǎn)復(fù)制及商業(yè)許可的 SNMP監(jiān)控
最佳應(yīng)用場景:適用于想使用類似 Cassandra(類似Dynamo)數(shù)據(jù)庫但無法處理
bloat及復(fù)雜性的情況。適用于你打算做多站點(diǎn)復(fù)制,但又需要對單個(gè)站點(diǎn)的擴(kuò)展性,可用性及出錯(cuò)處理有要求的情況。
例如:銷售數(shù)據(jù)搜集,工廠控制系統(tǒng);對宕機(jī)時(shí)間有嚴(yán)格要求;可以作為易于更新的 web服務(wù)器使用。
5. Membase
所用語言: Erlang和C
特點(diǎn):兼容 Memcache,但同時(shí)兼具持久化和支持集群
使用許可: Apache 2.0
協(xié)議:分布式緩存及擴(kuò)展
非常快速(200k+/秒),通過鍵值索引數(shù)據(jù)
可持久化存儲到硬盤
所有節(jié)點(diǎn)都是唯一的( master-master復(fù)制)
在內(nèi)存中同樣支持類似分布式緩存的緩存單元
寫數(shù)據(jù)時(shí)通過去除重復(fù)數(shù)據(jù)來減少 IO
提供非常好的集群管理 web界面
更新軟件時(shí)軟無需停止數(shù)據(jù)庫服務(wù)
支持連接池和多路復(fù)用的連接代理
最佳應(yīng)用場景:適用于需要低延遲數(shù)據(jù)訪問,高并發(fā)支持以及高可用性的應(yīng)用程序
例如:低延遲數(shù)據(jù)訪問比如以廣告為目標(biāo)的應(yīng)用,高并發(fā)的 web 應(yīng)用比如網(wǎng)絡(luò)游戲(例如 Zynga)
6. Neo4j
所用語言: Java
特點(diǎn):基于關(guān)系的圖形數(shù)據(jù)庫
使用許可: GPL,其中一些特性使用 AGPL/商業(yè)許可
協(xié)議: HTTP/REST(或嵌入在 Java中)
可獨(dú)立使用或嵌入到 Java應(yīng)用程序
圖形的節(jié)點(diǎn)和邊都可以帶有元數(shù)據(jù)
很好的自帶web管理功能
使用多種算法支持路徑搜索
使用鍵值和關(guān)系進(jìn)行索引
為讀操作進(jìn)行優(yōu)化
支持事務(wù)(用 Java api)
使用 Gremlin圖形遍歷語言
支持 Groovy腳本
支持在線備份,高級監(jiān)控及高可靠性支持使用 AGPL/商業(yè)許可
最佳應(yīng)用場景:適用于圖形一類數(shù)據(jù)。這是 Neo4j與其他nosql數(shù)據(jù)庫的最顯著區(qū)別
例如:社會關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜
7. Cassandra
所用語言: Java
特點(diǎn):對大型表格和 Dynamo支持得最好
使用許可: Apache
協(xié)議: Custom, binary (節(jié)約型)
可調(diào)節(jié)的分發(fā)及復(fù)制(N, R, W)
支持以某個(gè)范圍的鍵值通過列查詢
類似大表格的功能:列,某個(gè)特性的列集合
寫操作比讀操作更快
基于 Apache分布式平臺盡可能地 Map/reduce
我承認(rèn)對 Cassandra有偏見,一部分是因?yàn)樗旧淼挠纺[和復(fù)雜性,也因?yàn)?Java的問題(配置,出現(xiàn)異常,等等)
最佳應(yīng)用場景:當(dāng)使用寫操作多過讀操作(記錄日志)如果每個(gè)系統(tǒng)組建都必須用 Java編寫(沒有人因?yàn)檫x用
Apache的軟件被解雇)
例如:銀行業(yè),金融業(yè)(雖然對于金融交易不是必須的,但這些產(chǎn)業(yè)對數(shù)據(jù)庫的要求會比它們更大)寫比讀更快,所以一個(gè)自然的特性就是實(shí)時(shí)數(shù)據(jù)分析
8. HBase
(配合 ghshephard使用)
所用語言: Java
特點(diǎn):支持?jǐn)?shù)十億行X上百萬列
使用許可: Apache
協(xié)議:HTTP/REST (支持 Thrift,見編注4)
在 BigTable之后建模
采用分布式架構(gòu) Map/reduce
對實(shí)時(shí)查詢進(jìn)行優(yōu)化
高性能 Thrift網(wǎng)關(guān)
通過在server端掃描及過濾實(shí)現(xiàn)對查詢操作預(yù)判
支持 XML, Protobuf, 和binary的HTTP
Cascading, hive, and pig source and sink modules
基于 Jruby( JIRB)的shell
對配置改變和較小的升級都會重新回滾
不會出現(xiàn)單點(diǎn)故障
堪比MySQL的隨機(jī)訪問性能
最佳應(yīng)用場景:適用于偏好BigTable:)并且需要對大數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時(shí)訪問的場合。
例如: Facebook消息數(shù)據(jù)庫(更多通用的用例即將出現(xiàn))
編注4:Thrift
是一種接口定義語言,為多種其他語言提供定義和創(chuàng)建服務(wù),由Facebook開發(fā)并開源。
當(dāng)然,所有的系統(tǒng)都不只具有上面列出的這些特性。這里我僅僅根據(jù)自己的觀點(diǎn)列出一些我認(rèn)為的重要特性。與此同時(shí),技術(shù)進(jìn)步是飛速的,所以上述的內(nèi)容肯定需要不斷更新。我會盡我所能地更新這個(gè)列表。
顧名思義就是非關(guān)系型數(shù)據(jù)庫,它的出現(xiàn),就是為了解決關(guān)系型數(shù)據(jù)庫存在的一些問題,可以用NoSQL來進(jìn)行彌補(bǔ),現(xiàn)在聽得比較多的NoSQL數(shù)據(jù)庫有Redis、MongoDB、HBase等。
NoSQL不像傳統(tǒng)關(guān)系型庫那樣有統(tǒng)一的標(biāo)準(zhǔn),也不具有普適性。所以要根據(jù)應(yīng)用和數(shù)據(jù)的存取特征來選擇適合的NoSQL。
如果以前沒有接觸過NoSQL,MongoDB是一個(gè)比較好的選擇,他支持的所以和查詢能力是所有NoSQL中最強(qiáng)大的,缺點(diǎn)是索引的成本和文檔大小限制。
如果是使用Hadoop大數(shù)據(jù)分析,數(shù)據(jù)基本上不存在修改,只是插入和查詢,并且需要配合Hadoop的MR任務(wù),HBase會是很好的選擇。
如果要求有很強(qiáng)的擴(kuò)展能力,高并發(fā)讀寫和維護(hù)方便,Casaandra則是不錯(cuò)的選擇。
當(dāng)然除了上面三個(gè)流行的NoSQL,還有很多優(yōu)秀的NoSQL數(shù)據(jù)庫,而且他們都有各自擅長領(lǐng)域,所以需要了解你們產(chǎn)品自身的特點(diǎn)然后分析選擇哪種才是最適合的,往往在大型系統(tǒng)中不是單一的數(shù)據(jù)庫,而是使用多種數(shù)據(jù)庫組合。
nosql數(shù)據(jù)庫的四種類型如下:
1.key-value鍵值存儲數(shù)據(jù)庫:
相關(guān)產(chǎn)品: Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached.
主要應(yīng)用: 內(nèi)容緩存,處理大量數(shù)據(jù)的高負(fù)載訪問,也用于系統(tǒng)日志。
優(yōu)點(diǎn):查找速度快,大量操作時(shí)性能高。
2.列存儲數(shù)據(jù)庫:
相關(guān)產(chǎn)品: BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS.
主要應(yīng)用: 分布式數(shù)據(jù)的儲存與管理。
優(yōu)點(diǎn):查找速度快,可擴(kuò)展性強(qiáng),容易進(jìn)行分布式擴(kuò)展。
缺點(diǎn):功能相對局限。
3.文檔型數(shù)據(jù)庫
相關(guān)產(chǎn)品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit.
主要應(yīng)用: web應(yīng)用,管理面向文檔的數(shù)據(jù)或者類似的半結(jié)構(gòu)化數(shù)據(jù)。
優(yōu)點(diǎn):數(shù)據(jù)結(jié)構(gòu)靈活,表結(jié)構(gòu)可變,復(fù)雜性低。
缺點(diǎn):查詢效率低,且缺乏統(tǒng)一的查詢語言。
4.Graph圖形數(shù)據(jù)庫
相關(guān)產(chǎn)品: Neo4J、OrientDB、InfoGrid、GraphDB.
主要應(yīng)用: 復(fù)雜,互連接,低結(jié)構(gòu)化的圖結(jié)構(gòu)場合, 專注構(gòu)建關(guān)系圖譜。
優(yōu)點(diǎn): 利用圖結(jié)構(gòu)相關(guān)算法, 可用于構(gòu)建復(fù)雜的關(guān)系圖譜。
缺點(diǎn): 復(fù)雜度高。
實(shí)際上為了更好的描述實(shí)體之間的關(guān)系,我們要是再繼續(xù)使用Redis的話,是不是感覺實(shí)體之間的關(guān)系不夠那么的明顯,雖然也是屬于NoSQL的一種,但是相對來說,Redis,表現(xiàn)實(shí)體之間的關(guān)系就沒有那么清晰了,為了更好的描述實(shí)體之間的關(guān)系,就會使用圖形數(shù)據(jù)庫來進(jìn)行了,那么今天阿粉介紹的,就是一個(gè)圖形化的數(shù)據(jù)可,Neo4J。
Neo4j是一個(gè)世界領(lǐng)先的開源的基于圖的數(shù)據(jù)庫。 它是使用Java語言完全開發(fā)的。那么什么是圖數(shù)據(jù)庫呢?圖數(shù)據(jù)庫是以圖結(jié)構(gòu)的形式存儲數(shù)據(jù)的數(shù)據(jù)庫。 它以節(jié)點(diǎn),關(guān)系和屬性的形式存儲應(yīng)用程序的數(shù)據(jù)。正如RDBMS以表的“行,列”的形式存儲數(shù)據(jù),GDBMS以圖的形式存儲數(shù)據(jù)。
RDBMS與圖數(shù)據(jù)庫的區(qū)別
1.Tables 表Graphs 圖表
2.Rows 行Nodes 節(jié)點(diǎn)
3.Columns and Data 列和數(shù)據(jù) Properties and its values屬性及其值
4.Constraints 約束Relationships 關(guān)系
5.Joins 加入Traversal 遍歷
說完了圖形數(shù)據(jù)庫,我們就來看看這個(gè) Neo4J 數(shù)據(jù)庫吧
neo4j是用Java語言編寫的圖形數(shù)據(jù)庫,運(yùn)行時(shí)需要啟動(dòng)JVM進(jìn)程,因此,需安裝JAVA SE的JDK。關(guān)于 Java 怎么安裝,我就不用再多廢話了吧,到時(shí)候別忘了檢測一下 Java 的版本就好了, java -version
接下來我們就是要進(jìn)行一個(gè)安裝了,我們先去官網(wǎng),下載社區(qū)版,企業(yè)版要收費(fèi)的,注意哈。
官網(wǎng)地址
下載完成,直接開始安裝,傻瓜式操作即可。
Neo4j應(yīng)用程序有如下主要的目錄結(jié)構(gòu):
注意,如果你使用的是Zip的壓縮包來進(jìn)行的使用的話,那么你就需要注意一些地方,比如你如果是用 Zip 的包解壓之后,并且想要通過 bat 的命令啟動(dòng),直接在目錄下進(jìn)行 cmd ,然后 neo4j.bat ,這時(shí)候可能會出現(xiàn)一個(gè)問題,就是版本可能會出現(xiàn)問題,你如果下載使用的是最新版的 Neo4J ,那么就可能會讓你使用 JDK 11 ,而阿粉就是踩過了這個(gè)大坑之后,才發(fā)現(xiàn),bat 閃退的原因。
這樣就是說明我們的 JDk 的版本對應(yīng)的和 Neo4J 需要的 JDK 是不匹配的,我們就需要換一下我們的 JDK 了。把他換成 JDK 11 就好了,再次啟動(dòng)。
這時(shí)候,我們就直接訪問 localhost:7474 的端口,直接就能看到如下的畫面, 1.jpg
剛進(jìn)入的時(shí)候可能需要大家輸入帳號密碼,默認(rèn)的帳號密碼就是,neo4j 修改成你想要的就行了。
這樣登錄進(jìn)去我們就能開始正式學(xué)習(xí) Neo4J 的所有內(nèi)容了。
Neo4j - CQL語法
我們在講語法之前首先我們先得看看 Neo4J 的構(gòu)建模塊,不然之后的查詢都是無意義的。
Neo4j圖數(shù)據(jù)庫主要有以下構(gòu)建塊 -
節(jié)點(diǎn)是圖表的基本單位。 它包含具有鍵值對的屬性,如下所示
屬性是用于描述圖節(jié)點(diǎn)和關(guān)系的鍵值對
關(guān)系是圖形數(shù)據(jù)庫的另一個(gè)主要構(gòu)建塊。 它連接兩個(gè)節(jié)點(diǎn),如下所示。
Label將一個(gè)公共名稱與一組節(jié)點(diǎn)或關(guān)系相關(guān)聯(lián)。 節(jié)點(diǎn)或關(guān)系可以包含一個(gè)或多個(gè)標(biāo)簽。 我們可以為現(xiàn)有節(jié)點(diǎn)或關(guān)系創(chuàng)建新標(biāo)簽。 我們可以從現(xiàn)有節(jié)點(diǎn)或關(guān)系中刪除現(xiàn)有標(biāo)簽。
Neo4j數(shù)據(jù)瀏覽器 一旦我們安裝Neo4j,我們可以訪問Neo4j數(shù)據(jù)瀏覽器使用以下URL
http:// localhost:7474 / browser /
CREATE 語法
CREATE ( : )
它是我們要?jiǎng)?chuàng)建的節(jié)點(diǎn)名稱。
它是一個(gè)節(jié)點(diǎn)標(biāo)簽名稱
我們可以創(chuàng)建一個(gè)節(jié)點(diǎn),然后給他安排上一個(gè)標(biāo)簽
CREATE (emp:Employee)
當(dāng)我們看到
Added 1 label, created 1 node, completed after 74 ms.
這就創(chuàng)建成功了,
那么怎么查看呢?
MATCH語法
MATCH ( : ) return xxx
是這個(gè)樣子的
但是看到里面竟然沒有東西,就相當(dāng)于是一個(gè)空的對象,那是不是就應(yīng)該給里面放入屬性的操作呢?沒錯(cuò),肯定有
CREATE (emp:Employee{ id : 1001 ,name :"lucy", age : 10})
Added 1 label, created 1 node, set 3 properties, completed after 163 ms. 創(chuàng)建成功。
我們再次查看就能看到
如果我們想只要其中的一些對象的屬性,而不是全部屬性,那應(yīng)該怎么操作呢?
RETURN語法
RETURN 可以返回的是一個(gè)對象,也可以是對象中的屬性,比如:
結(jié)果就是下面這個(gè)樣子的,大家看一下,是不是感覺還是挺好用的。
** WHERE語法**
WHERE
為什么在前面的位置阿粉說,CQL 是和 SQL 類型的,這完全是因?yàn)楹芏鄸|西和 SQL 是類似的。
結(jié)果如下:
相同的還有
布爾運(yùn)算符 描述 AND 和 OR 或者 NOT 非 XOR 異或
比較運(yùn)算符 描述 = “等于”運(yùn)算符 “不等于”運(yùn)算符 “小于”運(yùn)算符 “大于”運(yùn)算符 = “小于或等于”運(yùn)算符。 = “大于或等于”運(yùn)算符。
DELETE語法
刪除語法必然是有的,因?yàn)橛袆?chuàng)建,肯定有刪除。
DELETE
但是這個(gè)命令也不是單獨(dú)使用的哈,
MATCH (e: Employee) DELETE e
直接刪除成功。
基礎(chǔ)的東西講完了,阿粉就得說說這個(gè)比較重要的內(nèi)容了,關(guān)系,
我們之前創(chuàng)建節(jié)點(diǎn)的時(shí)候,那叫一個(gè)簡單舒適加愉快,但是創(chuàng)建關(guān)系就比較復(fù)雜了,因?yàn)樾枰紤]如何匹配到有關(guān)系的兩個(gè)節(jié)點(diǎn),以及關(guān)系本身的屬性如何設(shè)置。這里我們就簡單學(xué)一下如何建立節(jié)點(diǎn)之間的關(guān)系。
由于Neo4j CQL語法是以人類可讀的格式。 Neo4j CQL也使用類似的箭頭標(biāo)記來創(chuàng)建兩個(gè)節(jié)點(diǎn)之間的關(guān)系。
每個(gè)關(guān)系( )包含兩個(gè)節(jié)點(diǎn)
在Neo4j中,兩個(gè)節(jié)點(diǎn)之間的關(guān)系是有方向性的。 它們是單向或雙向的。
如果我們嘗試創(chuàng)建一個(gè)沒有任何方向的關(guān)系,那么就會報(bào)錯(cuò)。
關(guān)系創(chuàng)建語法
CREATE ( )-[ ]-( )
我們這里直接使用創(chuàng)建新的節(jié)點(diǎn)來創(chuàng)建關(guān)系。
提示創(chuàng)建成功
這里關(guān)系名稱是“CONTAINS”
關(guān)系標(biāo)簽是“contains”。
這么看是看不出有啥關(guān)系的,但是,我們可以從另外的一個(gè)位置
這樣看下來,這個(gè) Neo4J 簡單操作是不是就學(xué)會了,阿粉接下來的文章中講怎么使用 Java 來操作 Neo4J 數(shù)據(jù)庫。歡迎大家來觀看。