【杭州網(wǎng)站設(shè)計(jì)】SQL or NoSQL——云計(jì)算環(huán)境中該選擇誰(shuí)?
分享 2011.07.19 瀏覽次數(shù):6939次
NoSQL和SQL之間真正的差異是什么?實(shí)質(zhì)上,是因?yàn)椴煌脑L問(wèn)模式導(dǎo)致了NoSQL和SQL可擴(kuò)展性和性能上的不同。
NoSQL只允許數(shù)據(jù)在受限的預(yù)定義模式訪問(wèn)。例如DHT (Distributed Hash Table)通過(guò)hashtable API訪問(wèn)。其他NoSQL數(shù)據(jù)服務(wù)訪問(wèn)模式同樣受限。因此可擴(kuò)展性和性能結(jié)構(gòu)是可預(yù)測(cè)和可靠的。
而在SQL中,訪問(wèn)模式預(yù)先是不知道的,SQL是一種通用語(yǔ)言,允許數(shù)據(jù)以各種方式訪問(wèn),程序員也對(duì)SQL語(yǔ)句的執(zhí)行能力控制有限。
換句話說(shuō),在SQL中,數(shù)據(jù)模型不執(zhí)行特定的工作方式與數(shù)據(jù)。強(qiáng)調(diào)建立數(shù)據(jù)完整性、簡(jiǎn)潔性、標(biāo)準(zhǔn)化和抽象化。這對(duì)于所有大型復(fù)雜的應(yīng)用極為重要。
為什么是NoSQL
NoSQL提供的方法對(duì)于SQL數(shù)據(jù)庫(kù)來(lái)說(shuō)有巨大的優(yōu)勢(shì)。因?yàn)樗试S應(yīng)用程序擴(kuò)展的新的水平。新的數(shù)據(jù)服務(wù)基于真正可擴(kuò)展的結(jié)構(gòu)和體系構(gòu)建云、構(gòu)建分布式。這對(duì)于應(yīng)用開(kāi)發(fā)來(lái)說(shuō)是非常有吸引力的。無(wú)需DBA,無(wú)需復(fù)雜的SQL查詢。
這是不小的問(wèn)題,一個(gè)好程序員自由選擇一個(gè)數(shù)據(jù)模型,使用熟悉的工具寫(xiě)應(yīng)用程序,減少對(duì)他人的依賴于,并測(cè)試和優(yōu)化的代碼,而不做猜測(cè)或一個(gè)黑盒(DB)的計(jì)數(shù)。
這些都是NoSQL運(yùn)動(dòng)的所有主要優(yōu)勢(shì),但NoSQL也非萬(wàn)能,具體而言,數(shù)據(jù)模型的選擇、接口規(guī)范以及當(dāng)前面臨的新業(yè)務(wù)比如移動(dòng)業(yè)務(wù)數(shù)據(jù)的處理問(wèn)題,都是NoSQL無(wú)法回避的。
NoSQL絕非萬(wàn)能
數(shù)據(jù)模型
如果沒(méi)有一個(gè)統(tǒng)一的、定義良好的數(shù)據(jù)模型,無(wú)論采用何種技術(shù)都有缺陷。
SQL的數(shù)據(jù)模型定義了高度結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu),以及對(duì)這些結(jié)構(gòu)之間關(guān)系的嚴(yán)格定義。在這樣的數(shù)據(jù)模型上執(zhí)行的查詢操作會(huì)比較局限,而且可能會(huì)導(dǎo)致復(fù)雜的數(shù)據(jù)遍歷操作。但是數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性及查詢的復(fù)雜性,會(huì)導(dǎo)致系統(tǒng)產(chǎn)生如下的一些限制:比如當(dāng)數(shù)據(jù)量增長(zhǎng)到一臺(tái)機(jī)器已經(jīng)不能容納,我們需要將不同的數(shù)據(jù)表分布到不同的機(jī)器;如果你的結(jié)構(gòu)化數(shù)據(jù)并沒(méi)有那么強(qiáng),或者對(duì)每一行數(shù)據(jù)的要求比較靈活,那可能關(guān)系型的數(shù)據(jù)模型就太過(guò)嚴(yán)格了;再有,使用簡(jiǎn)單的查詢語(yǔ)言可能會(huì)導(dǎo)致應(yīng)用層的邏輯更復(fù)雜,但是這樣可以將存儲(chǔ)系統(tǒng)的工作簡(jiǎn)單化,讓它只需要響應(yīng)一些簡(jiǎn)單的請(qǐng)求。
此外,NoSQL數(shù)據(jù)庫(kù)并非是唯一適合存儲(chǔ)大量數(shù)據(jù)或大型數(shù)據(jù),顯然,通過(guò)良好的分區(qū)設(shè)計(jì),SQL數(shù)據(jù)庫(kù)也可以獲得極好的擴(kuò)展性。
接口和互操作問(wèn)題
不可否認(rèn),NoSQL的數(shù)據(jù)服務(wù)接口還有待規(guī)范。比如DHT,這是一個(gè)簡(jiǎn)單的接口,但仍舊沒(méi)有標(biāo)準(zhǔn)的語(yǔ)義。每個(gè)DHT服務(wù)都使用其自己的一套接口。另一個(gè)大問(wèn)題是不同的數(shù)據(jù)結(jié)構(gòu),如 DHT和binary tree,只是作為一個(gè)例子,共享數(shù)據(jù)對(duì)象。所有這些服務(wù)中,指針沒(méi)有內(nèi)在的語(yǔ)義。事實(shí)上,這些服務(wù)中,處理互操作性是開(kāi)發(fā)者的職責(zé),這一點(diǎn)很很重要,尤其是當(dāng)需要數(shù)據(jù)被多個(gè)服務(wù)訪問(wèn)時(shí)。一個(gè)簡(jiǎn)單的例子:后臺(tái)工作由Java實(shí)現(xiàn),Web服務(wù)類工作由PHP實(shí)現(xiàn),數(shù)據(jù)可以被輕易地從兩個(gè)域訪問(wèn)數(shù)據(jù)嗎?顯然,人們可以使用Web服務(wù)作為前端數(shù)據(jù)訪問(wèn)層,但是,NoSQL有可能讓事情變得更復(fù)雜,并降低了業(yè)務(wù)敏捷性,靈活性和性能,同時(shí)增加了開(kāi)發(fā)工作量。
移動(dòng)業(yè)務(wù)
在移動(dòng)業(yè)務(wù)領(lǐng)域,需要一套工具,這套工具不僅要有可擴(kuò)展性,而且還易于管理并且穩(wěn)定,并在云上有一個(gè)固定的設(shè)置服務(wù)器。當(dāng)系統(tǒng)出現(xiàn)問(wèn)題的時(shí)候,可以不需要通過(guò)判斷整個(gè)系統(tǒng)或開(kāi)發(fā)平臺(tái)來(lái)診斷問(wèn)題,而是通過(guò)遠(yuǎn)程訪問(wèn)——這正是運(yùn)維經(jīng)理們所要面對(duì)的問(wèn)題,但是在目前NoSQL所能提供的服務(wù)功能來(lái)看,很難實(shí)現(xiàn),即便是Amazon的托管環(huán)境。
SQL和NoSQL如何結(jié)合?
總而言之,在NoSQL和SQL的選擇上,需要了解到以下內(nèi)容:
數(shù)據(jù)模型及操作模型:你的應(yīng)用層數(shù)據(jù)模型是行、對(duì)象還是文檔型的呢?這個(gè)系統(tǒng)是否能支持你進(jìn)行一些統(tǒng)計(jì)工作呢?
可靠性:當(dāng)你更新數(shù)據(jù)時(shí),新的數(shù)據(jù)是否立刻寫(xiě)到持久化存儲(chǔ)中去了?新的數(shù)據(jù)是否同步到多臺(tái)機(jī)器上了?
擴(kuò)展性:你的數(shù)據(jù)量有多大,單機(jī)是否能容下?你的讀寫(xiě)量求單機(jī)是否能支持?
分區(qū)策略:考慮到你對(duì)擴(kuò)展性,可用性或者持久性的要求,你是否需要一份數(shù)據(jù)被存在多臺(tái)機(jī)器上?你是否需要知道數(shù)據(jù)在哪臺(tái)機(jī)器上,以及你能否知道。
一致性:你的數(shù)據(jù)是否被復(fù)制到了多臺(tái)機(jī)器上,這些分布在不同點(diǎn)的數(shù)據(jù)如何保證一致性?
事務(wù)機(jī)制:你的業(yè)務(wù)是否需要ACID的事務(wù)機(jī)制?
單機(jī)性能:如果你打算持久化的將數(shù)據(jù)存在磁盤(pán)上,哪種數(shù)據(jù)結(jié)構(gòu)能滿足你的需求(你的需求是讀多還是寫(xiě)多)?寫(xiě)操作是否會(huì)成為磁盤(pán)瓶頸?
負(fù)載可評(píng)估:對(duì)于一個(gè)讀多寫(xiě)少的應(yīng)用,諸如響應(yīng)用戶請(qǐng)求的web應(yīng)用,我們總會(huì)花很多精力來(lái)關(guān)注負(fù)載情況。你可能需要進(jìn)行數(shù)據(jù)規(guī)模的監(jiān)控,對(duì)多個(gè)用戶的數(shù)據(jù)進(jìn)行匯總統(tǒng)計(jì)。你的應(yīng)用場(chǎng)景是否需要這樣的功能呢?
使用NoSQL架構(gòu)實(shí)現(xiàn)SQL數(shù)據(jù)庫(kù)?
使用NoSQL的基礎(chǔ)架構(gòu)實(shí)現(xiàn)SQL數(shù)據(jù)庫(kù)是一個(gè)很好的解決方案。一個(gè)SQL數(shù)據(jù)庫(kù)是可擴(kuò)展、易管理,云就緒、高度可用的,完全建立在NoSQL的基礎(chǔ)結(jié)構(gòu)(分布式)上,但仍然提供SQL數(shù)據(jù)庫(kù)的所有優(yōu)勢(shì),如互操作性,定義良好的語(yǔ)義以及更多。
這種混合結(jié)構(gòu)也許不如純粹的NoSQL的服務(wù),但足以滿足需要更穩(wěn)定系統(tǒng)、可擴(kuò)展性和云服務(wù)的80%的市場(chǎng)需求。
這種解決辦法還允許很容易地遷移現(xiàn)有的應(yīng)用到云環(huán)境,從而保護(hù)相關(guān)組織在這些應(yīng)用上所付出的巨大的投資。
在我看來(lái),構(gòu)建于NoSQL基礎(chǔ)之上的SQL數(shù)據(jù)庫(kù),可以為那些在其成長(zhǎng)期間期望靈活、高效的客戶提供最高的價(jià)值。
原文鏈接:http://cloud.dzone.com/news/sql-vs-nosql-cloud-which
- 標(biāo)簽:
杭州網(wǎng)站設(shè)計(jì)公司 杭州網(wǎng)站建設(shè)公司 杭州網(wǎng)站制作公司 杭州網(wǎng)站設(shè)計(jì) 杭州網(wǎng)站建設(shè) 杭州網(wǎng)站制作 杭州精品網(wǎng)站制作 杭州精典網(wǎng)站制作 杭州精品網(wǎng)站設(shè)計(jì)
-
杭州網(wǎng)站設(shè)計(jì)公司:品牌網(wǎng)站開(kāi)發(fā)助力企業(yè)成長(zhǎng)
日期:2024-12-20瀏覽次數(shù):823次
-
杭州網(wǎng)站建設(shè)公司:商城網(wǎng)站建設(shè)的六大關(guān)鍵步驟
日期:2024-12-18瀏覽次數(shù):865次
-
杭州網(wǎng)站制作:醫(yī)院網(wǎng)站設(shè)計(jì)與域名備案的復(fù)雜性探討
日期:2024-12-18瀏覽次數(shù):856次
-
杭州網(wǎng)站制作公司:打造安全可靠的醫(yī)院網(wǎng)站
日期:2024-12-11瀏覽次數(shù):1021次
-
杭州網(wǎng)站設(shè)計(jì)公司:數(shù)據(jù)庫(kù)在高端網(wǎng)站制作中的關(guān)鍵作用
日期:2024-12-11瀏覽次數(shù):992次
相關(guān)新聞
整合同類新聞,相關(guān)新聞一手掌握
-
襄陽(yáng)企業(yè)網(wǎng)站建設(shè)權(quán)威性的兩大體現(xiàn)要素
日期:2023-02-10瀏覽次數(shù):1760次
-
做網(wǎng)站,2023襄陽(yáng)扁平化網(wǎng)站設(shè)計(jì)三大核心優(yōu)勢(shì)
日期:2023-02-10瀏覽次數(shù):1726次
-
襄陽(yáng)網(wǎng)站建設(shè)是否真的重要?
日期:2020-10-09瀏覽次數(shù):2028次
-
襄陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)之規(guī)范和忌諱
日期:2020-10-09瀏覽次數(shù):2020次
最新新聞
與互聯(lián)網(wǎng)同行,實(shí)時(shí)掌握網(wǎng)建行業(yè)最新動(dòng)態(tài)
-
團(tuán)購(gòu)熱潮造就商機(jī) 團(tuán)購(gòu)網(wǎng)站大全興起
日期:2010-11-26瀏覽次數(shù):6457次
-
杭州教育培訓(xùn)網(wǎng)站建設(shè)方案
日期:2018-05-05瀏覽次數(shù):5051次
-
論APP定制開(kāi)發(fā)的未來(lái)發(fā)展趨勢(shì)
日期:2020-04-22瀏覽次數(shù):4318次
-
杭州網(wǎng)站設(shè)計(jì)之如何設(shè)計(jì)界面尺寸?
日期:2020-09-09瀏覽次數(shù):2127次
-
做Google的杭州網(wǎng)站優(yōu)化遇到網(wǎng)頁(yè)流量下降怎么辦?
日期:2021-04-28瀏覽次數(shù):4113次
隨機(jī)新聞
新聞新動(dòng)態(tài),您需要的新聞管家
洞悉市場(chǎng)趨勢(shì)演變讓傳播回歸社會(huì)
免費(fèi)獲取網(wǎng)站建設(shè)與網(wǎng)絡(luò)推廣方案報(bào)價(jià)
-
關(guān)于我們
杭州帷拓科技有限公司,是一家新型的全案網(wǎng)絡(luò)開(kāi)發(fā)公司,作為以互聯(lián)網(wǎng)高端網(wǎng)站建設(shè)、APP開(kāi)發(fā)、小程序開(kāi)發(fā)為核心的專業(yè)網(wǎng)絡(luò)技術(shù)服務(wù)供應(yīng)商,帷拓科技致力于全面分析市場(chǎng)環(huán)境、衡量與預(yù)測(cè)市場(chǎng)需求、整合區(qū)別于行業(yè)競(jìng)爭(zhēng)對(duì)手的絕對(duì)優(yōu)勢(shì),結(jié)合品牌理念深度挖掘項(xiàng)目?jī)?yōu)勢(shì)和產(chǎn)品價(jià)值,提升客戶品牌認(rèn)知、認(rèn)可度。
-
我們的客戶
帷拓科技?xì)v經(jīng)十年沉淀,與國(guó)內(nèi)外上千家客戶達(dá)成合作關(guān)系,其中穩(wěn)定合作的公司有:浙江華為、浙江移動(dòng)、浙江5G產(chǎn)業(yè)聯(lián)盟、浙江省社科院、綠城足球俱樂(lè)部、娃哈哈雙語(yǔ)學(xué)校、健康中國(guó)杭州峰會(huì)、科雷機(jī)電等,帷拓科技始終堅(jiān)持“帷有專業(yè),才能拓展無(wú)限”的服務(wù)理念,堅(jiān)持“認(rèn)真堅(jiān)持細(xì)節(jié)”的優(yōu)質(zhì)服務(wù)理念,不斷完善自身,成就企業(yè),最終實(shí)現(xiàn)共贏。
-
我們的業(yè)務(wù)
帷拓科技主營(yíng)業(yè)務(wù)范圍包含互聯(lián)網(wǎng)高端網(wǎng)站建設(shè)、APP開(kāi)發(fā)、小程序開(kāi)發(fā)、商城網(wǎng)站建設(shè)、公眾號(hào)運(yùn)營(yíng)以及數(shù)字營(yíng)銷(xiāo)等,涵蓋了服務(wù)、房產(chǎn)、數(shù)碼、服裝、物流貿(mào)易等行業(yè),根據(jù)品牌現(xiàn)狀,為每個(gè)客戶量身定制項(xiàng)目整體服務(wù)方案,以敏銳的市場(chǎng)洞察力、創(chuàng)新的市場(chǎng)策劃能力,全面把握市場(chǎng)變化,為客戶實(shí)現(xiàn)從企業(yè)到消費(fèi)者的價(jià)值轉(zhuǎn)換。