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