關(guān)系型數(shù)據(jù)庫尚能飯否?-創(chuàng)新互聯(lián)

一、關(guān)系型數(shù)據(jù)庫尚能飯否?

創(chuàng)新互聯(lián)2013年至今,先為寧陵等服務(wù)建站,寧陵等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為寧陵企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

關(guān)系型數(shù)據(jù)庫出現(xiàn)至今的幾十年時間里,一直是數(shù)據(jù)庫領(lǐng)域的佼佼者。下圖是全球較為權(quán)威的DB-Engines的統(tǒng)計排名, 排名主要依據(jù)Google以及Bing搜索引擎的關(guān)鍵字搜索數(shù)量、從業(yè)人數(shù)信息、職位搜索量、Stack Overflow上提問關(guān)注數(shù)量等 :

關(guān)系型數(shù)據(jù)庫尚能飯否?

DB-Engines 2018年6月公布的數(shù)據(jù)庫排名

截止至2018年6月,排名前6位的數(shù)據(jù)庫,僅有排名第5的MongoDB是文檔型數(shù)據(jù)庫,其余全部是關(guān)系型數(shù)據(jù)庫,且前3位所占有的比重遠(yuǎn)遠(yuǎn)領(lǐng)先于其后的其他數(shù)據(jù)庫。

1、優(yōu)勢

關(guān)系型數(shù)據(jù)庫在經(jīng)過大數(shù)據(jù)、NoSQL以及NewSQL等技術(shù)革新的輪番轟炸之后依然堅挺,與其固有的優(yōu)勢密不可分。它的優(yōu)勢主要體現(xiàn)在對開發(fā)人員、運維人員以及系統(tǒng)本身這3個方面的影響。

開發(fā)優(yōu)勢

對于開發(fā)人員來說,關(guān)系型數(shù)據(jù)庫的首要優(yōu)勢是面向SQL。

SQL是關(guān)系型數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言,雖然不同的關(guān)系型數(shù)據(jù)庫有不同的SQL方言,但基于ANSI標(biāo)準(zhǔn)的SQL是大部分關(guān)系型數(shù)據(jù)庫都支持的。且SQL是面向數(shù)據(jù)庫的訪問語言,可以非常方便的對數(shù)據(jù)庫進(jìn)行增、刪、改、查以及授權(quán)和管理。SQL的查詢靈活度非常高,可以十分便捷的在聯(lián)機(jī)事務(wù)處理(OLTP(https://www.xihefangpei.com))與聯(lián)機(jī)分析處理(OLAP)之間轉(zhuǎn)換。

此外,SQL是應(yīng)用開發(fā)工程師所必須掌握的一門編程語言,流行度非常廣泛,招聘到一個完全不會寫SQL的應(yīng)用開發(fā)程序員的概率非常小。因此,SQL極大降低了開發(fā)人員招聘的成本。

除了SQL語言本身,各種開發(fā)語言對關(guān)系型數(shù)據(jù)庫的支持也十分完善。以Java舉例:JDBC是Java語言訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)接口,各個關(guān)系型數(shù)據(jù)庫廠商均提供了實現(xiàn)JDBC接口的驅(qū)動程序。使用Java語言開發(fā)的工程師無需感知不同關(guān)系型數(shù)據(jù)庫間的差異,只要根據(jù)JDBC接口編程即可。

由于面向關(guān)系的數(shù)據(jù)庫存儲與面向?qū)ο蟮腏ava程序不易一一對應(yīng),產(chǎn)生了很多對象關(guān)系映射(ORM)框架用于簡化關(guān)系對象模型的阻抗不匹配,如JPA及其官方實現(xiàn)Hibernate、MyBatis、Jooq等,進(jìn)一步簡化了應(yīng)用工程師的日常開發(fā)工作。ORM框架大多是采用JDBC封裝,對各個關(guān)系型數(shù)據(jù)庫的兼容性非常高。

運維優(yōu)勢

關(guān)系型數(shù)據(jù)庫由于存在時間長久,針對每一種常見的關(guān)系型數(shù)據(jù)庫,都能較容易地招聘到相應(yīng)的數(shù)據(jù)庫管理員(DBA),以保證關(guān)系型數(shù)據(jù)庫的穩(wěn)定性、安全性、完整性以及性能,同時保證監(jiān)控和分析關(guān)系型數(shù)據(jù)庫的系統(tǒng)瓶頸以及設(shè)計的合理性。

成熟的關(guān)系型數(shù)據(jù)庫都有自己完善的生態(tài)圈,用于保證高可用、數(shù)據(jù)備份、性能監(jiān)測分析等成熟的配套工具。規(guī)模較大的企業(yè)及重要業(yè)務(wù)系統(tǒng)一般都需要專門的DBA進(jìn)行運維工作。

系統(tǒng)優(yōu)勢

