執(zhí)行大數(shù)據(jù)[注]項(xiàng)目的企業(yè)面對的關(guān)鍵決策之一是使用哪個數(shù)據(jù)庫,SQL還是NoSQL?SQL有著驕人的業(yè)績,龐大的安裝基礎(chǔ);而NoSQL正在獲得可觀的收益,且有很多支持者。我們來看看兩位專家對這個問題的看法。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的西塞山網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
專家
·VoltDB公司首席技術(shù)官Ryan Betts表示,SQL已經(jīng)贏得了大型企業(yè)的廣泛部署,大數(shù)據(jù)是它可以支持的另一個領(lǐng)域。
·Couchbase公司首席執(zhí)行官Bob Wiederhold表示,NoSQL是可行的選擇,并且從很多方面來看,它是大數(shù)據(jù)的最佳選擇,特別是涉及到可擴(kuò)展性時。
SQL經(jīng)歷時間的考驗(yàn),并仍然在蓬勃發(fā)展
VoltDB公司首席技術(shù)官Ryan Betts
結(jié)構(gòu)化查詢語言(SQL)是經(jīng)過時間考驗(yàn)的勝利者,它已經(jīng)主宰了幾十年,目前大數(shù)據(jù)公司和組織(例如谷歌、Facebook、Cloudera和Apache)正在積極投資于SQL。
在成為主導(dǎo)技術(shù)(例如SQL)后,有時候我們很容易忘記其優(yōu)越性。SQL的獨(dú)特優(yōu)勢包括:
1. SQL能夠加強(qiáng)與數(shù)據(jù)的交互,并允許對單個數(shù)據(jù)庫設(shè)計(jì)提出問題。這是很關(guān)鍵的特征,因?yàn)闊o法交互的數(shù)據(jù)基本上是沒用的,并且,增強(qiáng)的交互性能夠帶來新的見解、新的問題和更有意義的未來交互。
2. SQL是標(biāo)準(zhǔn)化的,使用戶能夠跨系統(tǒng)運(yùn)用他們的知識,并對第三方附件和工具提供支持。
3. SQL能夠擴(kuò)展,并且是多功能和經(jīng)過時間驗(yàn)證的,這能夠解決從快寫為主導(dǎo)的傳輸?shù)綊呙杳芗蜕钊敕治龅葐栴}。
4. SQL對數(shù)據(jù)呈現(xiàn)和存儲采用正交形式,一些SQL系統(tǒng)支持JSON和其他結(jié)構(gòu)化對象格式,比NoSQL具有更好的性能和更多功能。
雖然NoSQL的出現(xiàn)帶來了一些影響,但SQL仍然主導(dǎo)著市場,并在大數(shù)據(jù)領(lǐng)域贏得了很多投資和廣泛部署。
NoSQL的說法很含糊,對于本次討論,我借用Rick Cattell對NoSQL的定義,即提供簡單操作(例如密鑰/數(shù)值存儲)或簡單記錄和索引,并專注于這些簡單操作的橫向可擴(kuò)展性的系統(tǒng)。
很顯然,現(xiàn)在很多新的數(shù)據(jù)庫并不是都一樣,認(rèn)識每種數(shù)據(jù)庫背后的原理以及潛在問題是成功的關(guān)鍵。NoSQL的主要特點(diǎn)使其更適合于特定的問題。例如,圖形數(shù)據(jù)庫更適合于數(shù)據(jù)通過關(guān)系組織的情況,而專門的文本搜索系統(tǒng)更適合于需要實(shí)時搜索的情況。
在這里,讓我們看看SQL系統(tǒng)的主要優(yōu)勢和差異化功能:
* SQL可實(shí)現(xiàn)交互性。 SQL是一種聲明性查詢語言。用戶說出他們想要什么(例如,顯示過去五年三月份期間頂級客戶的地理位置),數(shù)據(jù)庫內(nèi)部就會構(gòu)件算法并提取請求的結(jié)果。相比之下,NoSQL編程創(chuàng)新MapReduce是一種程序性查詢技術(shù)。在用戶提出請求時,MapReduce要求用戶不僅說出自己想要什么,而且要求他們陳述如何產(chǎn)生答案。
這聽起來像一個無趣的技術(shù)差異,但這很關(guān)鍵,原因在于:首先,聲明性SQL查詢更容易通過圖形化工具以及點(diǎn)擊報(bào)告構(gòu)建器來構(gòu)建。這讓分析師、操作員、管理者和其他不具備軟件編程能力的員工進(jìn)行數(shù)據(jù)庫查詢;其次,數(shù)據(jù)庫引擎可以利用內(nèi)部信息來選擇最有效的算法。改變數(shù)據(jù)庫的物理布局或數(shù)據(jù)庫,最佳算法仍然能夠計(jì)算出來。而在程序性系統(tǒng)中,編程人員需要重新訪問和重新編程算法,這是非常昂貴且容易出錯的過程。
市場理解這個關(guān)鍵區(qū)別。在2010年,谷歌宣布部署SQL來補(bǔ)充MapReduce,主要受內(nèi)部用戶需求所驅(qū)動。最近,F(xiàn)acebook發(fā)布了Presto(一種SQL部署)來查詢其PB級HDFS集群。根據(jù)Facebook表示:“隨著我們的倉庫增長到PB級,以及我們的需求變化,我們清楚地意識到,我們需要一個提供低延時查詢的互動系統(tǒng)?!贝送猓珻loudera也正在構(gòu)建Impala—另一個基于HDFS的SQL部署。
* SQL是標(biāo)準(zhǔn)化的。 雖然供應(yīng)商有時候會添加自己的語言到SQL界面,但SQL的核心是標(biāo)準(zhǔn)化的,還有其他規(guī)格(例如ODBC和JDBC)提供廣泛可用的穩(wěn)定界面到SQL存儲。這帶來了一個管理和操作工具生態(tài)系統(tǒng),可以在SQL系統(tǒng)之上設(shè)計(jì)、監(jiān)控、檢查、探索和構(gòu)建應(yīng)用程序。
SQL用戶和程序員可用跨多個后端系統(tǒng)重復(fù)使用其API和UI知識,減少了應(yīng)用程序的開發(fā)時間。標(biāo)準(zhǔn)化還允許聲明性第三方提取、轉(zhuǎn)換、加載(ETL)工具,使企業(yè)可以在數(shù)據(jù)庫之間以及跨系統(tǒng)傳輸數(shù)據(jù)。
* SQL可擴(kuò)展。 認(rèn)為SQL必須犧牲以獲得可擴(kuò)展性的看法,完全是錯誤的。如前所述,F(xiàn)acebook創(chuàng)建了一個SQL界面來查詢PB級數(shù)據(jù)。SQL能夠非常有效地運(yùn)行極快的ACID傳輸。SQL對數(shù)據(jù)存儲和索引提供的抽象[注]化允許跨各種問題和數(shù)據(jù)集大小的一致使用,讓SQL可以跨集群復(fù)制數(shù)據(jù)存儲有效地運(yùn)行。使用SQL作為界面獨(dú)立于構(gòu)建云、規(guī)?;騂A系統(tǒng),SQL中并沒有什么在阻止和限制容錯、高可用性和復(fù)制。事實(shí)上,所有現(xiàn)代SQL系統(tǒng)支持云友好型橫向可擴(kuò)展性、復(fù)制和容錯性。
* SQL支持JSON。 幾年前,很多SQL系統(tǒng)增加了XML文檔支持?,F(xiàn)在,隨著JSON成為一種流行的數(shù)據(jù)交換格式,SQL供應(yīng)商也紛紛加入了JSON型的支持?;诂F(xiàn)在靈活的編程過程和web基礎(chǔ)設(shè)施的正常運(yùn)行時間要求,我們很需要結(jié)構(gòu)化數(shù)據(jù)類型的支持。Oracle 12c、PostgreSQL 9.2、VoltDB和其他支持JSON的數(shù)據(jù)庫,通常具有優(yōu)于“原生”JSON的性能。
SQL將繼續(xù)贏得市場份額,并會繼續(xù)看到新的投資和部署。NoSQL數(shù)據(jù)庫提供專有查詢語言或簡單的鍵值語義,而沒有更深層次的技術(shù)差異化?,F(xiàn)代SQL系統(tǒng)提供可擴(kuò)展性的同時,還支持更豐富的查詢語義,并有龐大的用戶安裝基礎(chǔ),廣泛的生態(tài)系統(tǒng)整合和深度企業(yè)部署。
NoSQL更適合大數(shù)據(jù)應(yīng)用程序
Couchbase公司首席執(zhí)行官Bob Wiederhold
NoSQL越來越多地被認(rèn)為是關(guān)系型數(shù)據(jù)庫的可行替代品,特別是對于大數(shù)據(jù)應(yīng)用程序。此外,無模式數(shù)據(jù)模型通常更適合于現(xiàn)在捕捉和處理的數(shù)據(jù)種類和類型。
當(dāng)我們談?wù)揘oSQL領(lǐng)域的大數(shù)據(jù)時,我們指的是從操作數(shù)據(jù)庫讀取和寫入。不要將操作數(shù)據(jù)庫與分析數(shù)據(jù)庫混淆,這通常會查看大量數(shù)據(jù),并從這些數(shù)據(jù)獲取可視性。
雖然操作數(shù)據(jù)庫的大數(shù)據(jù)看起來不具有可分析性,但操作數(shù)據(jù)庫通常會存儲超大量用戶的大型數(shù)據(jù)集,這些用戶經(jīng)常需要訪問數(shù)據(jù)來實(shí)時執(zhí)行交易。這種數(shù)據(jù)庫的操作規(guī)模也解釋了NoSQL的關(guān)鍵特性,也就是為什么NoSQL是大數(shù)據(jù)應(yīng)用程序的關(guān)鍵的原因。
NoSQL是可擴(kuò)展性的關(guān)鍵
每次技術(shù)行業(yè)經(jīng)歷硬件發(fā)展的根本性轉(zhuǎn)變時,都會出現(xiàn)一個拐點(diǎn)。在數(shù)據(jù)庫領(lǐng)域,從縱向擴(kuò)展到橫向擴(kuò)展的轉(zhuǎn)變推動了NoSQL的發(fā)展。關(guān)系型數(shù)據(jù)庫(包括來自甲骨文和IBM的數(shù)據(jù)庫)是縱向擴(kuò)展。也就是說,它們是集中式、共享一切的技術(shù),只能通過增加更多昂貴的硬件來擴(kuò)展。
而NoSQL數(shù)據(jù)庫是分布式橫向擴(kuò)展技術(shù)。它們使用了分布式節(jié)點(diǎn)集(稱為集群)來提供高度彈性擴(kuò)展功能,讓用戶可以添加節(jié)點(diǎn)來動態(tài)處理負(fù)載。
分布式橫向擴(kuò)展的做法通常要比縱向做法更加便宜。商業(yè)關(guān)系型數(shù)據(jù)庫的授權(quán)費(fèi)用也讓人望而卻步,因?yàn)樗麄兊膬r格是按每臺服務(wù)器來計(jì)算。另一方面,NoSQL數(shù)據(jù)庫通常是開源技術(shù),按照運(yùn)行的服務(wù)器集群收費(fèi),而且價格相對便宜。
NoSQL是靈活性的關(guān)鍵
關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)模型有很大的不同。關(guān)系型模式獲取數(shù)據(jù),并將數(shù)據(jù)分配到很多相互關(guān)聯(lián)的表中,這些表通過外鍵相互應(yīng)用。
當(dāng)用戶需要對數(shù)據(jù)集運(yùn)行查詢時,所需信息需要從多個表中收集(通常涉及數(shù)百個企業(yè)應(yīng)用程序),并結(jié)合這些信息,再提供給應(yīng)用程序。同樣地,當(dāng)寫入數(shù)據(jù)時,需要在多個表協(xié)調(diào)和執(zhí)行寫入。當(dāng)數(shù)據(jù)相對較少,并且,數(shù)據(jù)以較慢速度流入數(shù)據(jù)庫時,關(guān)系型數(shù)據(jù)庫通常能夠捕捉和存儲信息。然而,現(xiàn)在的應(yīng)用程序通常需要快速寫入(和讀取)海量數(shù)據(jù)。
NoSQL數(shù)據(jù)庫采用非常不同的模式。在其核心,NoSQL數(shù)據(jù)庫其實(shí)是“NoREL”,或者說非關(guān)系型,這意味著它們沒有依賴于表以及表之間的聯(lián)系,以存儲和組織信息。例如,以文檔為導(dǎo)向的NoSQL數(shù)據(jù)庫獲取你想要存儲的數(shù)據(jù),并采用JSON格式整合到文檔中。每個JSON文檔可以被你的應(yīng)用程序視為一個對象。JSON文檔可能會提取跨越25個表的數(shù)據(jù),將數(shù)據(jù)集成到一個文檔中。
聚合這些信息可能會導(dǎo)致信息重復(fù),但由于存儲已不再是一個成本問題,數(shù)據(jù)模型靈活性、發(fā)布所產(chǎn)生文檔的簡便性以及讀取和寫入性能提高,讓這成為不錯的選擇。
NoSQL是大數(shù)據(jù)應(yīng)用程序的關(guān)鍵
通過第三方(包括社交媒體網(wǎng)站),數(shù)據(jù)正變得越來越容易捕捉和訪問。這些數(shù)據(jù)包括:個人用戶信息、地理位置數(shù)據(jù)、用戶生產(chǎn)的內(nèi)容、機(jī)器記錄數(shù)據(jù)和傳感器產(chǎn)生的數(shù)據(jù)。企業(yè)還可以依賴于大數(shù)據(jù)來推動其關(guān)鍵任務(wù)型應(yīng)用程序。同時,企業(yè)正在轉(zhuǎn)向到NoSQL數(shù)據(jù)庫,因?yàn)檫@種數(shù)據(jù)庫非常適合現(xiàn)在新型的數(shù)據(jù)類型。
開發(fā)人員想要一個靈活的數(shù)據(jù)庫,可以很容易適應(yīng)新的數(shù)據(jù)類型,并且,不會受第三方數(shù)據(jù)供應(yīng)商的內(nèi)容結(jié)構(gòu)變化的影響。大多數(shù)新數(shù)據(jù)是非結(jié)構(gòu)化和半結(jié)構(gòu)化,因此,開發(fā)人員也需要能夠有效存儲這些數(shù)據(jù)的數(shù)據(jù)庫。然而,關(guān)系型數(shù)據(jù)庫采用的嚴(yán)格定義的基于模式的做法讓其不可能快速整合新數(shù)據(jù)類型,并且很不適合于非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。
總體來說,隨著web和移動應(yīng)用程序的增加、新的趨勢、網(wǎng)上消費(fèi)者行為的轉(zhuǎn)變以及新的數(shù)據(jù)類型的出現(xiàn),行業(yè)需要能夠提供可擴(kuò)展的靈活的數(shù)據(jù)庫技術(shù)來管理和訪問數(shù)據(jù)。NoSQL技術(shù)是有效滿足這些需求的唯一可行解決方案。
我們知道大數(shù)據(jù)產(chǎn)生了巨大的數(shù)據(jù),那么是需要去存儲這些數(shù)據(jù)的,NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫,它類似于存放數(shù)據(jù)的倉庫,對數(shù)據(jù)進(jìn)行存儲,相比mysql,是它的升級版,NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
雖然NoSQL流行語火起來才短短一年的時間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個嚴(yán)酷的事實(shí):技術(shù)越來越成熟——以至于原來很好的NoSQL數(shù)據(jù)存儲不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲庫。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動,早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲,相對于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。
對于NoSQL并沒有一個明確的范圍和定義,但是他們都普遍存在下面一些共同特征:
不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當(dāng)插入數(shù)據(jù)時,并不需要預(yù)先定義它們的模式。
無共享架構(gòu):相對于將所有數(shù)據(jù)存儲的存儲區(qū)域網(wǎng)絡(luò)中的全共享架構(gòu)。NoSQL往往將數(shù)據(jù)劃分后存儲在各個本地服務(wù)器上。因?yàn)閺谋镜卮疟P讀取數(shù)據(jù)的性能往往好于通過網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能,從而提高了系統(tǒng)的性能。
彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時候,動態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),數(shù)據(jù)可以自動遷移。
分區(qū):相對于將數(shù)據(jù)存放于同一個節(jié)點(diǎn),NoSQL數(shù)據(jù)庫需要將數(shù)據(jù)進(jìn)行分區(qū),將記錄分散在多個節(jié)點(diǎn)上面。并且通常分區(qū)的同時還要做復(fù)制。這樣既提高了并行性能,又能保證沒有單點(diǎn)失效的問題。
異步復(fù)制:和RAID存儲系統(tǒng)不同的是,NoSQL中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫入一個節(jié)點(diǎn),而不會被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不總是能保證一致性,這樣的方式在出現(xiàn)故障的時候,可能會丟失少量的數(shù)據(jù)。
BASE:相對于事務(wù)嚴(yán)格的ACID特性,NoSQL數(shù)據(jù)庫保證的是BASE特性。BASE是最終一致性和軟事務(wù)。
NoSQL數(shù)據(jù)庫并沒有一個統(tǒng)一的架構(gòu),兩種NoSQL數(shù)據(jù)庫之間的不同,甚至遠(yuǎn)遠(yuǎn)超過兩種關(guān)系型數(shù)據(jù)庫的不同??梢哉f,NoSQL各有所長,成功的NoSQL必然特別適用于某些場合或者某些應(yīng)用,在這些場合中會遠(yuǎn)遠(yuǎn)勝過關(guān)系型數(shù)據(jù)庫和其他的NoSQL。
1、NoSQL:以前的翻譯是“不使用SQL”:因?yàn)橛幸徊糠终J(rèn)為SQL查詢復(fù)雜了?,F(xiàn)在的翻譯是“不僅僅是SQL”NOSQL數(shù)據(jù)庫與關(guān)系性數(shù)據(jù)最大的區(qū)別在于數(shù)據(jù)存儲方面。NOSQL采用文檔的形式存儲數(shù)據(jù)、關(guān)系型數(shù)據(jù)庫采用表的結(jié)構(gòu)存儲數(shù)據(jù)。
2、NOSQL在大數(shù)據(jù)面前比SQL數(shù)據(jù)庫更占優(yōu)勢。
當(dāng)前標(biāo)題:nosql就是大數(shù)據(jù),什么是NoSQL數(shù)據(jù)庫?
文章鏈接:http://aaarwkj.com/article32/dssgssc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、商城網(wǎng)站、標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)、企業(yè)建站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)