新聞中心
一、NoSQL項(xiàng)目提出的背景。

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比瀘縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式瀘縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瀘縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴(lài)。
NoSQL的支持者喜歡這個(gè)NoSQL項(xiàng)目,主要是看其在性能上的優(yōu)勢(shì)。NoSQL支持者稱(chēng),NoSQL技術(shù)可以打破傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的性能瓶頸。如通過(guò)NoSQL架構(gòu)可以省去將Web或者Java 應(yīng)用和數(shù)據(jù)轉(zhuǎn)換成SQL友好格式的時(shí)間,減少SQL語(yǔ)句解析與優(yōu)化的時(shí)間,讓?xiě)?yīng)用程序的速度變得更加快捷。更多關(guān)于NoSQL的報(bào)道請(qǐng)參考《對(duì)SQL說(shuō)不!NoSQL的數(shù)據(jù)庫(kù)技術(shù)革命》
確實(shí)基于SQL的關(guān)系型數(shù)據(jù)庫(kù),在性能上確實(shí)存在一些瓶頸。但是這大部分并不是這個(gè)門(mén)SQL技術(shù)所造成的。而是因?yàn)樵谠O(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候,表與表之間的關(guān)系、表的索引或者表空間的部署等等沒(méi)有設(shè)計(jì)好做造成的。所以關(guān)系型數(shù)據(jù)庫(kù)性能不理想,并不能全部怪罪到這么技術(shù)上。通常情況下,對(duì)原有的數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行優(yōu)化,往往可以在很大程度上提升數(shù)據(jù)庫(kù)的性能。所以說(shuō),NoSQL這個(gè)項(xiàng)目的背景是站不住腳的。
二、NoSQL革命仍然需等待。
根據(jù)目前的情況來(lái)看,筆者對(duì)于NoSQL項(xiàng)目的前景并不是很看好。或者說(shuō),對(duì)其前途感到很悲觀(guān)。NoSQL項(xiàng)目很難跟傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相抗衡。甚至其想達(dá)到MySQL這個(gè)開(kāi)源數(shù)據(jù)庫(kù)的高度都很難。
1、 NoSQL很難實(shí)現(xiàn)數(shù)據(jù)的完整性。
當(dāng)NoSQL這個(gè)項(xiàng)目開(kāi)始以來(lái),筆者也適當(dāng)?shù)年P(guān)注過(guò)。但是筆者了解了這個(gè)項(xiàng)目后,對(duì)它的印象并不是很好。因?yàn)楦鶕?jù)筆者的了解,很多關(guān)系型數(shù)據(jù)庫(kù)中優(yōu)秀的、實(shí)用的功能,在NoSQL數(shù)據(jù)庫(kù)卻無(wú)法實(shí)現(xiàn)。如在任何一個(gè)關(guān)系型的數(shù)據(jù)庫(kù)中,都可以很容易的實(shí)現(xiàn)數(shù)據(jù)的完整性。如在Oracle數(shù)據(jù)庫(kù)中,可以輕而易舉的實(shí)現(xiàn)實(shí)體完整性(通過(guò)主鍵或者非空約束來(lái)實(shí)現(xiàn))、參照完整性(通過(guò)主鍵、外鍵來(lái)實(shí)現(xiàn))、用戶(hù)定于完整性(通過(guò)約束或者觸發(fā)器來(lái)實(shí)現(xiàn))。通過(guò)這些機(jī)制,可以實(shí)現(xiàn)數(shù)據(jù)的完整性。如可以設(shè)置某表中某一個(gè)列的值是唯一的而且不能夠?yàn)榭?。或者說(shuō)在某表中引用外鍵的話(huà),在另一張表中這個(gè)值必須存在。無(wú)論在刪除或者更新的時(shí)候,都必須存在。
NoSQL支持者也承認(rèn)關(guān)系型數(shù)據(jù)庫(kù)在數(shù)據(jù)完整性上的作用是不可替代的。但是他們卻反駁說(shuō),企業(yè)可能用不到這么復(fù)雜的功能。對(duì)于這一點(diǎn)筆者不敢認(rèn)同?,F(xiàn)在企業(yè)的任何一個(gè)應(yīng)用,基本上都需要用到數(shù)據(jù)完整性。如現(xiàn)在大部分應(yīng)用至少都需要有一個(gè)用戶(hù)認(rèn)證的過(guò)程。為此在系統(tǒng)實(shí)現(xiàn)的過(guò)程中,需要在數(shù)據(jù)庫(kù)中保存用戶(hù)名。由于這個(gè)用戶(hù)名涉及到用戶(hù)的認(rèn)證問(wèn)題,為此用戶(hù)名必須要唯一。此時(shí)就需要用到唯一性約束。在關(guān)系型數(shù)據(jù)庫(kù)中,只需要在表格設(shè)計(jì)過(guò)程中,將用戶(hù)名設(shè)置為唯一即可。而在NoSQL中,還需要通過(guò)代碼來(lái)實(shí)現(xiàn)唯一性。本來(lái)很容易就可以實(shí)現(xiàn),現(xiàn)在卻要繞個(gè)彎取實(shí)現(xiàn),這有點(diǎn)不可思議。由于在NoSQL項(xiàng)目中很難實(shí)現(xiàn)數(shù)據(jù)的完整性,而在企業(yè)應(yīng)用中這個(gè)數(shù)據(jù)完整性又是少不了的。為此筆者認(rèn)為,NoSQL項(xiàng)目很難在企業(yè)中普及開(kāi)來(lái)。至少在短時(shí)間內(nèi),NoSQL革命仍然需等待。
2、 缺乏強(qiáng)有力的技術(shù)支持。
到目前為止,NoSQL項(xiàng)目都是開(kāi)源的。所以說(shuō)他們?nèi)狈?yīng)商技術(shù)人員提供的正式支持。在這一點(diǎn),NoSQL項(xiàng)目與大多數(shù)的開(kāi)源項(xiàng)目一樣,不得不從社區(qū)中尋求支持。但是,NoSQL項(xiàng)目比其他的開(kāi)源項(xiàng)目要難得的多。首先NoSQL項(xiàng)目是一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的項(xiàng)目?;蛘哒f(shuō),是一些網(wǎng)絡(luò)應(yīng)用的最基層的設(shè)備。如果其出錯(cuò)的話(huà),后果很?chē)?yán)重。由于缺乏正式的官方支持,萬(wàn)一數(shù)據(jù)庫(kù)運(yùn)行出現(xiàn)了錯(cuò)誤,后果是很?chē)?yán)重的。而且到時(shí)候用戶(hù)也是投訴無(wú)門(mén)的。所以,現(xiàn)在NoSQL項(xiàng)目基本上還是屬于研究的階段,如果要正式投入到企業(yè)中使用,被數(shù)據(jù)庫(kù)管理員所接受,至少其穩(wěn)定性上要有所改善?;蛘哒f(shuō),當(dāng)問(wèn)題出現(xiàn)時(shí),數(shù)據(jù)庫(kù)管理員要能夠及時(shí)修復(fù)運(yùn)行故障。由于缺乏強(qiáng)有力的技術(shù)支持,數(shù)據(jù)庫(kù)管理員擔(dān)心故障出現(xiàn)時(shí)難以迅速解決,所以很多管理員都拒絕使用NoSQL項(xiàng)目,即使其是開(kāi)源免費(fèi)的。如NoSQL項(xiàng)目的組織者Oskarsson也坦言,他們自己的公司現(xiàn)在使用的也不是NoSQL數(shù)據(jù)庫(kù),甚至在短期內(nèi)也沒(méi)有這個(gè)打算。他們現(xiàn)在使用的雖然是開(kāi)源的數(shù)據(jù)庫(kù)系統(tǒng),但是仍然是基于SQL的關(guān)系型數(shù)據(jù)庫(kù)。像NoSQL項(xiàng)目的組織者都不敢輕易在企業(yè)中部署這個(gè)NoSQL數(shù)據(jù)庫(kù),那么其他數(shù)據(jù)庫(kù)管理員誰(shuí)敢做***個(gè)吃螃蟹的英雄嗎?這不是拿自己的前途開(kāi)玩笑。
3、 開(kāi)源數(shù)據(jù)庫(kù)從出現(xiàn)到被用戶(hù)接受需要一個(gè)漫長(zhǎng)的過(guò)程。
假設(shè)這個(gè)NoSQL技術(shù)能夠被企業(yè)用戶(hù)所接受,但是從其出現(xiàn)到被用戶(hù)最終接受需要一個(gè)漫長(zhǎng)的過(guò)程。如MYSQL這個(gè)開(kāi)源的數(shù)據(jù)庫(kù)系統(tǒng),其從出現(xiàn)到流行也是花了好多年的時(shí)間。而且MYSQL數(shù)據(jù)庫(kù)是基于比較成熟的關(guān)系數(shù)據(jù)庫(kù)模型的。其在開(kāi)發(fā)設(shè)計(jì)的時(shí)候,已經(jīng)有不少完善的產(chǎn)品可以參考。至少SQL語(yǔ)句的語(yǔ)法其可以直接拿來(lái)使用,而不用從零開(kāi)始設(shè)計(jì)。而現(xiàn)在NoSQL是一個(gè)從零開(kāi)始的產(chǎn)品,所有內(nèi)容都需要重新設(shè)計(jì)。在沒(méi)有供應(yīng)商技術(shù)人員的支持下,這個(gè)過(guò)程可能是很漫長(zhǎng)的。即使退一萬(wàn)步來(lái)說(shuō),最終其可以向MySQL數(shù)據(jù)庫(kù)那樣受中小企業(yè)的歡迎,但是由于其自身技術(shù)的薄弱,在大型的數(shù)據(jù)庫(kù)應(yīng)用中就會(huì)顯得心有余而力不足。
4、 關(guān)系型數(shù)據(jù)庫(kù)在設(shè)計(jì)時(shí)更能夠體現(xiàn)實(shí)際。
其實(shí)關(guān)系型數(shù)據(jù)庫(kù)也是從非關(guān)系型數(shù)據(jù)庫(kù)升級(jí)過(guò)來(lái)的。之所以現(xiàn)在大部分?jǐn)?shù)據(jù)庫(kù)都是建立在關(guān)系型數(shù)據(jù)庫(kù)模型之上的,就說(shuō)明了關(guān)系型數(shù)據(jù)庫(kù)存在的價(jià)值。筆者認(rèn)為,關(guān)系型數(shù)據(jù)庫(kù)***的價(jià)值就在于其設(shè)計(jì)方便。因?yàn)槠鋽?shù)據(jù)庫(kù)對(duì)象之間的關(guān)系模型(如三范式等等)對(duì)于數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)很有幫助的,其在很大程度上體現(xiàn)了業(yè)務(wù)的實(shí)際情況。如在設(shè)計(jì)一個(gè)ERP系統(tǒng)時(shí),主鍵與外鍵的關(guān)系可以反映出產(chǎn)品信息表與采購(gòu)訂單之間的關(guān)聯(lián)。這種關(guān)系是那么發(fā)符合實(shí)際。而現(xiàn)在NoSQL項(xiàng)目想把這種關(guān)系剝離掉,那么在數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,必然會(huì)增加很多的麻煩,會(huì)增加數(shù)據(jù)庫(kù)的難度。最重要的是,這些數(shù)據(jù)庫(kù)對(duì)象之間的關(guān)系不僅僅是關(guān)系而已,其還是一種強(qiáng)有力的準(zhǔn)則,對(duì)于所有的關(guān)系型數(shù)據(jù)庫(kù)管理員都會(huì)產(chǎn)生約束。這就說(shuō)明,如果必須強(qiáng)制遵守這些規(guī)則。從而讓Oracle數(shù)據(jù)庫(kù)的管理員經(jīng)過(guò)簡(jiǎn)短的學(xué)習(xí)之后,也能夠很快的掌握SQLServer數(shù)據(jù)庫(kù)的技術(shù)。因?yàn)槠鋬?nèi)部的準(zhǔn)則是共同的。數(shù)據(jù)庫(kù)管理員只要學(xué)習(xí)其表現(xiàn)形式即可。這就好像學(xué)汽車(chē)。你只要拿出駕照,那么什么牌子的車(chē)都可以開(kāi)。因?yàn)槠鋽?shù)據(jù)庫(kù)對(duì)象的關(guān)系、運(yùn)行模式等等都是固定的。但是NoSQL項(xiàng)目由于缺乏這種關(guān)系,所以基于NoSQL技術(shù)的不同產(chǎn)品之間,可能會(huì)存在很大的差異。這不僅在數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候會(huì)增加不少的難度。而且在維護(hù)的時(shí)候,也需要花費(fèi)更多的時(shí)間與精力。
總之,照目前的情況來(lái)看,筆者對(duì)NoSQL項(xiàng)目的思路是反對(duì)的。至少在近期很難有像樣的NoSQL產(chǎn)品面世。NoSQL項(xiàng)目的組織者Oskarsson也承認(rèn),NoSQL項(xiàng)目這場(chǎng)數(shù)據(jù)庫(kù)革命仍然需要等待。在短時(shí)間內(nèi),無(wú)法跟關(guān)系型數(shù)據(jù)庫(kù)相互抗衡,也許永遠(yuǎn)沒(méi)有這個(gè)機(jī)會(huì)。
標(biāo)題名稱(chēng):NoSQL真的能終結(jié)關(guān)系數(shù)據(jù)庫(kù)?
URL分享:http://m.5511xx.com/article/dpdsdpp.html


咨詢(xún)
建站咨詢(xún)