只有時間才是檢驗技術(shù)的成熟與穩(wěn)定的標(biāo)準(zhǔn)。關(guān)系型數(shù)據(jù)庫經(jīng)歷了幾十年的考驗,已經(jīng)有超大規(guī)模的使用,其存儲引擎已經(jīng)十分成熟。基于MVCC的數(shù)據(jù)庫引擎在性能和正確性上做到了很好的平衡,并且通過B+tree索引大幅提升了查詢的效率。面對數(shù)據(jù)這樣的關(guān)鍵節(jié)點,謹(jǐn)慎的選用關(guān)系型數(shù)據(jù)庫是架構(gòu)師們的選方案。

基于ACID的事務(wù)是關(guān)系型數(shù)據(jù)庫帶給應(yīng)用系統(tǒng)的又一強(qiáng)力保障。ACID指數(shù)據(jù)庫事務(wù)能夠正確執(zhí)行的四個基本要素的首字母縮寫。它包括原子性、一致性、隔離性和持久性。只有支持事務(wù)的數(shù)據(jù)庫才能大限度的保證數(shù)據(jù)的正確性和完整性:

  • 原子性 (Atomicity) 。 位于同一事務(wù)中的所有操作,要么全部完成(提交),要么全部不完成(回滾),不能停滯在某個中間環(huán)節(jié)。如果事務(wù)在執(zhí)行過程中發(fā)生錯誤,數(shù)據(jù)將會恢復(fù)到事務(wù)開始前的狀態(tài)。

  • 一致性 (Consistency) 。 非只讀的事務(wù)應(yīng)封裝數(shù)據(jù)庫的狀態(tài)從一個一致狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€一致狀態(tài)。一致狀態(tài)是指數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)滿足完整性約束,并且事務(wù)的中間狀態(tài)不應(yīng)在事務(wù)之外被感知。

  • 隔離性 (Isolation) 。 多事務(wù)并發(fā)執(zhí)行時,不應(yīng)相互影響其他事務(wù),就像只有這一個操作在并行的被數(shù)據(jù)庫執(zhí)行一樣。

  • 持久性 (Durability) 。 事務(wù)完成后,該事務(wù)對數(shù)據(jù)庫的所有更改將持久的保存在數(shù)據(jù)庫中。

在編程中使用事務(wù)也并非難事,各類如Spring之類的開發(fā)框架已經(jīng)在面向切面(AOP)層面將其做的十分簡單和優(yōu)雅了。

2、不足

關(guān)系型數(shù)據(jù)庫的性能和訪問承載能力,在面向單一數(shù)據(jù)節(jié)點的企業(yè)級應(yīng)用時代是無可挑剔的。但在訪問量和數(shù)據(jù)量急劇膨脹的今天,關(guān)系型數(shù)據(jù)庫已經(jīng)很難再像以前那樣成為如此巨大規(guī)模系統(tǒng)的底層支撐,甚至成為了應(yīng)用系統(tǒng)的瓶頸所在。

關(guān)系型數(shù)據(jù)庫主要有以下三處不足:

  • 單節(jié)點并發(fā)訪問量受限。 在服務(wù)任意擴(kuò)容和拆分的同時,由于數(shù)據(jù)庫中存儲的數(shù)據(jù)是有狀態(tài)的,因此很難像服務(wù)一樣任意拆分和擴(kuò)容。單一的數(shù)據(jù)庫節(jié)點承載大量的服務(wù)節(jié)點的查詢和更新請求,這并非一個對等的架構(gòu)部署模式。

  • 單節(jié)點數(shù)據(jù)承載量受限。 單一數(shù)據(jù)庫節(jié)點對數(shù)據(jù)的承載能力是有限的。數(shù)據(jù)量越大,用于查詢數(shù)據(jù)所創(chuàng)建的索引的深度就越深。索引深度決定IO訪問的次數(shù),索引深度越深,查找越慢。

  • 分布式事務(wù)性能衰退嚴(yán)重。 將數(shù)據(jù)庫拆分之后,需要使用分布式事務(wù)代替本地事務(wù)?;赬A的分布式事務(wù)采用兩階段提交,在準(zhǔn)備階段即鎖定資源,直至整個事務(wù)結(jié)束。在系統(tǒng)并發(fā)度增加時,性能會急劇衰退。

綜上所述,關(guān)系型數(shù)據(jù)庫的不足,歸根結(jié)底是設(shè)計初衷導(dǎo)致的。它并非分布式的產(chǎn)物,對分布式系統(tǒng)的天生不友好,導(dǎo)致它很難適應(yīng)互聯(lián)網(wǎng)的架構(gòu)模型。面對可以隨時彈性擴(kuò)容的無狀態(tài)服務(wù),關(guān)系型數(shù)據(jù)庫已經(jīng)略顯笨重。

當(dāng)前標(biāo)題:關(guān)系型數(shù)據(jù)庫尚能飯否?-創(chuàng)新互聯(lián)
分享鏈接:http://bm7419.com/article34/cdgope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、定制開發(fā)、網(wǎng)站收錄、小程序開發(fā)微信小程序、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(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)

營銷型網(wǎng)站建設(shè)