我正在學習NoSQL,并正在為客戶的需求之一尋找不同的選擇。在提出這個問題之前,我已經(jīng)遍歷了各種資源(對NoSQL不太了解的人)

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蘆溪免費建站歡迎大家使用!
我需要以更快的速度存儲數(shù)據(jù)并讀取數(shù)據(jù)。
完全故障安全且易于擴展。
能夠搜索數(shù)據(jù)以獲取Google Analytics(分析)。
最后我列出了以下內(nèi)容:?Cassandra and Elasticsearch
我所了解的是,Cassandra對我來說是一個完美的NoSQL存儲解決方案,因為我可以使用索引寫入數(shù)據(jù)和讀取數(shù)據(jù)。它失敗或可能失敗的地方在Google
Analytics(分析)上。將來,如果我想從中獲取數(shù)據(jù)from_date to to_date,或者想以更多方式獲取數(shù)據(jù)進行分析,如果我沒有適當?shù)卦O(shè)計數(shù)據(jù)模型或保持長期的眼光,那么在不斷變化的世界中這可能很難。
While?Elastic Search最擅長建立索引(由Lucene支持),并且可以通過拋出一些隨機文本來隨機搜索數(shù)據(jù)。但是即使我想檢索數(shù)據(jù),它是否也一樣工作from_date to to_date(我希望是這樣)。但是真正的問題是,它是搜索引擎還是像Cassandra這樣的完美NoSQL數(shù)據(jù)存儲?如果是,為什么我們?nèi)匀恍枰狢assandra?
如果兩者都在不同的世界,請解釋一下!我們?nèi)绾螌⑺鼈兘Y(jié)合起來以獲得更有效的解決方案?
總體來說,主流數(shù)據(jù)庫并不存在明確的好壞之分,每一種數(shù)據(jù)庫都有各自的優(yōu)缺點,最主要還是看它是否能夠滿足您的需求。
總的來說,選擇數(shù)據(jù)庫可以從以下角度考慮:
從個人角度出發(fā)的話,如果是以學習和小型業(yè)務需求為主,推薦使用MySQL,它的優(yōu)勢在于:
成本(免費)
自由(完全開源,適用多個場景)
性能(體積小但速度快)
這三點決定了MySQL數(shù)據(jù)庫的超高性價比。并且目前有不少主流公司仍然青睞MySQL,大名鼎鼎的Fackbook就依然在延續(xù)MySQL的使用。
2. 如果是企業(yè)角度出發(fā),主流的大型數(shù)據(jù)庫如Oracle、Sql Server...以及近些年來大數(shù)據(jù)領(lǐng)域十分火熱的非關(guān)系型數(shù)據(jù)庫,例如Redis、HBse等等,都可以作為考慮的對象。
接下來具體列舉一些常用數(shù)據(jù)庫的優(yōu)缺點,希望能為大家提供參考:
MySQL:
優(yōu)勢:
MySQL是開放源代碼的數(shù)據(jù)庫,任何人都可以獲得該數(shù)據(jù)庫的源代碼。
MySQL能夠?qū)崿F(xiàn)跨平臺操作,可以在Windows、UNIX、Linux和Mac OS等操作系統(tǒng)上運行。
MySQL數(shù)據(jù)庫是一款自由軟件,大部分應用場景下都是免費使用。
MySQL功能強大且使用方便,社區(qū)生態(tài)繁榮,有諸多學習資料。
缺點:規(guī)模小,功能有限。
SQL Server
高度可擴展:可以從單一的筆記本電腦上運行任何東西或以高倍云服務器網(wǎng)絡(luò)運行,或在兩者之間任何東西。
“雖然說是“任何東西”,但是仍然要滿足相關(guān)的軟件和硬件的要求“
生態(tài)鏈廣:具有內(nèi)置的商務智能工具,以及一系列的分析和報告工具,可以創(chuàng)建數(shù)據(jù)庫、備份、復制,帶來了更好的安全性。
Oracle
Oracle數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),具有以下特點:
可移植性好(在各類大、中、小、微機環(huán)境中都適用)
使用方便、
功能強
因此,Oracle是一種高效率、可靠性好的、適應高吞吐量的數(shù)據(jù)庫解決方案。
DB2
DB2是IBM開發(fā)的一種大型關(guān)系型數(shù)據(jù)庫平臺。它支持多用戶或應用程序在同一條SQL 語句中查詢不同database甚至不同DBMS中的數(shù)據(jù)。它的應用特點如下:
支持面向?qū)ο蟮木幊蹋篸b2支持復雜的數(shù)據(jù)結(jié)構(gòu),如無結(jié)構(gòu)文本對象,可以對無結(jié)構(gòu)文本對象進行布爾匹配、最接近匹配和任意匹配等搜索。可以建立用戶數(shù)據(jù)類型和用戶自定義函數(shù)。
支持多媒體應用程序:db2支持大二分對象(blob),允許在數(shù)據(jù)庫中存取二進制大對象和文本大對象。其中,二進制大對象可以用來存儲多媒體對象。
具有良好的備份和恢復能力
支持存儲過程和觸發(fā)器,用戶可以在建表時顯示的定義復雜的完整性規(guī)則
支持異構(gòu)分布式數(shù)據(jù)庫訪問,支持數(shù)據(jù)復制
PostgreSQL
PostgreSQL 是一個免費的對象-關(guān)系數(shù)據(jù)庫服務器(ORDBMS),它的 Slogan 是 “世界上最先進的開源關(guān)系型數(shù)據(jù)庫”。
PostgreSQL具有如下特征:
函數(shù):通過函數(shù),可以在數(shù)據(jù)庫服務器端執(zhí)行指令程序。
索引:用戶可以自定義索引方法,或使用內(nèi)置的 B 樹,哈希表與 GiST 索引。
觸發(fā)器:觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個INSERT語句可能觸發(fā)一個檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。 多版本并發(fā)控制:PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversion concurrency control)系統(tǒng)進行并發(fā)控制,該系統(tǒng)向每個用戶提供了一個數(shù)據(jù)庫的”快照”,用戶在事務內(nèi)所作的每個修改,對于其他的用戶都不可見,直到該事務成功提交。
規(guī)則:規(guī)則(RULE)允許一個查詢能被重寫,通常用來實現(xiàn)對視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
數(shù)據(jù)類型:包括文本、任意精度的數(shù)值數(shù)組、JSON 數(shù)據(jù)、枚舉類型、XML 數(shù)據(jù)等。
全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內(nèi)嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數(shù)據(jù)庫的外部數(shù)據(jù)包裝器。
數(shù)據(jù)倉庫:能平滑遷移至同屬 PostgreSQL 生態(tài)的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL
1、存放值區(qū)別:
數(shù)據(jù)庫只存放在當前值,數(shù)據(jù)倉庫存放歷史值;
2、數(shù)據(jù)變化區(qū)別:
數(shù)據(jù)庫內(nèi)數(shù)據(jù)是動態(tài)變化的,只要有業(yè)務發(fā)生,數(shù)據(jù)就會被更新,而數(shù)據(jù)倉庫則是靜態(tài)的歷史數(shù)據(jù),只能定期添加、刷新;
3、數(shù)據(jù)結(jié)構(gòu)區(qū)別:
數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)比較復雜,有各種結(jié)構(gòu)以適合業(yè)務處理系統(tǒng)的需要,而數(shù)據(jù)倉庫中的數(shù)據(jù)結(jié)構(gòu)則相對簡單;
4、訪問頻率不同:
數(shù)據(jù)庫中數(shù)據(jù)訪問頻率較高,但訪問量較少,而數(shù)據(jù)倉庫的訪問頻率低但訪問量卻很高;
5、目標人群區(qū)別:
數(shù)據(jù)庫中數(shù)據(jù)的目標是面向業(yè)務處理人員的,為業(yè)務處理人員提供信息處理的支持,而數(shù)據(jù)倉庫則是面向高層管理人員的,為其提供決策支持;
postgreSQL是一款先進的開源數(shù)據(jù)庫,擁有非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),可面向企業(yè)復雜SQL的OLTP業(yè)務場景,支持多項企業(yè)級功能,能解決使用數(shù)據(jù)庫的各種難題。
PostgreSQL的優(yōu)勢有很多。它是一個免費的對象-關(guān)系數(shù)據(jù)庫服務器(ORDBMS),在靈活的BSD許可證下發(fā)行。
postgreSQL的特征
函數(shù):通過函數(shù),可以在數(shù)據(jù)庫服務器端執(zhí)行指令程序。
索引:用戶可以自定義索引方法,或使用內(nèi)置的 B 樹,哈希表與 GiST 索引。
觸發(fā)器:觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個INSERT語句可能觸發(fā)一個檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。 多版本并發(fā)控制:PostgreSQL使用多版本并發(fā)控制(MVCC,Multiversion concurrency control)系統(tǒng)進行并發(fā)控制,該系統(tǒng)向每個用戶提供了一個數(shù)據(jù)庫的"快照",用戶在事務內(nèi)所作的每個修改,對于其他的用戶都不可見,直到該事務成功提交。
規(guī)則:規(guī)則(RULE)允許一個查詢能被重寫,通常用來實現(xiàn)對視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
數(shù)據(jù)類型:包括文本、任意精度的數(shù)值數(shù)組、JSON 數(shù)據(jù)、枚舉類型、XML 數(shù)據(jù)等。全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內(nèi)嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數(shù)據(jù)庫的外部數(shù)據(jù)包裝器。
數(shù)據(jù)倉庫:能平滑遷移至同屬postgreSQL生態(tài)的GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL。
我們使用Elasticsearch存儲的文檔數(shù)量接近50億(算上1份復制,接近100億文檔),總共10個數(shù)據(jù)節(jié)點和2個元數(shù)據(jù)節(jié)點(48GB內(nèi)存,8核心CPU,ES使用內(nèi)存達到70%),每天的文檔增量大概是3000W條(速度持續(xù)增加中)。目前來看,單個文檔的查詢效率基本處于實時狀態(tài);對于1到2周的數(shù)據(jù)的聚合統(tǒng)計操作也可以在10秒之內(nèi)返回結(jié)果。
但是,還有提升的空間:
1. 對于查詢單條數(shù)據(jù)的應用場景來說,我們可以使用ES的路由機制,將同一索引內(nèi)的具有相同特征(比如具有相同的userid)的文檔全部存儲于一個節(jié)點上,這樣我們之后的查詢都可以直接定位到這個節(jié)點上,而不用將查詢廣播道所有的節(jié)點上;
2. 隨著數(shù)據(jù)節(jié)點的增加,適當增加分片數(shù)量,提升系統(tǒng)的分布水平,也可以通過分而治之的方式優(yōu)化查詢性能;
個人以為Elasticsearch作為內(nèi)部存儲來說還是不錯的,效率也基本能夠滿足,在某些方面替代傳統(tǒng)DB也是可以的,前提是你的業(yè)務不對操作的事性務有特殊要求;而權(quán)限管理也不用那么細,因為ES的權(quán)限這塊還不完善。由于我們對ES的應用場景僅僅是在于對某段時間內(nèi)的數(shù)據(jù)聚合操作,沒有大量的單文檔請求(比如通過userid來找到一個用戶的文檔,類似于NoSQL的應用場景),所以能否替代NoSQL還需要各位自己的測試。如果讓我選擇的話,我會嘗試使用ES來替代傳統(tǒng)的NoSQL,因為它的橫向擴展機制太方便了。
本文題目:關(guān)于nosqlsearch的信息
網(wǎng)站地址:http://chinadenli.net/article11/dsshpgd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、軟件開發(fā)、微信小程序、營銷型網(wǎng)站建設(shè)、定制開發(fā)、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)