我們使用Elasticsearch存儲(chǔ)的文檔數(shù)量接近50億(算上1份復(fù)制,接近100億文檔),總共10個(gè)數(shù)據(jù)節(jié)點(diǎn)和2個(gè)元數(shù)據(jù)節(jié)點(diǎn)(48GB內(nèi)存,8核心CPU,ES使用內(nèi)存達(dá)到70%),每天的文檔增量大概是3000W條(速度持續(xù)增加中)。目前來(lái)看,單個(gè)文檔的查詢(xún)效率基本處于實(shí)時(shí)狀態(tài);對(duì)于1到2周的數(shù)據(jù)的聚合統(tǒng)計(jì)操作也可以在10秒之內(nèi)返回結(jié)果。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括廣昌網(wǎng)站建設(shè)、廣昌網(wǎng)站制作、廣昌網(wǎng)頁(yè)制作以及廣昌網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廣昌網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到廣昌省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
但是,還有提升的空間:
1. 對(duì)于查詢(xún)單條數(shù)據(jù)的應(yīng)用場(chǎng)景來(lái)說(shuō),我們可以使用ES的路由機(jī)制,將同一索引內(nèi)的具有相同特征(比如具有相同的userid)的文檔全部存儲(chǔ)于一個(gè)節(jié)點(diǎn)上,這樣我們之后的查詢(xún)都可以直接定位到這個(gè)節(jié)點(diǎn)上,而不用將查詢(xún)廣播道所有的節(jié)點(diǎn)上;
2. 隨著數(shù)據(jù)節(jié)點(diǎn)的增加,適當(dāng)增加分片數(shù)量,提升系統(tǒng)的分布水平,也可以通過(guò)分而治之的方式優(yōu)化查詢(xún)性能;
個(gè)人以為Elasticsearch作為內(nèi)部存儲(chǔ)來(lái)說(shuō)還是不錯(cuò)的,效率也基本能夠滿(mǎn)足,在某些方面替代傳統(tǒng)DB也是可以的,前提是你的業(yè)務(wù)不對(duì)操作的事性務(wù)有特殊要求;而權(quán)限管理也不用那么細(xì),因?yàn)镋S的權(quán)限這塊還不完善。由于我們對(duì)ES的應(yīng)用場(chǎng)景僅僅是在于對(duì)某段時(shí)間內(nèi)的數(shù)據(jù)聚合操作,沒(méi)有大量的單文檔請(qǐng)求(比如通過(guò)userid來(lái)找到一個(gè)用戶(hù)的文檔,類(lèi)似于NoSQL的應(yīng)用場(chǎng)景),所以能否替代NoSQL還需要各位自己的測(cè)試。如果讓我選擇的話(huà),我會(huì)嘗試使用ES來(lái)替代傳統(tǒng)的NoSQL,因?yàn)樗臋M向擴(kuò)展機(jī)制太方便了。
一般將NoSQL數(shù)據(jù)庫(kù)分為四大類(lèi):鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)、列存儲(chǔ)數(shù)據(jù)庫(kù)、文檔型數(shù)據(jù)庫(kù)和圖形(Graph)數(shù)據(jù)庫(kù)。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場(chǎng)景。
鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)Key指向Value的鍵值對(duì),通常用hash表來(lái)實(shí)現(xiàn)查找速度快數(shù)據(jù)無(wú)結(jié)構(gòu)化(通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問(wèn)負(fù)載,也用于一些日志系統(tǒng)等。
列存儲(chǔ)數(shù)據(jù)庫(kù),以列簇式存儲(chǔ),將同一列數(shù)據(jù)存在一起查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展功能相對(duì)局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫(kù),Key-Value對(duì)應(yīng)的鍵值對(duì),Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫(kù)一樣需預(yù)先定義表結(jié)構(gòu)),查詢(xún)性能不高,而且缺乏統(tǒng)一的查詢(xún)語(yǔ)法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫(kù),圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時(shí)候需要對(duì)整個(gè)圖做計(jì)算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。
Web1.0的時(shí)代,數(shù)據(jù)訪問(wèn)量很有限,用一夫當(dāng)關(guān)的高性能的單點(diǎn)服務(wù)器可以解決大部分問(wèn)題。
隨著Web2.0的時(shí)代的到來(lái),用戶(hù)訪問(wèn)量大幅度提升,同時(shí)產(chǎn)生了大量的用戶(hù)數(shù)據(jù)。加上后來(lái)的智能移動(dòng)設(shè)備的普及,所有的互聯(lián)網(wǎng)平臺(tái)都面臨了巨大的性能挑戰(zhàn)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。
NoSQL 不依賴(lài)業(yè)務(wù)邏輯方式存儲(chǔ),而以簡(jiǎn)單的key-value模式存儲(chǔ)。因此大大的增加了數(shù)據(jù)庫(kù)的擴(kuò)展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫(kù) 列式數(shù)據(jù)庫(kù) Hbase Hbase
HBase是Hadoop項(xiàng)目中的數(shù)據(jù)庫(kù)。它用于需要對(duì)大量的數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時(shí)的讀寫(xiě)操作的場(chǎng)景中。
HBase的目標(biāo)就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計(jì)算機(jī)處理超過(guò)10億行數(shù)據(jù),還可處理有數(shù)百萬(wàn)列元素的數(shù)據(jù)表。
Cassandra Cassandra
Apache Cassandra是一款免費(fèi)的開(kāi)源NoSQL數(shù)據(jù)庫(kù),其設(shè)計(jì)目的在于管理由大量商用服務(wù)器構(gòu)建起來(lái)的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達(dá)到PB級(jí)別)。在眾多顯著特性當(dāng)中,Cassandra最為卓越的長(zhǎng)處是對(duì)寫(xiě)入及讀取操作進(jìn)行規(guī)模調(diào)整,而且其不強(qiáng)調(diào)主集群的設(shè)計(jì)思路能夠以相對(duì)直觀的方式簡(jiǎn)化各集群的創(chuàng)建與擴(kuò)展流程。
主要應(yīng)用:社會(huì)關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)
elasticsearch可以代替NoSQL嗎
優(yōu)點(diǎn):
1.高并發(fā)。實(shí)測(cè)es單機(jī)分配10g內(nèi)存單實(shí)例,寫(xiě)入能力1200qps,60g內(nèi)存、12核CPU起3個(gè)實(shí)例預(yù)計(jì)可達(dá)到6000qps。
2.同機(jī)房單條數(shù)據(jù)寫(xiě)入平均3ms(比mysql慢,mg不清楚)
3.容錯(cuò)能力比mg強(qiáng)。比如1主多從,主片掛了從片會(huì)自動(dòng)頂上
4.滿(mǎn)足大數(shù)據(jù)下實(shí)時(shí)讀寫(xiě)需求,無(wú)需分庫(kù)(不存在庫(kù)的概念)。
5.易擴(kuò)展。實(shí)例間做下配置即可擴(kuò)展并發(fā)性和容積,自動(dòng)分配的寫(xiě)入機(jī)制,無(wú)需操心傳統(tǒng)db中多主同步的詬病
6.支持較復(fù)雜的條件查詢(xún),group by、排序都不是問(wèn)題
7.具有一定的關(guān)系性,但不用擔(dān)心大字段的問(wèn)題