隨著web前端技術(shù)2.0的快速發(fā)展,推動(dòng)力非關(guān)系型、分布式數(shù)據(jù)存儲(chǔ)的高速發(fā)展,這些技術(shù)的發(fā)展不可以保護(hù)關(guān)系數(shù)據(jù)的ACID特性。這時(shí)NoSQL數(shù)據(jù)庫就是這個(gè)時(shí)候得到了廣泛的應(yīng)用。其實(shí)NoSQL的概念早在2009年就人們被提了出來。NoSQL比較常見的解釋為“non-relational”,但是另一個(gè)解釋“Not Only SQL”也被很多人接受。那么NoSQL數(shù)據(jù)庫面臨的挑戰(zhàn)有哪些?什么時(shí)候使用比較給力?
NoSQL數(shù)據(jù)庫面臨的挑戰(zhàn)有哪些?
1、成熟度
RDBMS系統(tǒng)由來已久。NoSQL擁護(hù)者們會(huì)說RDBMS的高齡是其衰退的標(biāo)志,不過對(duì)于大多數(shù)CIO來說,RDBMS的成熟讓人放心。對(duì)于大多數(shù)情況來說,RDBMS系統(tǒng)是穩(wěn)定且功能豐富的。相比較而言,大多數(shù)NoSQL數(shù)據(jù)庫則還有很多特性有待實(shí)現(xiàn)。
2、支持
企業(yè)需要的是安心,如果關(guān)鍵系統(tǒng)出現(xiàn)了故障,他們可以獲得即時(shí)的支持。所有RDBMS廠商都在不遺余力地提供良好的企業(yè)支持。與之相反,大多數(shù)NoSQL系統(tǒng)都是開源項(xiàng)目,雖然每種數(shù)據(jù)庫都有那么幾家公司提供支持,不過這些公司大多都是小的初創(chuàng)公司,沒有全球支持資源,也沒有Oracle、微軟或是IBM那種令人放心的公信力。
3、分析與商業(yè)智能
NoSQL數(shù)據(jù)庫在Web 2.0應(yīng)用時(shí)代開始出現(xiàn)。因此,大多數(shù)特性都是面向這些應(yīng)用的需要的。然而,應(yīng)用中的數(shù)據(jù)對(duì)于業(yè)務(wù)來說是有價(jià)值的,這種價(jià)值遠(yuǎn)遠(yuǎn)超出了Web應(yīng)用那種CRUD。企業(yè)數(shù)據(jù)庫中的業(yè)務(wù)信息可以幫助改進(jìn)效率并提升競(jìng)爭(zhēng)力,商業(yè)智能對(duì)于大中型企業(yè)來說是個(gè)非常關(guān)鍵的IT問題。
4、管理
NoSQL的設(shè)計(jì)目標(biāo)是提供零管理的解決方案,不過當(dāng)今的現(xiàn)實(shí)卻離這個(gè)目標(biāo)還相去甚遠(yuǎn)。現(xiàn)在的NoSQL需要很多技巧才能用好,并且需要不少人力、物力來維護(hù)。
5、專業(yè)
全球有很多開發(fā)者,每個(gè)業(yè)務(wù)部門都會(huì)有熟悉RDBMS概念與編程的人。相反,幾乎每個(gè)NoSQL開發(fā)者都處于學(xué)習(xí)模式。這種狀況會(huì)隨著時(shí)間的流逝而發(fā)生改觀。但現(xiàn)在,找到一個(gè)有經(jīng)驗(yàn)的RDBMS程序員或是管理員要比NoSQL專家容易多了。
什么時(shí)候使用NoSQL比較給力?
1、數(shù)據(jù)庫表schema經(jīng)常變化
比如在線商城,維護(hù)產(chǎn)品的屬性經(jīng)常要增加字段,這就意味著ORMapping層的代碼和配置要改,如果該表的數(shù)據(jù)量過百萬,新增字段會(huì)帶來額外開銷(重建索引等)。NoSQL應(yīng)用在這種場(chǎng)景,可以極大提升DB的可伸縮性,開發(fā)人員可以將更多的精力放在業(yè)務(wù)層。
2、數(shù)據(jù)庫表字段是復(fù)雜數(shù)據(jù)類型
對(duì)于復(fù)雜數(shù)據(jù)類型,比如SQL Sever提供了可擴(kuò)展性的支持,像xml類型的字段。很多用過的同學(xué)應(yīng)該知道,該字段不管是查詢還是更改,效率非常一般。主要原因是是DB層對(duì)xml字段很難建高效索引,應(yīng)用層又要做從字符流到dom的解析轉(zhuǎn)換。NoSQL以json方式存儲(chǔ),提供了原生態(tài)的支持,在效率方便遠(yuǎn)遠(yuǎn)高于傳統(tǒng)關(guān)系型數(shù)據(jù)庫。
3、高并發(fā)數(shù)據(jù)庫請(qǐng)求
此類應(yīng)用常見于web2.0的網(wǎng)站,很多應(yīng)用對(duì)于數(shù)據(jù)一致性要求很低,而關(guān)系型數(shù)據(jù)庫的事務(wù)以及大表join反而成了”性能殺手”。在高并發(fā)情況下,sql與no-sql的性能對(duì)比由于環(huán)境和角度不同一直是存在爭(zhēng)議的,并不是說在任何場(chǎng)景,no-sql總是會(huì)比sql快。
4、海量數(shù)據(jù)的分布式存儲(chǔ)
海量數(shù)據(jù)的存儲(chǔ)如果選用大型商用數(shù)據(jù),如Oracle,那么整個(gè)解決方案的成本是非常高的,要花很多錢在軟硬件上。NoSQL分布式存儲(chǔ),可以部署在廉價(jià)的硬件上,是一個(gè)性價(jià)比非常高的解決方案。Mongo的auto-sharding已經(jīng)運(yùn)用到了生產(chǎn)環(huán)境。
并不是說NoSQL可以解決一切問題,像ERP系統(tǒng)、BI系統(tǒng),在大部分情況還是推薦使用傳統(tǒng)關(guān)系型數(shù)據(jù)庫。主要的原因是此類系統(tǒng)的業(yè)務(wù)模型復(fù)雜,使用NoSQL將導(dǎo)致系統(tǒng)的維護(hù)成本增加。
以上即是關(guān)于NoSQL數(shù)據(jù)庫面臨的挑戰(zhàn)有哪些,以及什么時(shí)候使用比較給力的全部?jī)?nèi)容介紹,想了解更多關(guān)于NoSQL數(shù)據(jù)庫的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。