NoSQL 數(shù)據(jù)庫因其功能性、易于開發(fā)性和可擴展性而廣受認可,它們越來越多地用于大數(shù)據(jù)和實時 Web 應用程序,在本文中,我們通過示例討論 NoSQL、何時使用 NoSQL 與 SQL 及其用例。
站在用戶的角度思考問題,與客戶深入溝通,找到德陽網(wǎng)站設計與德陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋德陽地區(qū)。
NoSQL是一種下一代數(shù)據(jù)庫管理系統(tǒng) (DBMS)。NoSQL 數(shù)據(jù)庫具有靈活的模式,可用于構建具有大量數(shù)據(jù)和高負載的現(xiàn)代應用程序。
“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經(jīng)存在類似的數(shù)據(jù)庫。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。
在處理大量數(shù)據(jù)時,任何關系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的響應時間都會變慢。為了解決這個問題,我們可以通過升級現(xiàn)有硬件來“擴大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴展并且更具成本效益。
NoSQL 對于非結構化或非常大的數(shù)據(jù)對象(例如聊天日志數(shù)據(jù)、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網(wǎng)巨頭中特別受歡迎的原因。
一些流行的 NoSQL 數(shù)據(jù)庫包括:
隨著企業(yè)更快地積累更大的數(shù)據(jù)集,結構化數(shù)據(jù)和關系模式并不總是適合。有必要使用非結構化數(shù)據(jù)和大型對象來更好地捕獲這些信息。
傳統(tǒng)的 RDBMS 使用 SQL(結構化查詢語言)語法來存儲和檢索結構化數(shù)據(jù),相反,NoSQL 數(shù)據(jù)庫包含廣泛的功能,可以存儲和檢索結構化、半結構化、非結構化和多態(tài)數(shù)據(jù)。
有時,NoSQL 也被稱為“ 不僅僅是 SQL ”,強調(diào)它可能支持類似 SQL 的語言或與 SQL 數(shù)據(jù)庫并列。SQL 和 NoSQL DBMS 之間的一個區(qū)別是 JOIN 功能。SQL 數(shù)據(jù)庫使用 JOIN 子句來組合來自兩個或多個表的行,因為 NoSQL 數(shù)據(jù)庫本質(zhì)上不是表格的,所以這個功能并不總是可行或相關的。
但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據(jù)庫傾向于以不同的方式解決類似的問題。
一般來說,在以下情況下,NoSQL 比 SQL 更可?。?/p>
許多行業(yè)都在采用 NoSQL,取代關系數(shù)據(jù)庫,從而為某些業(yè)務應用程序提供更高的靈活性和可擴展性,下面給出了 NoSQL 數(shù)據(jù)庫的一些企業(yè)用例。
內(nèi)容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據(jù)庫可以通過其靈活和開放的數(shù)據(jù)模型為存儲多媒體內(nèi)容提供更好的選擇。
例如,福布斯在短短幾個月內(nèi)就構建了一個基于 MongoDB 的定制內(nèi)容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。
大數(shù)據(jù)是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據(jù)集,實時存儲和檢索大數(shù)據(jù)的系統(tǒng)在分析 歷史 數(shù)據(jù)的同時使用流處理來攝取新數(shù)據(jù),這是一系列非常適合 NoSQL 數(shù)據(jù)庫的功能。
Zoom使用 DynamoDB(按需模式)使其數(shù)據(jù)能夠在沒有性能問題的情況下進行擴展,即使該服務在 COVID-19 大流行的早期使用量激增。
物聯(lián)網(wǎng)設備具有連接到互聯(lián)網(wǎng)或通信網(wǎng)絡的嵌入式軟件和傳感器,能夠在無需人工干預的情況下收集和共享數(shù)據(jù)。隨著數(shù)十億臺設備生成數(shù)不清的數(shù)據(jù),IoT NoSQL 數(shù)據(jù)庫為 IoT 服務提供商提供了可擴展性和更靈活的架構。
Freshub就是這樣的一項服務,它從 MySQL 切換到 MongoDB,以更好地處理其大型、動態(tài)、非統(tǒng)一的數(shù)據(jù)集。
擁有數(shù)十億智能手機用戶,可擴展性正成為在移動設備上提供服務的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據(jù)模型的 NoSQL DBMS 通常是完美的解決方案。
例如,The Weather Channel使用 MongoDB 數(shù)據(jù)庫每分鐘處理數(shù)百萬個請求,同時還處理用戶數(shù)據(jù)并提供天氣更新。
NoSQL薄弱的安全性會給企業(yè)帶來負面影響 。Imperva公司創(chuàng)始人兼CTO Amichai Shulman如是說。在新的一年中,無疑會有更多企業(yè)開始或籌劃部署NoSQL。方案落實后就會逐漸發(fā)現(xiàn)種種安全問題,因此早做準備才是正確的選擇。 作為傳統(tǒng)關系型數(shù)據(jù)庫的替代方案,NoSQL在查詢中并不使用SQL語言,而且允許用戶隨時變更數(shù)據(jù)屬性。此類數(shù)據(jù)庫以擴展性良好著稱,并能夠在需要大量應用程序與數(shù)據(jù)庫本身進行實時交互的交易處理任務中發(fā)揮性能優(yōu)勢,Couchbase創(chuàng)始人兼產(chǎn)品部門高級副總裁James Phillips解釋稱:NoSQL以交易業(yè)務為核心。它更注重實時處理能力并且擅長直接對數(shù)據(jù)進行操作,大幅度促進了交互型軟件系統(tǒng)的發(fā)展。Phillips指出。其中最大的優(yōu)勢之一是能夠隨時改變(在屬性方面),由于結構性的弱化,修改過程非常便捷。 NoSQL最大優(yōu)勢影響其安全性 NoSQL的關鍵性特色之一是其動態(tài)的數(shù)據(jù)模型,Shulman解釋道。我可以在其運作過程中加入新的屬性記錄。因此與這種結構相匹配的安全模型必須具備一定的前瞻性規(guī)劃。也就是說,它必須能夠了解數(shù)據(jù)庫引入的新屬性將引發(fā)哪些改變,以及新加入的屬性擁有哪些權限。然而這個層面上的安全概念目前尚不存在,根本沒有這樣的解決方案。 根據(jù)Phillips的說法,某些NoSQL開發(fā)商已經(jīng)開始著手研發(fā)安全機制,至少在嘗試保護數(shù)據(jù)的完整性。在關系型數(shù)據(jù)庫領域,如果我們的數(shù)據(jù)組成不正確,那么它將無法與結構并行運作,換言之數(shù)據(jù)插入操作整體將宣告失敗。目前各種驗證規(guī)則與完整性檢查已經(jīng)比較完善,而事實證明這些驗證機制都能在NoSQL中發(fā)揮作用。我們與其他人所推出的解決方案類似,都會在插入一條新記錄或是文檔型規(guī)則時觸發(fā),并在執(zhí)行過程中確保插入數(shù)據(jù)的正確性。 Shulman預計新用戶很快將在配置方面捅出大婁子,這并非因為IT工作人員的玩忽職守,實際上主要原因是NoSQL作為一項新技術導致大多數(shù)人對其缺乏足夠的知識基礎。Application Security研發(fā)部門TeamSHATTER的經(jīng)理Alex Rothacker對上述觀點表示贊同。他指出,培訓的一大問題在于,大多數(shù)NoSQL的從業(yè)者往往屬于新生代IT人士,他們對于技術了解較多,但往往缺乏足夠的安全管理經(jīng)驗。 如果他們從傳統(tǒng)關系型數(shù)據(jù)庫入手,那么由于強制性安全機制的完備,他們可以在使用中學習。但NoSQL,只有行家才能通過觀察得出正確結論,并在大量研究工作后找到一套完備的安全解決方案。因此可能有90%的從業(yè)者由于知識儲備、安全經(jīng)驗或是工作時間的局限而無法做到這一點。 NoSQL需在安全性方面進行優(yōu)化 盡管Phillips認同新技術與舊經(jīng)驗之間存在差異,但企業(yè)在推廣NoSQL時加大對安全性的關注會起到很大程度的積極作用。他認為此類數(shù)據(jù)存儲機制與傳統(tǒng)關系類數(shù)據(jù)庫相比,其中包含著的敏感類信息更少,而且與企業(yè)網(wǎng)絡內(nèi)部其它應用程序的接觸機會也小得多。 他們并不把這項新技術完全當成數(shù)據(jù)庫使用,正如我們在收集整理大量來自其它應用程序的業(yè)務類數(shù)據(jù)時,往往也會考慮將其作為企業(yè)數(shù)據(jù)存儲機制一樣,他補充道。當然,如果我打算研發(fā)一套具備某種特定功能的社交網(wǎng)絡、社交游戲或是某種特殊web應用程序,也很可能會將其部署于防火墻之下。這樣一來它不僅與應用程序緊密結合,也不會被企業(yè)中的其它部門所觸及。 但Rothacker同時表示,這種過度依賴周邊安全機制的數(shù)據(jù)庫系統(tǒng)也存在著極其危險的漏洞。一旦系統(tǒng)完全依附于周邊安全模型,那么驗證機制就必須相對薄弱,而且缺乏多用戶管理及數(shù)據(jù)訪問方面的安全保護。只要擁有高權限賬戶,我們幾乎能訪問存儲機制中的一切數(shù)據(jù)。舉例來說,Brian Sullivan就在去年的黑帽大會上演示了如何在完全不清楚數(shù)據(jù)具體內(nèi)容的情況下,將其信息羅列出來甚至導出。 而根據(jù)nCircle公司CTO Tim ‘TK’ Keanini的觀點,即使是與有限的應用程序相關聯(lián),NoSQL也很有可能被暴露在互聯(lián)網(wǎng)上。在缺少嚴密網(wǎng)絡劃分的情況下,它可能成為攻擊者窺探存儲數(shù)據(jù)的薄弱環(huán)節(jié)。因為NoSQL在設計上主要用于互聯(lián)網(wǎng)規(guī)模的部署,所以它很可能被直接連接到互聯(lián)網(wǎng)中,進而面臨大量攻擊行為。 其中發(fā)生機率最高的攻擊行為就是注入式攻擊,這也是一直以來肆虐于關系類數(shù)據(jù)庫領域的頭號公敵。盡管NoSQL沒有將SQL作為查詢語言,也并不代表它能夠免受注入式攻擊的威脅。雖然不少人宣稱SQL注入在NoSQL這邊不起作用,但其中的原理是完全一致的。攻擊者需要做的只是改變自己注入內(nèi)容的語法形式,Rothacker解釋稱。也就是說雖然SQL注入不會出現(xiàn),但JavaScript注入或者JSON注入同樣能威脅安全。 此外,攻擊者在籌劃對這類數(shù)據(jù)庫展開侵襲時,也很可能進一步優(yōu)化自己的工具。不成熟的安全技術往往帶來這樣的窘境:需要花費大量時間學習如何保障其安全,但幾乎每個IT人士都能迅速掌握攻擊活動的組織方法。因此我認為攻擊者將會始終走在安全部署的前面,Shulman說道。遺憾的是搞破壞總比防范工作更容易,而我們已經(jīng)看到不少NoSQL技術方面的公開漏洞,尤其是目前引起熱議的、以JSON注入為載體的攻擊方式。 NoSQL安全性并非其阻礙 然而,這一切都不應該成為企業(yè)使用NoSQL的阻礙,他總結道。我認為歸根結底,這應該算是企業(yè)的一種商業(yè)決策。只要這種選擇能夠帶來吸引力巨大的商業(yè)機遇,就要承擔一定風險,Shulman解釋道。但應該采取一定措施以盡量弱化這種風險。 舉例來說,鑒于數(shù)據(jù)庫對外部安全機制的依賴性,Rothacker建議企業(yè)積極考慮引入加密方案。他警告稱,企業(yè)必須對與NoSQL相對接的應用程序代碼仔細檢查。換言之,企業(yè)必須嚴格挑選負責此類項目部署的人選,確保將最好的人才用于這方面事務,Shulman表示。當大家以NoSQL為基礎編寫應用程序時,必須啟用有經(jīng)驗的編程人員,因為客戶端軟件是抵擋安全問題的第一道屏障。切實為額外緩沖區(qū)的部署留出時間與預算,這能夠讓員工有閑暇反思自己的工作內(nèi)容并盡量多顧及安全考量多想一點就是進步。綜上所述,這可能與部署傳統(tǒng)的關系類數(shù)據(jù)庫也沒什么不同。 具有諷刺意味的是,近年來數(shù)據(jù)庫應用程序在安全性方面的提升基本都跟數(shù)據(jù)庫本身沒什么關系,nCircle公司安全研究及開發(fā)部門總監(jiān)Oliver Lavery如是說。
大數(shù)據(jù)技術發(fā)展史:大數(shù)據(jù)的前世今生
今天我們常說的大數(shù)據(jù)技術,其實起源于Google在2004年前后發(fā)表的三篇論文,也就是我們經(jīng)常聽到的“三駕馬車”,分別是分布式文件系統(tǒng)GFS、大數(shù)據(jù)分布式計算框架MapReduce和NoSQL數(shù)據(jù)庫系統(tǒng)BigTable。
你知道,搜索引擎主要就做兩件事情,一個是網(wǎng)頁抓取,一個是索引構建,而在這個過程中,有大量的數(shù)據(jù)需要存儲和計算。這“三駕馬車”其實就是用來解決這個問題的,你從介紹中也能看出來,一個文件系統(tǒng)、一個計算框架、一個數(shù)據(jù)庫系統(tǒng)。
現(xiàn)在你聽到分布式、大數(shù)據(jù)之類的詞,肯定一點兒也不陌生。但你要知道,在2004年那會兒,整個互聯(lián)網(wǎng)還處于懵懂時代,Google發(fā)布的論文實在是讓業(yè)界為之一振,大家恍然大悟,原來還可以這么玩。
因為那個時間段,大多數(shù)公司的關注點其實還是聚焦在單機上,在思考如何提升單機的性能,尋找更貴更好的服務器。而Google的思路是部署一個大規(guī)模的服務器集群,通過分布式的方式將海量數(shù)據(jù)存儲在這個集群上,然后利用集群上的所有機器進行數(shù)據(jù)計算。 這樣,Google其實不需要買很多很貴的服務器,它只要把這些普通的機器組織到一起,就非常厲害了。
當時的天才程序員,也是Lucene開源項目的創(chuàng)始人Doug Cutting正在開發(fā)開源搜索引擎Nutch,閱讀了Google的論文后,他非常興奮,緊接著就根據(jù)論文原理初步實現(xiàn)了類似GFS和MapReduce的功能。
兩年后的2006年,Doug Cutting將這些大數(shù)據(jù)相關的功能從Nutch中分離了出來,然后啟動了一個獨立的項目專門開發(fā)維護大數(shù)據(jù)技術,這就是后來赫赫有名的Hadoop,主要包括Hadoop分布式文件系統(tǒng)HDFS和大數(shù)據(jù)計算引擎MapReduce。
當我們回顧軟件開發(fā)的歷史,包括我們自己開發(fā)的軟件,你會發(fā)現(xiàn),有的軟件在開發(fā)出來以后無人問津或者寥寥數(shù)人使用,這樣的軟件其實在所有開發(fā)出來的軟件中占大多數(shù)。而有的軟件則可能會開創(chuàng)一個行業(yè),每年創(chuàng)造數(shù)百億美元的價值,創(chuàng)造百萬計的就業(yè)崗位,這些軟件曾經(jīng)是Windows、Linux、Java,而現(xiàn)在這個名單要加上Hadoop的名字。
如果有時間,你可以簡單瀏覽下Hadoop的代碼,這個純用Java編寫的軟件其實并沒有什么高深的技術難點,使用的也都是一些最基礎的編程技巧,也沒有什么出奇之處,但是它卻給社會帶來巨大的影響,甚至帶動一場深刻的科技革命,推動了人工智能的發(fā)展與進步。
我覺得,我們在做軟件開發(fā)的時候,也可以多思考一下,我們所開發(fā)軟件的價值點在哪里?真正需要使用軟件實現(xiàn)價值的地方在哪里?你應該關注業(yè)務、理解業(yè)務,有價值導向,用自己的技術為公司創(chuàng)造真正的價值,進而實現(xiàn)自己的人生價值。而不是整天埋頭在需求說明文檔里,做一個沒有思考的代碼機器人。
Hadoop發(fā)布之后,Yahoo很快就用了起來。大概又過了一年到了2007年,百度和阿里巴巴也開始使用Hadoop進行大數(shù)據(jù)存儲與計算。
2008年,Hadoop正式成為Apache的頂級項目,后來Doug Cutting本人也成為了Apache基金會的主席。自此,Hadoop作為軟件開發(fā)領域的一顆明星冉冉升起。
同年,專門運營Hadoop的商業(yè)公司Cloudera成立,Hadoop得到進一步的商業(yè)支持。
這個時候,Yahoo的一些人覺得用MapReduce進行大數(shù)據(jù)編程太麻煩了,于是便開發(fā)了Pig。Pig是一種腳本語言,使用類SQL的語法,開發(fā)者可以用Pig腳本描述要對大數(shù)據(jù)集上進行的操作,Pig經(jīng)過編譯后會生成MapReduce程序,然后在Hadoop上運行。
編寫Pig腳本雖然比直接MapReduce編程容易,但是依然需要學習新的腳本語法。于是Facebook又發(fā)布了Hive。Hive支持使用SQL語法來進行大數(shù)據(jù)計算,比如說你可以寫個Select語句進行數(shù)據(jù)查詢,然后Hive會把SQL語句轉化成MapReduce的計算程序。
這樣,熟悉數(shù)據(jù)庫的數(shù)據(jù)分析師和工程師便可以無門檻地使用大數(shù)據(jù)進行數(shù)據(jù)分析和處理了。Hive出現(xiàn)后極大程度地降低了Hadoop的使用難度,迅速得到開發(fā)者和企業(yè)的追捧。據(jù)說,2011年的時候,F(xiàn)acebook大數(shù)據(jù)平臺上運行的作業(yè)90%都來源于Hive。
隨后,眾多Hadoop周邊產(chǎn)品開始出現(xiàn),大數(shù)據(jù)生態(tài)體系逐漸形成,其中包括:專門將關系數(shù)據(jù)庫中的數(shù)據(jù)導入導出到Hadoop平臺的Sqoop;針對大規(guī)模日志進行分布式收集、聚合和傳輸?shù)腇lume;MapReduce工作流調(diào)度引擎Oozie等。
在Hadoop早期,MapReduce既是一個執(zhí)行引擎,又是一個資源調(diào)度框架,服務器集群的資源調(diào)度管理由MapReduce自己完成。但是這樣不利于資源復用,也使得MapReduce非常臃腫。于是一個新項目啟動了,將MapReduce執(zhí)行引擎和資源調(diào)度分離開來,這就是Yarn。2012年,Yarn成為一個獨立的項目開始運營,隨后被各類大數(shù)據(jù)產(chǎn)品支持,成為大數(shù)據(jù)平臺上最主流的資源調(diào)度系統(tǒng)。
同樣是在2012年,UC伯克利AMP實驗室(Algorithms、Machine和People的縮寫)開發(fā)的Spark開始嶄露頭角。當時AMP實驗室的馬鐵博士發(fā)現(xiàn)使用MapReduce進行機器學習計算的時候性能非常差,因為機器學習算法通常需要進行很多次的迭代計算,而MapReduce每執(zhí)行一次Map和Reduce計算都需要重新啟動一次作業(yè),帶來大量的無謂消耗。還有一點就是MapReduce主要使用磁盤作為存儲介質(zhì),而2012年的時候,內(nèi)存已經(jīng)突破容量和成本限制,成為數(shù)據(jù)運行過程中主要的存儲介質(zhì)。Spark一經(jīng)推出,立即受到業(yè)界的追捧,并逐步替代MapReduce在企業(yè)應用中的地位。
一般說來,像MapReduce、Spark這類計算框架處理的業(yè)務場景都被稱作批處理計算,因為它們通常針對以“天”為單位產(chǎn)生的數(shù)據(jù)進行一次計算,然后得到需要的結果,這中間計算需要花費的時間大概是幾十分鐘甚至更長的時間。因為計算的數(shù)據(jù)是非在線得到的實時數(shù)據(jù),而是歷史數(shù)據(jù),所以這類計算也被稱為大數(shù)據(jù)離線計算。
而在大數(shù)據(jù)領域,還有另外一類應用場景,它們需要對實時產(chǎn)生的大量數(shù)據(jù)進行即時計算,比如對于遍布城市的監(jiān)控攝像頭進行人臉識別和嫌犯追蹤。這類計算稱為大數(shù)據(jù)流計算,相應地,有Storm、Flink、Spark Streaming等流計算框架來滿足此類大數(shù)據(jù)應用的場景。 流式計算要處理的數(shù)據(jù)是實時在線產(chǎn)生的數(shù)據(jù),所以這類計算也被稱為大數(shù)據(jù)實時計算。
在典型的大數(shù)據(jù)的業(yè)務場景下,數(shù)據(jù)業(yè)務最通用的做法是,采用批處理的技術處理歷史全量數(shù)據(jù),采用流式計算處理實時新增數(shù)據(jù)。而像Flink這樣的計算引擎,可以同時支持流式計算和批處理計算。
除了大數(shù)據(jù)批處理和流處理,NoSQL系統(tǒng)處理的主要也是大規(guī)模海量數(shù)據(jù)的存儲與訪問,所以也被歸為大數(shù)據(jù)技術。 NoSQL曾經(jīng)在2011年左右非?;鸨?,涌現(xiàn)出HBase、Cassandra等許多優(yōu)秀的產(chǎn)品,其中HBase是從Hadoop中分離出來的、基于HDFS的NoSQL系統(tǒng)。
我們回顧軟件發(fā)展的歷史會發(fā)現(xiàn),差不多類似功能的軟件,它們出現(xiàn)的時間都非常接近,比如Linux和Windows都是在90年代初出現(xiàn),Java開發(fā)中的各類MVC框架也基本都是同期出現(xiàn),Android和iOS也是前腳后腳問世。2011年前后,各種NoSQL數(shù)據(jù)庫也是層出不群,我也是在那個時候參與開發(fā)了阿里巴巴自己的NoSQL系統(tǒng)。
事物發(fā)展有自己的潮流和規(guī)律,當你身處潮流之中的時候,要緊緊抓住潮流的機會,想辦法脫穎而出,即使沒有成功,也會更加洞悉時代的脈搏,收獲珍貴的知識和經(jīng)驗。而如果潮流已經(jīng)退去,這個時候再去往這個方向上努力,只會收獲迷茫與壓抑,對時代、對自己都沒有什么幫助。
但是時代的浪潮猶如海灘上的浪花,總是一浪接著一浪,只要你站在海邊,身處這個行業(yè)之中,下一個浪潮很快又會到來。你需要敏感而又深刻地去觀察,略去那些浮躁的泡沫,抓住真正潮流的機會,奮力一搏,不管成敗,都不會遺憾。
正所謂在歷史前進的邏輯中前進,在時代發(fā)展的潮流中發(fā)展。通俗的說,就是要在風口中飛翔。
上面我講的這些基本上都可以歸類為大數(shù)據(jù)引擎或者大數(shù)據(jù)框架。而大數(shù)據(jù)處理的主要應用場景包括數(shù)據(jù)分析、數(shù)據(jù)挖掘與機器學習。數(shù)據(jù)分析主要使用Hive、Spark SQL等SQL引擎完成;數(shù)據(jù)挖掘與機器學習則有專門的機器學習框架TensorFlow、Mahout以及MLlib等,內(nèi)置了主要的機器學習和數(shù)據(jù)挖掘算法。
此外,大數(shù)據(jù)要存入分布式文件系統(tǒng)(HDFS),要有序調(diào)度MapReduce和Spark作業(yè)執(zhí)行,并能把執(zhí)行結果寫入到各個應用系統(tǒng)的數(shù)據(jù)庫中,還需要有一個大數(shù)據(jù)平臺整合所有這些大數(shù)據(jù)組件和企業(yè)應用系統(tǒng)。
圖中的所有這些框架、平臺以及相關的算法共同構成了大數(shù)據(jù)的技術體系,我將會在專欄后面逐個分析,幫你能夠?qū)Υ髷?shù)據(jù)技術原理和應用算法構建起完整的知識體系,進可以專職從事大數(shù)據(jù)開發(fā),退可以在自己的應用開發(fā)中更好地和大數(shù)據(jù)集成,掌控自己的項目。
希望對您有所幫助!~
NewSQL是對一類現(xiàn)代關系型數(shù)據(jù)庫的統(tǒng)稱,這類數(shù)據(jù)庫對于一般的OLTP讀寫請求提供可橫向擴展的性能,同時支持事務的ACID保證。這些系統(tǒng)既擁有NoSQL數(shù)據(jù)庫的擴展性,又保持傳統(tǒng)數(shù)據(jù)庫的事務特性。NewSQL重新將“應用程序邏輯與數(shù)據(jù)操作邏輯應該分離”的理念帶回到現(xiàn)代數(shù)據(jù)庫的世界,這也驗證了歷史的發(fā)展總是呈現(xiàn)出螺旋上升的形式。
在21世紀00年代中,出現(xiàn)了許多數(shù)據(jù)倉庫系統(tǒng) (如 Vertica,Greeplum 和AsterData),這些以處理OLAP 請求為設計目標的系統(tǒng)并不在本文定義的NewSQL范圍內(nèi)。OLAP 數(shù)據(jù)庫更關注針對海量數(shù)據(jù)的大型、復雜、只讀的查詢,查詢時間可能持續(xù)秒級、分鐘級甚至更長。
NoSQL的擁躉普遍認為阻礙傳統(tǒng)數(shù)據(jù)庫橫向擴容、提高可用性的原因在于ACID保證和關系模型,因此NoSQL運動的核心就是放棄事務強一致性以及關系模型,擁抱最終一致性和其它數(shù)據(jù)模型?(如 key/value,graphs 和Documents)。
兩個最著名的NoSQL數(shù)據(jù)庫就是Google的BigTable和Amazon的Dynamo,由于二者都未開源,其它組織就開始推出類似的開源替代項目,包括Facebook的 Cassandra (基于BigTable和Dynamo)、PowerSet的 Hbase(基于BigTable)。有一些創(chuàng)業(yè)公司也加入到這場NoSQL運動中,它們不一定是受BigTable和Dynamo的啟發(fā),但都響應了NoSQL的哲學,其中最出名的就是MongoDB。
在21世紀00年代末,市面上已經(jīng)有許多供用戶選擇的分布式數(shù)據(jù)庫產(chǎn)品。使用NoSQL的優(yōu)勢在于應用開發(fā)者可以更關注應用邏輯本身,而非數(shù)據(jù)庫的擴展性問題;但與此同時許多應用,如金融系統(tǒng)、訂單處理系統(tǒng),由于無法放棄事務的一致性要求被拒之門外。
一些組織,如Google,已經(jīng)發(fā)現(xiàn)他們的許多工程師將過多的精力放在處理數(shù)據(jù)一致性上,這既暴露了數(shù)據(jù)庫的抽象、又提高了代碼的復雜度,這時候要么選擇回到傳統(tǒng)DBMS時代,用更高的機器配置縱向擴容,要么選擇回到中間件時代,開發(fā)支持分布式事務的中間件。這兩種方案成本都很高,于是NewSQL運動開始醞釀。
NewSQL數(shù)據(jù)庫設計針對的讀寫事務有以下特點:
1、耗時短。
2、使用索引查詢,涉及少量數(shù)據(jù)。
3、重復度高,通常使用相同的查詢語句和不同的查詢參考。
也有一些學者認為NewSQL系統(tǒng)是特指實現(xiàn)上使用Lock-free并發(fā)控制技術和share-nothing架構的數(shù)據(jù)庫。所有我們認為是NewSQL的數(shù)據(jù)庫系統(tǒng)確實都有這樣的特點。
MongoDB和CouchDB都是面向文檔的數(shù)據(jù)庫。MongoDB和CouchDB都是開源NoSQL數(shù)據(jù)庫的最典型代表。
除了都以文檔形式存儲外它們沒有其他的共同點。MongoDB和CouchDB在數(shù)據(jù)模型實現(xiàn)、接口、對象存儲以及復制方法等方面有很多不同。
本文題目:nosql問世的原因,no sql數(shù)據(jù)庫的起因有哪些?
地址分享:http://www.rwnh.cn/article22/dssdscc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制開發(fā)、自適應網(wǎng)站、網(wǎng)站設計公司、全網(wǎng)營銷推廣、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)