提及數(shù)據(jù)庫(kù)類型,人們先想到的是SQL,不過隨著大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),NoSQL應(yīng)運(yùn)而生。專業(yè)人士分析,隨著云計(jì)算、物聯(lián)網(wǎng)以及大數(shù)據(jù)的進(jìn)一步發(fā)展,NewSQL將成為未來數(shù)據(jù)庫(kù)的主角。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供城中企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、做網(wǎng)站、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為城中眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
SQL
SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫,是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)領(lǐng)域主流模型,經(jīng)典應(yīng)用在金融和電信行業(yè),確保數(shù)據(jù)庫(kù)的數(shù)據(jù)不會(huì)出錯(cuò)和丟失。而SQL是專為數(shù)據(jù)庫(kù)而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫(kù)語言。SQL功能強(qiáng)大、簡(jiǎn)單易學(xué)、使用方便,已經(jīng)成為了數(shù)據(jù)庫(kù)操作的基礎(chǔ),并且現(xiàn)在幾乎所有的數(shù)據(jù)庫(kù)均支持SQL。
NoSQL
NoSQL泛指非關(guān)系型的數(shù)據(jù)庫(kù),它的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。NoSQL的強(qiáng)項(xiàng)是特別適合處理大量分布式數(shù)據(jù),與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,NoSQL數(shù)據(jù)庫(kù)為軟件開發(fā)人員及其他用戶提供了更快的速度和更高的靈活性。目前在市場(chǎng)上有超過24個(gè)開源和商業(yè)NoSQL數(shù)據(jù)庫(kù)。
NewSQL
NewSQL是指一類新式的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),針對(duì)OLTP(讀-寫)工作負(fù)載,追求提供和NoSQL系統(tǒng)相同的擴(kuò)展性能,且仍然保持ACID和SQL等特性。對(duì)企業(yè)而言,使用NewSQL不僅免去傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的ETL過程,降低存儲(chǔ)成本的同時(shí)極大的縮短數(shù)據(jù)分析的延遲,使得實(shí)時(shí)分析決策系統(tǒng)成為可能。
MySQL
優(yōu)點(diǎn):
體積小、速度快、總體擁有成本低,開源;
支持多種操作系統(tǒng);
是開源數(shù)據(jù)庫(kù),提供的接口支持多種語言連接操作 ;
SqlServer
優(yōu)點(diǎn):
易用性、適合分布式組織的可伸縮性、用于決策支持的數(shù)據(jù)倉(cāng)庫(kù)功能、與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性、良好的性價(jià)比等;
Oracle
優(yōu)點(diǎn):
開放性: Oracle 能所有主流平臺(tái)上運(yùn)行(包括 windows)完全支持所有工業(yè)標(biāo)準(zhǔn)采用完全開放策略使客戶選擇適合解決方案對(duì)開發(fā)商全力支持。
可伸縮性,并行性:oracle 并行服務(wù)器通過使組結(jié)點(diǎn)共享同簇工作來擴(kuò)展windownt能力提供高用性和高伸縮性簇解決方案windowsNT能滿足需要用戶把數(shù)據(jù)庫(kù)移UNIXOracle并行服務(wù)器對(duì)各種UNIX平臺(tái)集群機(jī)制都有著相當(dāng)高集成度。
以上我的回答希望對(duì)你有所幫助
在大數(shù)據(jù)時(shí)代,“多種架構(gòu)支持多類應(yīng)用”成為數(shù)據(jù)庫(kù)行業(yè)應(yīng)對(duì)大數(shù)據(jù)的基本思路,數(shù)據(jù)庫(kù)行業(yè)出現(xiàn)互為補(bǔ)充的三大陣營(yíng),適用于事務(wù)處理應(yīng)用的OldSQL、適用于數(shù)據(jù)分析應(yīng)用的NewSQL和適用于互聯(lián)網(wǎng)應(yīng)用的NoSQL。但在一些復(fù)雜的應(yīng)用場(chǎng)景中,單一數(shù)據(jù)庫(kù)架構(gòu)都不能完全滿足應(yīng)用場(chǎng)景對(duì)海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)管理、復(fù)雜分析、關(guān)聯(lián)查詢、實(shí)時(shí)性處理和控制建設(shè)成本等多方面的需要,因此不同架構(gòu)數(shù)據(jù)庫(kù)混合部署應(yīng)用成為滿足復(fù)雜應(yīng)用的必然選擇。不同架構(gòu)數(shù)據(jù)庫(kù)混合使用的模式可以概括為:OldSQL+NewSQL、OldSQL+NoSQL、NewSQL+NoSQL三種主要模式。下面通過三個(gè)案例對(duì)不同架構(gòu)數(shù)據(jù)庫(kù)的混合應(yīng)用部署進(jìn)行介紹。
OldSQL+NewSQL 在數(shù)據(jù)中心類應(yīng)用中混合部署
采用OldSQL+NewSQL模式構(gòu)建數(shù)據(jù)中心,在充分發(fā)揮OldSQL數(shù)據(jù)庫(kù)的事務(wù)處理能力的同時(shí),借助NewSQL在實(shí)時(shí)性、復(fù)雜分析、即席查詢等方面的獨(dú)特優(yōu)勢(shì),以及面對(duì)海量數(shù)據(jù)時(shí)較強(qiáng)的擴(kuò)展能力,滿足數(shù)據(jù)中心對(duì)當(dāng)前“熱”數(shù)據(jù)事務(wù)型處理和海量歷史“冷”數(shù)據(jù)分析兩方面的需求。OldSQL+NewSQL模式在數(shù)據(jù)中心類應(yīng)用中的互補(bǔ)作用體現(xiàn)在,OldSQL彌補(bǔ)了NewSQL不適合事務(wù)處理的不足,NewSQL彌補(bǔ)了OldSQL在海量數(shù)據(jù)存儲(chǔ)能力和處理性能方面的缺陷。
商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合部署方式搭建,OldSQL數(shù)據(jù)庫(kù)滿足各業(yè)務(wù)系統(tǒng)數(shù)據(jù)的歸檔備份和事務(wù)型應(yīng)用,NewSQL MPP數(shù)據(jù)庫(kù)集群對(duì)即席查詢、多維分析等應(yīng)用提供高性能支持,并且通過MPP集群架構(gòu)實(shí)現(xiàn)應(yīng)對(duì)海量數(shù)據(jù)存儲(chǔ)的擴(kuò)展能力。
商業(yè)銀行數(shù)據(jù)中心存儲(chǔ)架構(gòu)
與傳統(tǒng)的OldSQL模式相比,商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合搭建模式,數(shù)據(jù)加載性能提升3倍以上,即席查詢和統(tǒng)計(jì)分析性能提升6倍以上。NewSQL MPP的高可擴(kuò)展性能夠應(yīng)對(duì)新的業(yè)務(wù)需求,可隨著數(shù)據(jù)量的增長(zhǎng)采用集群方式構(gòu)建存儲(chǔ)容量更大的數(shù)據(jù)中心。
OldSQL+NoSQL 在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中混合部署
在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中采用OldSQL+NoSQL混合模式,能夠很好的解決互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用對(duì)海量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲(chǔ)和快速處理的需求。在諸如大型電子商務(wù)平臺(tái)、大型SNS平臺(tái)等互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用場(chǎng)景中,OldSQL在應(yīng)用中負(fù)責(zé)高價(jià)值密度結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和事務(wù)型處理,NoSQL在應(yīng)用中負(fù)責(zé)存儲(chǔ)和處理海量非結(jié)構(gòu)化的數(shù)據(jù)和低價(jià)值密度結(jié)構(gòu)化數(shù)據(jù)。OldSQL+NoSQL模式在互聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用中的互補(bǔ)作用體現(xiàn)在,OldSQL彌補(bǔ)了NoSQL在ACID特性和復(fù)雜關(guān)聯(lián)運(yùn)算方面的不足,NoSQL彌補(bǔ)了OldSQL在海量數(shù)據(jù)存儲(chǔ)和非結(jié)構(gòu)化數(shù)據(jù)處理方面的缺陷。
數(shù)據(jù)魔方是淘寶網(wǎng)的一款數(shù)據(jù)產(chǎn)品,主要提供行業(yè)數(shù)據(jù)分析、店鋪數(shù)據(jù)分析。淘寶數(shù)據(jù)產(chǎn)品在存儲(chǔ)層采用OldSQL+NoSQL混合模式,由基于MySQL的分布式關(guān)系型數(shù)據(jù)庫(kù)集群MyFOX和基于HBase的NoSQL存儲(chǔ)集群Prom組成。由于OldSQL強(qiáng)大的語義和關(guān)系表達(dá)能力,在應(yīng)用中仍然占據(jù)著重要地位,目前存儲(chǔ)在MyFOX中的統(tǒng)計(jì)結(jié)果數(shù)據(jù)已經(jīng)達(dá)到10TB,占據(jù)著數(shù)據(jù)魔方總數(shù)據(jù)量的95%以上。另一方面,NoSQL作為SQL的有益補(bǔ)充,解決了OldSQL數(shù)據(jù)庫(kù)無法解決的全屬性選擇器等問題。
淘寶海量數(shù)據(jù)產(chǎn)品技術(shù)架構(gòu)
基于OldSQL+NoSQL混合架構(gòu)的特點(diǎn),數(shù)據(jù)魔方目前已經(jīng)能夠提供壓縮前80TB的數(shù)據(jù)存儲(chǔ)空間,支持每天4000萬的查詢請(qǐng)求,平均響應(yīng)時(shí)間在28毫秒,足以滿足未來一段時(shí)間內(nèi)的業(yè)務(wù)增長(zhǎng)需求。
NewSQL+NoSQL 在行業(yè)大數(shù)據(jù)應(yīng)用中混合部署
行業(yè)大數(shù)據(jù)與互聯(lián)網(wǎng)大數(shù)據(jù)的區(qū)別在于行業(yè)大數(shù)據(jù)的價(jià)值密度更高,并且對(duì)結(jié)構(gòu)化數(shù)據(jù)的實(shí)時(shí)處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強(qiáng)一致性等都比互聯(lián)網(wǎng)大數(shù)據(jù)有更高的要求。行業(yè)大數(shù)據(jù)應(yīng)用場(chǎng)景主要是分析類應(yīng)用,如:電信、金融、政務(wù)、能源等行業(yè)的決策輔助、預(yù)測(cè)預(yù)警、統(tǒng)計(jì)分析、經(jīng)營(yíng)分析等。
在行業(yè)大數(shù)據(jù)應(yīng)用中采用NewSQL+NoSQL混合模式,充分利用NewSQL在結(jié)構(gòu)化數(shù)據(jù)分析處理方面的優(yōu)勢(shì),以及NoSQL在非結(jié)構(gòu)數(shù)據(jù)處理方面的優(yōu)勢(shì),實(shí)現(xiàn)NewSQL與NoSQL的功能互補(bǔ),解決行業(yè)大數(shù)據(jù)應(yīng)用對(duì)高價(jià)值結(jié)構(gòu)化數(shù)據(jù)的實(shí)時(shí)處理、復(fù)雜的多表關(guān)聯(lián)分析、即席查詢、數(shù)據(jù)強(qiáng)一致性等要求,以及對(duì)海量非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和精確查詢的要求。在應(yīng)用中,NewSQL承擔(dān)高價(jià)值密度結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和分析處理工作,NoSQL承擔(dān)存儲(chǔ)和處理海量非結(jié)構(gòu)化數(shù)據(jù)和不需要關(guān)聯(lián)分析、Ad-hoc查詢較少的低價(jià)值密度結(jié)構(gòu)化數(shù)據(jù)的工作。
當(dāng)前電信運(yùn)營(yíng)商在集中化BI系統(tǒng)建設(shè)過程中面臨著數(shù)據(jù)規(guī)模大、數(shù)據(jù)處理類型多等問題,并且需要應(yīng)對(duì)大量的固定應(yīng)用,以及占統(tǒng)計(jì)總數(shù)80%以上的突發(fā)性臨時(shí)統(tǒng)計(jì)(ad-hoc)需求。在集中化BI系統(tǒng)的建設(shè)中采用NewSQL+NoSQL混搭的模式,充分利用NewSQL在復(fù)雜分析、即席查詢等方面處理性能的優(yōu)勢(shì),及NoSQL在非結(jié)構(gòu)化數(shù)據(jù)處理和海量數(shù)據(jù)存儲(chǔ)方面的優(yōu)勢(shì),實(shí)現(xiàn)高效低成本。
集中化BI系統(tǒng)數(shù)據(jù)存儲(chǔ)架構(gòu)
集中化BI系統(tǒng)按照數(shù)據(jù)類型和處理方式的不同,將結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)分別存儲(chǔ)在不同的系統(tǒng)中:非結(jié)構(gòu)化數(shù)據(jù)在Hadoop平臺(tái)上存儲(chǔ)與處理;結(jié)構(gòu)化、不需要關(guān)聯(lián)分析、Ad-hoc查詢較少的數(shù)據(jù)保存在NoSQL數(shù)據(jù)庫(kù)或Hadoop平臺(tái);結(jié)構(gòu)化、需要關(guān)聯(lián)分析或經(jīng)常ad-hoc查詢的數(shù)據(jù),保存在NewSQL MPP數(shù)據(jù)庫(kù)中,短期高價(jià)值數(shù)據(jù)放在高性能平臺(tái),中長(zhǎng)期放在低成本產(chǎn)品中。
結(jié)語
當(dāng)前信息化應(yīng)用的多樣性、復(fù)雜性,以及三種數(shù)據(jù)庫(kù)架構(gòu)各自所具有的優(yōu)勢(shì)和局限性,造成任何一種架構(gòu)的數(shù)據(jù)庫(kù)都不能完全滿足應(yīng)用需求,因此不同架構(gòu)數(shù)據(jù)庫(kù)混合使用,從而彌補(bǔ)其他架構(gòu)的不足成為必然選擇。根據(jù)應(yīng)用場(chǎng)景采用不同架構(gòu)數(shù)據(jù)庫(kù)進(jìn)行組合搭配,充分發(fā)揮每種架構(gòu)數(shù)據(jù)庫(kù)的特點(diǎn)和優(yōu)勢(shì),并且與其他架構(gòu)數(shù)據(jù)庫(kù)形成互補(bǔ),完全涵蓋應(yīng)用需求,保證數(shù)據(jù)資源的最優(yōu)化利用,將成為未來一段時(shí)期內(nèi)信息化應(yīng)用主要采用的解決方式。
目前在國(guó)內(nèi)市場(chǎng)上,OldSQL主要為Oracle、IBM等國(guó)外數(shù)據(jù)庫(kù)廠商所壟斷,達(dá)夢(mèng)、金倉(cāng)等國(guó)產(chǎn)廠商仍處于追趕狀態(tài);南大通用憑借國(guó)產(chǎn)新型數(shù)據(jù)庫(kù)GBase 8a異軍突起,與EMC的Greenplum和HP的Vertica躋身NewSQL市場(chǎng)三強(qiáng);NoSQL方面用戶則大多采用Hadoop開源方案。
首先,來談一下對(duì)數(shù)據(jù)庫(kù)市場(chǎng)的看法,關(guān)系型數(shù)據(jù)庫(kù)會(huì)一直占有主導(dǎo)地位。第一個(gè)原因是它的歷史最久,有龐大的用戶基礎(chǔ),根深。第二,SQL 的 query 在場(chǎng)景上依然是占主體的,尤其在數(shù)據(jù)分析上。 NoSQL的產(chǎn)生的是SQL對(duì)某些非關(guān)系為場(chǎng)景(KV點(diǎn)讀)上的scalability 不好導(dǎo)致的。那個(gè)時(shí)候,主要問題是無法橫向 scale,也就是沒有分布式的支持,所以NoSQL 誕生了。而且KV, document 使用 normalized 數(shù)據(jù)結(jié)構(gòu)也不利于理解和編程,所以可以看做是NoSQL 從SQL中搶了一些自己更適合的場(chǎng)景,所以它是在特定的時(shí)間和環(huán)境出現(xiàn)的一個(gè)產(chǎn)品。隨著Distributed SQL 的出現(xiàn), NoSQL 和 Distributed SQL 變得越來越像。未來幾年有可能和 Distributed SQL 合并作為了一個(gè)產(chǎn)品類型。 NoSQL 在市場(chǎng)份額上不會(huì)超過或取代SQL, 在一些場(chǎng)景上會(huì)繼續(xù)成長(zhǎng),尤其是用關(guān)系型數(shù)據(jù)集不好表達(dá)的,比如圖。
今天 NewSQL 和 Distributed SQL 這2個(gè)名詞在業(yè)界有一定的混淆。NewSQL 出現(xiàn)的早,可以被認(rèn)為是Distributed SQL 的子集。以后還是以 Distributed SQL 為定義好。 所以你的問題其實(shí)是在 傳統(tǒng)SQL,Distributed SQL 和 noSQL 之間如何選擇。
答案是,最重要的指標(biāo)是看用戶的數(shù)據(jù)access的場(chǎng)景,和對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。滿足以下條件,更多考慮NoSQL:
數(shù)據(jù)之間沒有關(guān)系,或者關(guān)系不強(qiáng)烈;每個(gè)row獨(dú)立,row 之間不存在大規(guī)模的一對(duì)多,多對(duì)多的關(guān)系。
數(shù)據(jù)本身適合KV, 或者自我包含的hierachy關(guān)系。 比如個(gè)人profile, 完全自我contain, 人很人之間不需要query。
Access 數(shù)據(jù)的方式主要以 ID (primary key) 為主的點(diǎn)讀,和順序access (按順序iterate)。
需要支持大規(guī)模的讀寫,低延時(shí)。
如果需要事務(wù)特性,范圍限于一個(gè)或幾個(gè)row, 沒有關(guān)系型的事務(wù)。
使用 SQL 主要是因?yàn)?row 和 row 之間有關(guān)系; 存在一對(duì)多、多對(duì)多的關(guān)系。同時(shí)在關(guān)系的前提下,支持事務(wù)。支持table join的語法。對(duì)一致性要求高(強(qiáng)一致)。 Distributed SQL 提供了跨節(jié)點(diǎn)的分布式事務(wù),query 等。但它是建立在犧牲性能的前提下的,延時(shí)大大價(jià)高。所以 NoSQL 是分布式+無關(guān)系,傳統(tǒng)SQL 是 有關(guān)系+無分布式, Distributed SQL 是 分布式 + 有關(guān)系 + 性能取舍。
NewSQL 現(xiàn)在已經(jīng)消退了,目前在國(guó)外退化為Distributed SQL原因如下:
卡耐基梅隆大學(xué)數(shù)據(jù)庫(kù)教授Andy Pavlo,在文中系統(tǒng)地分析了NewSQL興起到消亡的過程,給出了他認(rèn)為NewSQL消亡的一些原因,比如:
1)沒有開源。
2)沒有擁抱公有云,在成本與技術(shù)上難與跟公有云廠商抗衡。
3)已有的關(guān)系型數(shù)據(jù)庫(kù)MySQL,PostgreSQL做的不錯(cuò),而且在不斷改進(jìn),大部分客戶數(shù)據(jù)并不多,單節(jié)點(diǎn)存儲(chǔ)就能裝下。
4)銷售困難:客戶擔(dān)心切換風(fēng)險(xiǎn),而且面臨NoSQL在易用性方面的夾擊。
另外,在談到數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)時(shí),也提到NoSQL開始普遍支持SQL,joins和事務(wù)功能。到2021年后NewSQL概念除了中國(guó)的數(shù)據(jù)庫(kù)創(chuàng)業(yè)公司,國(guó)外較少提了,更多地轉(zhuǎn)向Distributed SQL。
NoSQL 和 關(guān)系型數(shù)據(jù)庫(kù),OLAP和OLTP的邊界目前和未來會(huì)進(jìn)一步模糊。市場(chǎng)的主要NoSQL產(chǎn)品開始普遍支持SQL,joins和事務(wù)功能,就我個(gè)人觀點(diǎn)而言,NoSQL未來應(yīng)該還是堅(jiān)守初心——高并發(fā),低延時(shí),高伸縮性,對(duì)于關(guān)系型數(shù)據(jù)庫(kù)擅長(zhǎng)的 跨表Join, 跨機(jī)事務(wù),AP等能力擴(kuò)展應(yīng)該謹(jǐn)慎些。產(chǎn)品選型時(shí),最好也從這些方面多考慮些。
MySQL Cluster提供多種方式對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行訪問; 最常見的方法當(dāng)然是SQL,不過正如下圖所示,我們還可以利用多種原生API幫助應(yīng)用程序直接從數(shù)據(jù)庫(kù)當(dāng)中讀取及寫入數(shù)據(jù),同時(shí)又能通過轉(zhuǎn)換為SQL以繞過MySQL Server的方式防止效率低下或者拉高開發(fā)復(fù)雜程度。現(xiàn)有API面向C++、Java、JPA、JavaScript/Node.js、HTTP以及Memcached協(xié)議。
基準(zhǔn)目標(biāo):每秒2億次查詢
MySQL Cluster在設(shè)計(jì)當(dāng)中主要面向兩種工作負(fù)載類型:
-OLTP(即聯(lián)機(jī)事務(wù)處理):內(nèi)存優(yōu)化型表提供次毫秒級(jí)低延遲與堪稱極端水平的OLTP工作負(fù)載并發(fā)能力,同時(shí)仍然保證良好的耐久性表現(xiàn); 此外,其也能夠被用于處理基于磁盤的表數(shù)據(jù)。
-臨時(shí)性搜索:MySQL Cluster增加了并行數(shù)量上限,從而在對(duì)表內(nèi)非索引數(shù)據(jù)列進(jìn)行掃描時(shí)帶來顯著的速度提升。
值得一提的是,MySQL Cluster在處理OLTP工作負(fù)載方面的表現(xiàn)最為突出,特別是在以并發(fā)方式發(fā)出海量查詢/事務(wù)請(qǐng)求的情況下。為此,我們一般會(huì)使用flexAsynch基準(zhǔn)測(cè)試來衡量將更多數(shù)據(jù)節(jié)點(diǎn)添加到集群當(dāng)中后,NoSQL所獲得的實(shí)際性能擴(kuò)展效果。
NewSQL是對(duì)一類現(xiàn)代關(guān)系型數(shù)據(jù)庫(kù)的統(tǒng)稱,這類數(shù)據(jù)庫(kù)對(duì)于一般的OLTP讀寫請(qǐng)求提供可橫向擴(kuò)展的性能,同時(shí)支持事務(wù)的ACID保證。這些系統(tǒng)既擁有NoSQL數(shù)據(jù)庫(kù)的擴(kuò)展性,又保持傳統(tǒng)數(shù)據(jù)庫(kù)的事務(wù)特性。NewSQL重新將“應(yīng)用程序邏輯與數(shù)據(jù)操作邏輯應(yīng)該分離”的理念帶回到現(xiàn)代數(shù)據(jù)庫(kù)的世界,這也驗(yàn)證了歷史的發(fā)展總是呈現(xiàn)出螺旋上升的形式。
在21世紀(jì)00年代中,出現(xiàn)了許多數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng) (如 Vertica,Greeplum 和AsterData),這些以處理OLAP 請(qǐng)求為設(shè)計(jì)目標(biāo)的系統(tǒng)并不在本文定義的NewSQL范圍內(nèi)。OLAP 數(shù)據(jù)庫(kù)更關(guān)注針對(duì)海量數(shù)據(jù)的大型、復(fù)雜、只讀的查詢,查詢時(shí)間可能持續(xù)秒級(jí)、分鐘級(jí)甚至更長(zhǎng)。
NoSQL的擁躉普遍認(rèn)為阻礙傳統(tǒng)數(shù)據(jù)庫(kù)橫向擴(kuò)容、提高可用性的原因在于ACID保證和關(guān)系模型,因此NoSQL運(yùn)動(dòng)的核心就是放棄事務(wù)強(qiáng)一致性以及關(guān)系模型,擁抱最終一致性和其它數(shù)據(jù)模型?(如 key/value,graphs 和Documents)。
兩個(gè)最著名的NoSQL數(shù)據(jù)庫(kù)就是Google的BigTable和Amazon的Dynamo,由于二者都未開源,其它組織就開始推出類似的開源替代項(xiàng)目,包括Facebook的 Cassandra (基于BigTable和Dynamo)、PowerSet的 Hbase(基于BigTable)。有一些創(chuàng)業(yè)公司也加入到這場(chǎng)NoSQL運(yùn)動(dòng)中,它們不一定是受BigTable和Dynamo的啟發(fā),但都響應(yīng)了NoSQL的哲學(xué),其中最出名的就是MongoDB。
在21世紀(jì)00年代末,市面上已經(jīng)有許多供用戶選擇的分布式數(shù)據(jù)庫(kù)產(chǎn)品。使用NoSQL的優(yōu)勢(shì)在于應(yīng)用開發(fā)者可以更關(guān)注應(yīng)用邏輯本身,而非數(shù)據(jù)庫(kù)的擴(kuò)展性問題;但與此同時(shí)許多應(yīng)用,如金融系統(tǒng)、訂單處理系統(tǒng),由于無法放棄事務(wù)的一致性要求被拒之門外。
一些組織,如Google,已經(jīng)發(fā)現(xiàn)他們的許多工程師將過多的精力放在處理數(shù)據(jù)一致性上,這既暴露了數(shù)據(jù)庫(kù)的抽象、又提高了代碼的復(fù)雜度,這時(shí)候要么選擇回到傳統(tǒng)DBMS時(shí)代,用更高的機(jī)器配置縱向擴(kuò)容,要么選擇回到中間件時(shí)代,開發(fā)支持分布式事務(wù)的中間件。這兩種方案成本都很高,于是NewSQL運(yùn)動(dòng)開始醞釀。
NewSQL數(shù)據(jù)庫(kù)設(shè)計(jì)針對(duì)的讀寫事務(wù)有以下特點(diǎn):
1、耗時(shí)短。
2、使用索引查詢,涉及少量數(shù)據(jù)。
3、重復(fù)度高,通常使用相同的查詢語句和不同的查詢參考。
也有一些學(xué)者認(rèn)為NewSQL系統(tǒng)是特指實(shí)現(xiàn)上使用Lock-free并發(fā)控制技術(shù)和share-nothing架構(gòu)的數(shù)據(jù)庫(kù)。所有我們認(rèn)為是NewSQL的數(shù)據(jù)庫(kù)系統(tǒng)確實(shí)都有這樣的特點(diǎn)。
目錄
- 數(shù)據(jù)庫(kù)分類維度:關(guān)系型/非關(guān)系型、交易型/分析型
- NoSQL數(shù)據(jù)庫(kù)的進(jìn)一步分類
- OLTP市場(chǎng)規(guī)模:關(guān)系型數(shù)據(jù)庫(kù)仍占營(yíng)收大頭
- 數(shù)據(jù)庫(kù)市場(chǎng)份額:云服務(wù)和新興廠商主導(dǎo)NoSQL
- 開源數(shù)據(jù)庫(kù) vs. 商業(yè)數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)三大陣營(yíng):傳統(tǒng)廠商和云服務(wù)提供商
最近由于時(shí)間原因我寫東西少了,在公眾號(hào)上也轉(zhuǎn)載過幾篇搞數(shù)據(jù)庫(kù)朋友的大作。按說我算是外行,沒資格在這個(gè)領(lǐng)域品頭論足,而當(dāng)我看到下面這份報(bào)告時(shí)立即產(chǎn)生了學(xué)習(xí)的興趣,同時(shí)也想就能看懂的部分寫點(diǎn)心得體會(huì)分享給大家。
可能本文比較適合普及性閱讀,讓數(shù)據(jù)庫(kù)領(lǐng)域資深的朋友見笑了:)
數(shù)據(jù)庫(kù)分類維度:關(guān)系型/非關(guān)系型、交易型/分析型
首先是分類維度,上圖中的縱軸分類為Relational Database(關(guān)系型數(shù)據(jù)庫(kù),RDBMS)和Nonrelational Database (非關(guān)系型數(shù)據(jù)庫(kù),NoSQL),橫軸的分類為Operational(交易型,即OLTP)和Analytical(分析型,即OLAP)。
按照習(xí)慣我們先看關(guān)系型數(shù)據(jù)庫(kù),左上角的交易型類別中包括大家熟悉的商業(yè)數(shù)據(jù)庫(kù)Oracle、MS SQL Server、DB2、Infomix,也包括開源領(lǐng)域流行的MySQL(MariaDB是它的一個(gè)分支)、PostgreSQL,還有云上面比較常見的SQL Azure和Amazon Aurora等。
比較有意思的是,SAP HANA正好位于交易型和分析型的中間分界處,不要忘了SAP還收購(gòu)了Sybase,盡管后者今天不夠風(fēng)光了,而早年微軟的SQL Server都是來源于Sybase。Sybase的ASE數(shù)據(jù)庫(kù)和分析型Sybase IQ還是存在的。
右上角的分析型產(chǎn)品中包括幾款知名的列式數(shù)據(jù)倉(cāng)庫(kù)Pivotal Greenplum、Teradata和IBM Netezza(已宣布停止支持),來自互聯(lián)網(wǎng)巨頭的Google Big Query和Amazon RedShift。至于Oracle Exadata一體機(jī),它上面運(yùn)行的也是Oracle數(shù)據(jù)庫(kù),其最初設(shè)計(jì)用途是OLAP,而在后來發(fā)展中也可以良好兼顧OLTP,算是一個(gè)跨界產(chǎn)品吧。
再來看非關(guān)系型數(shù)據(jù)庫(kù),左下角的交易型產(chǎn)品中,有幾個(gè)我看著熟悉的MongoDB、Redis、Amazon DynamoDB和DocumentDB等;右下角的分析型產(chǎn)品包括著名的Hadoop分支Cloudera、Hortonworks(這2家已并購(gòu)),Bigtable(來自Google,Hadoop中的HBase是它的開源實(shí)現(xiàn))、Elasticsearch等。
顯然非關(guān)系型數(shù)據(jù)庫(kù)的分類要更加復(fù)雜,產(chǎn)品在應(yīng)用中的差異化也比傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)更大。Willian Blair很負(fù)責(zé)任地對(duì)它們給出了進(jìn)一步的分類。
NoSQL數(shù)據(jù)庫(kù)的進(jìn)一步分類
上面這個(gè)圖表應(yīng)該說很清晰了。非關(guān)系型數(shù)據(jù)庫(kù)可以分為Document-based Store(基于文檔的存儲(chǔ))、Key-Value Store(鍵值存儲(chǔ))、Graph-based(圖數(shù)據(jù)庫(kù))、Time Series(時(shí)序數(shù)據(jù)庫(kù)),以及Wide Cloumn-based Store(寬列式存儲(chǔ))。
我們?cè)賮砜聪旅總€(gè)細(xì)分類別中的產(chǎn)品:
文檔存儲(chǔ) :MongoDB、Amazon DocumentDB、Azure Cosmos DB等
Key-Value存儲(chǔ) :Redis Labs、Oracle Berkeley DB、Amazon DynamoDB、Aerospike等
圖數(shù)據(jù)庫(kù) :Neo4j等
時(shí)序數(shù)據(jù)庫(kù) :InfluxDB等
WideCloumn :DataStax、Cassandra、Apache HBase和Bigtable等
多模型數(shù)據(jù)庫(kù) :支持上面不只一種類別特性的NoSQL,比如MongoDB、Redis Labs、Amazon DynamoDB和Azure Cosmos DB等。
OLTP市場(chǎng)規(guī)模:關(guān)系型數(shù)據(jù)庫(kù)仍占營(yíng)收大頭
上面這個(gè)基于IDC數(shù)據(jù)的交易型數(shù)據(jù)庫(kù)市場(chǎng)份額共有3個(gè)分類,其中深藍(lán)色部分的關(guān)系型數(shù)據(jù)庫(kù)(RDBMS,在這里不統(tǒng)計(jì)數(shù)據(jù)挖掘/分析型數(shù)據(jù)庫(kù))占據(jù)80%以上的市場(chǎng)。
Dynamic Database(DDMS,動(dòng)態(tài)數(shù)據(jù)庫(kù)管理系統(tǒng),同樣不統(tǒng)計(jì)Hadoop)就是我們前面聊的非關(guān)系型數(shù)據(jù)庫(kù)。這部分市場(chǎng)顯得?。ǖl(fā)展勢(shì)頭看好),我覺得與互聯(lián)網(wǎng)等大公司多采用開源+自研,而不買商業(yè)產(chǎn)品有關(guān)。
而遵循IDC的統(tǒng)計(jì)分類,在上圖灰色部分的“非關(guān)系型數(shù)據(jù)庫(kù)市場(chǎng)”其實(shí)另有定義,參見下面這段文字:
數(shù)據(jù)庫(kù)市場(chǎng)份額:云服務(wù)和新興廠商主導(dǎo)NoSQL
請(qǐng)注意,這里的關(guān)系型數(shù)據(jù)庫(kù)統(tǒng)計(jì)又包含了分析型產(chǎn)品。Oracle營(yíng)收份額42%仍居第一,隨后排名依次為微軟、IBM、SAP和Teradata。
代表非關(guān)系型數(shù)據(jù)庫(kù)的DDMS分類中(這里同樣加入Hadoop等),云服務(wù)和新興廠商成為了主導(dǎo),微軟應(yīng)該是因?yàn)樵芐QL Server的基礎(chǔ)而小幅領(lǐng)先于AWS,這2家一共占據(jù)超過50%的市場(chǎng),接下來的排名是Google、Cloudera和Hortonworks(二者加起來13%)。
上面是IDC傳統(tǒng)分類中的“非關(guān)系型數(shù)據(jù)庫(kù)”,在這里IBM和CA等應(yīng)該主要是針對(duì)大型機(jī)的產(chǎn)品,InterSystems有一款在國(guó)內(nèi)醫(yī)療HIS系統(tǒng)中應(yīng)用的Caché數(shù)據(jù)庫(kù)(以前也是運(yùn)行在Power小機(jī)上比較多)。我就知道這些,余下的就不瞎寫了。
開源數(shù)據(jù)庫(kù) vs. 商業(yè)數(shù)據(jù)庫(kù)
按照流行度來看,開源數(shù)據(jù)庫(kù)從2013年到現(xiàn)在一直呈現(xiàn)增長(zhǎng),已經(jīng)快要追上商業(yè)數(shù)據(jù)庫(kù)了。
商業(yè)產(chǎn)品在關(guān)系型數(shù)據(jù)庫(kù)的占比仍然高達(dá)60.5%,而上表中從這列往左的分類都是開源占優(yōu):
Wide Cloumn:開源占比81.8%;
時(shí)序數(shù)據(jù)庫(kù):開源占比80.7%;
文檔存儲(chǔ):開源占比80.0%;
Key-Value存儲(chǔ):開源占比72.2%;
圖數(shù)據(jù)庫(kù):開源占比68.4%;
搜索引擎:開源占比65.3%
按照開源License的授權(quán)模式,上面這個(gè)三角形越往下管的越寬松。比如MySQL屬于GPL,在互聯(lián)網(wǎng)行業(yè)用戶較多;而PostgreSQL屬于BSD授權(quán),國(guó)內(nèi)有不少數(shù)據(jù)庫(kù)公司的產(chǎn)品就是基于Postgre哦。
數(shù)據(jù)庫(kù)三大陣營(yíng):傳統(tǒng)廠商和云服務(wù)提供商
前面在討論市場(chǎng)份額時(shí),我提到過交易型數(shù)據(jù)庫(kù)的4個(gè)巨頭仍然是Oracle、微軟、IBM和SAP,在這里William Blair將他們歸為第一陣營(yíng)。
隨著云平臺(tái)的不斷興起,AWS、Azure和GCP(Google Cloud Platform)組成了另一個(gè)陣營(yíng),在國(guó)外分析師的眼里還沒有BAT,就像有的朋友所說,國(guó)內(nèi)互聯(lián)網(wǎng)巨頭更多是自身業(yè)務(wù)導(dǎo)向的,在本土發(fā)展公有云還有些優(yōu)勢(shì),短時(shí)間內(nèi)將技術(shù)輸出到國(guó)外的難度應(yīng)該還比較大。(當(dāng)然我并不認(rèn)為國(guó)內(nèi)缺優(yōu)秀的DBA和研發(fā)人才)
第三個(gè)陣容就是規(guī)模小一些,但比較專注的數(shù)據(jù)庫(kù)玩家。
接下來我再帶大家簡(jiǎn)單過一下這前兩個(gè)陣容,看看具體的數(shù)據(jù)庫(kù)產(chǎn)品都有哪些。
甲骨文的產(chǎn)品,我相對(duì)熟悉一些的有Oracle Database、MySQL以及Exadata一體機(jī)。
IBM DB2也是一個(gè)龐大的家族,除了傳統(tǒng)針對(duì)小型機(jī)、x86(好像用的人不多)、z/OS大型機(jī)和for i的版本之外,如今也有了針對(duì)云和數(shù)據(jù)挖掘的產(chǎn)品。記得抱枕大師對(duì)Informix的技術(shù)比較推崇,可惜這個(gè)產(chǎn)品發(fā)展似乎不太理想。
微軟除了看家的SQL Server之外,在Azure云上還能提供MySQL、PostgreSQL和MariaDB開源數(shù)據(jù)庫(kù)。應(yīng)該說他們是傳統(tǒng)軟件License+PaaS服務(wù)兩條腿走路的。
如今人們一提起SAP的數(shù)據(jù)庫(kù)就想起HANA,之前從Sybase收購(gòu)來的ASE(Adaptive Server Enterprise)和IQ似乎沒有之前發(fā)展好了。
在云服務(wù)提供商數(shù)據(jù)庫(kù)的3巨頭中,微軟有SQL Server的先天優(yōu)勢(shì),甚至把它移植到了Linux擁抱開源平臺(tái)。關(guān)系型數(shù)據(jù)庫(kù)的創(chuàng)新方面值得一提的是Amazon Aurora和Google Spanner(也有非關(guān)系型特性),至于它們具體好在哪里我就不裝內(nèi)行了:)
非關(guān)系型數(shù)據(jù)庫(kù)則是Amazon全面開花,這與其云計(jì)算業(yè)務(wù)發(fā)展早并且占據(jù)優(yōu)勢(shì)有關(guān)。Google當(dāng)年的三篇經(jīng)典論文對(duì)業(yè)界影響深遠(yuǎn),Yahoo基于此開源的Hadoop有一段時(shí)間幾乎是大數(shù)據(jù)的代名詞。HBase和Hive如今已不再是人們討論的熱點(diǎn),而Bigtable和BigQuery似乎仍然以服務(wù)Google自身業(yè)務(wù)為主,畢竟GCP的規(guī)模比AWS要小多了。
最后這張DB-Engines的排行榜,相信許多朋友都不陌生,今年3月已經(jīng)不是最新的數(shù)據(jù),在這里列出只是給大家一個(gè)參考。該排行榜幾乎在每次更新時(shí),都會(huì)有國(guó)內(nèi)數(shù)據(jù)庫(kù)專家撰寫點(diǎn)評(píng)。
以上是我周末的學(xué)習(xí)筆記,班門弄斧,希望對(duì)大家有幫助。
參考資料《Database Software Market:The Long-Awaited Shake-up》
擴(kuò)展閱讀:《 數(shù)據(jù)庫(kù)存儲(chǔ):互相最想知道的事 》
尊重知識(shí),轉(zhuǎn)載時(shí)請(qǐng)保留全文。感謝您的閱讀和支持!