《NoSQL數(shù)據(jù)庫在現(xiàn)代應(yīng)用程序中的作用》要點(diǎn):
本文介紹了NoSQL數(shù)據(jù)庫在現(xiàn)代應(yīng)用程序中的作用,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
數(shù)據(jù)模型驅(qū)動(dòng)不僅可以建立有效的應(yīng)用程序,也可以有效地修改以合并新的特性.他們是“real-world”問題的解決和軟件世界模仿現(xiàn)實(shí)世界的行為之間的橋梁.(是的,軟件可以創(chuàng)造奇跡,但如果不是追求更簡(jiǎn)單生活沒有人需要這些軟件!)本文論述了NoSQL數(shù)據(jù)庫在現(xiàn)代的應(yīng)用軟件發(fā)揮作用.
驅(qū)動(dòng)力
在過去的幾年中,有一個(gè)巨大的轉(zhuǎn)變則是在應(yīng)用程序開發(fā)平臺(tái)棧的選擇上.傳統(tǒng)的WAMP和LAMP被逐步淘汰,而MEAN、CEAN等逐漸發(fā)揮出優(yōu)勢(shì).這種轉(zhuǎn)變是有很多原因的.最根本的原因是對(duì)現(xiàn)代Web的期望.最近的預(yù)期是Web應(yīng)用程序已經(jīng)不僅僅是局限于信息的傳遞.今天我們?cè)赪eb應(yīng)用程序的交互中,信息處理和內(nèi)容分析已成為了非常關(guān)鍵的部分.這也常被稱為Web 2.0.未來持續(xù)增長(zhǎng)的智能設(shè)備和傳感器連接到互聯(lián)網(wǎng),繼續(xù)利用越來越多的由應(yīng)用程序用戶生成的數(shù)據(jù)來提供智能化的增值作用(也稱為Web 3.0).
這種Web應(yīng)用程序轉(zhuǎn)變的范例中需要豐富的數(shù)據(jù).同時(shí),使數(shù)據(jù)可供消費(fèi)是同樣重要的,而且不可用數(shù)據(jù)怎樣阻礙了預(yù)期用戶體驗(yàn)和應(yīng)用程序的開發(fā)成為了另一個(gè)主題!但是,值得一提的是,大多數(shù)面向用戶的應(yīng)用程序都需要從多個(gè)數(shù)據(jù)源(數(shù)據(jù)源)中消費(fèi)和處理數(shù)據(jù).作為一個(gè)極端的例子,一個(gè)旅游預(yù)訂網(wǎng)站可能需要依賴于多個(gè)航空公司的航班數(shù)據(jù)和票務(wù),而信用卡處理來自另一個(gè)第三方,行程公布又從另一個(gè)地方…更不要說,他們還可能會(huì)導(dǎo)致用戶在社交媒體上分享他們的預(yù)訂經(jīng)驗(yàn),從他們自己的Web應(yīng)用程序中就像一個(gè)用戶的端到端體驗(yàn)的一部分.
很好,我依然沒有把NoSQL的作用完全呈現(xiàn)給你.你或許仍然想知道NoSQL所有的作用.因此,讓我們繼續(xù).不管怎樣,了解如下的變化是非常重要的.今天引導(dǎo)我們開始利用新的解決方案,這些解決方案在大多數(shù)情況被創(chuàng)造或者被開發(fā),因?yàn)樗麄儾粌H非常依賴今天或者僅僅因?yàn)榻裉焓强赡艿?對(duì)比指責(zé)以前的計(jì)算機(jī)革命).
NoSQL允許復(fù)雜的結(jié)構(gòu)
SQL數(shù)據(jù)庫是結(jié)構(gòu)化的.但是,在處理應(yīng)用程序需求時(shí),由于字段范圍、外鍵關(guān)系、規(guī)范化技術(shù)等,他們會(huì)導(dǎo)致某種程度的缺陷.例如,一個(gè)客戶訂單對(duì)象往往是分成表頭和詳細(xì)類型的標(biāo)準(zhǔn)化表的結(jié)構(gòu).NoSQL,另一方面不僅可以處理在一個(gè)單一結(jié)構(gòu)中的表頭和細(xì)節(jié).所以,盡管數(shù)據(jù)模型的結(jié)構(gòu)可能是復(fù)雜的,它支持建立接近一個(gè) “真實(shí)世界”的實(shí)體.當(dāng)然,,這種能力的成本是把數(shù)據(jù)完整性管理推到了程序應(yīng)用層.
NoSQL與基于REST架構(gòu)
如果您使用Web服務(wù)或API,碰巧你的API默認(rèn)為JSON響應(yīng)(如果不是,你應(yīng)該嘗試).NoSQL數(shù)據(jù)庫,如MongoDB和CouchDB是按JSON格式的存儲(chǔ)數(shù)據(jù)(稱為文檔).這使編碼API響應(yīng)比接收數(shù)組容易得多.采用更高等級(jí)的API導(dǎo)致高度集成的應(yīng)用程序,NoSQL數(shù)據(jù)庫很適合在存儲(chǔ)方面,提供和消費(fèi)信息.
NoSQL帶來可伸縮性
NoSQL數(shù)據(jù)庫設(shè)計(jì)的思想是拆分為多節(jié)點(diǎn)數(shù)據(jù)庫,從而提供了極大的可伸縮性特性.例如,MongoDB目前可以擴(kuò)展到超過100個(gè)節(jié)點(diǎn),這些節(jié)點(diǎn)可以分布在不同的數(shù)據(jù)中心或地方.許多NoSQL數(shù)據(jù)庫也已經(jīng)開始支持多個(gè)節(jié)點(diǎn)數(shù)據(jù)分區(qū),有助于選擇規(guī)模更大的數(shù)據(jù)集的計(jì)算資源,同時(shí)也減少了不必要的復(fù)制,從而減少數(shù)據(jù)重復(fù)可伸縮性的成本.
因此,SQL還是NoSQL?
這取決于應(yīng)用程序和特定場(chǎng)景.不,這是真實(shí)的,因?yàn)橛性S多因素,如:
開發(fā)工具和技術(shù)可能不支持NoSQL的;
首選供應(yīng)商(首選戰(zhàn)略伙伴關(guān)系等許多原因)在您的公司中可能仍然是一個(gè)傳統(tǒng)的SQL數(shù)據(jù)庫;
首選的數(shù)據(jù)庫供應(yīng)商可能會(huì)提供一些在傳統(tǒng)的數(shù)據(jù)庫中有NoSQL-like的特性,可以滿足當(dāng)前應(yīng)用程序的需求;
數(shù)據(jù)模型可能是這樣的,選擇真的沒有什么區(qū)別;
你支持開源代碼(從一個(gè)企業(yè)支持的觀點(diǎn));
你的同事(開發(fā)人員、測(cè)試人員等)可能還不熟練.
因此,為您的應(yīng)用程序選擇什么樣的數(shù)據(jù)庫是一個(gè)架構(gòu)層面的決定.有時(shí),只是因?yàn)?可能轉(zhuǎn)變?yōu)橐患鷥r(jià)極大的事情.因此,這篇文章絕不是來影響你選擇傾向的,但是它能提高了人們NoSQL被廣泛接受的意識(shí)和突出NoSQL在現(xiàn)代應(yīng)用程序中所起的作用.
結(jié)論
重要的是要了解如今的網(wǎng)絡(luò)應(yīng)用程序,如何適應(yīng)現(xiàn)代技術(shù)的期望.用需求、路線圖和來自用戶的期望(特別是直接用戶交互)來平衡NoSQL的趨勢(shì)是非常重要的.最后,記住–需要驅(qū)動(dòng)數(shù)據(jù)模型和數(shù)據(jù)模型驅(qū)動(dòng)來自于SQL或NoSQL的選擇.關(guān)于這點(diǎn),沒有錯(cuò)誤的答案,每個(gè)人都可以嘗試去解答!
原文鏈接: https://dzone.com/articles/role-of-no-sql-databases-in-modern-applications
歡迎參與《NoSQL數(shù)據(jù)庫在現(xiàn)代應(yīng)用程序中的作用》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9576.html