真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

大數(shù)據(jù)算法nosql,大數(shù)據(jù)算法是什么意思

nosql 和sql數(shù)據(jù)庫(kù)大數(shù)據(jù)的計(jì)算哪個(gè)快

nosql,非結(jié)構(gòu)化數(shù)據(jù)庫(kù) 是大數(shù)據(jù)的一種解決方案,雖然大數(shù)據(jù)就是it巨頭為了賺錢(qián)忽悠人的東西

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供正安網(wǎng)站建設(shè)、正安做網(wǎng)站、正安網(wǎng)站設(shè)計(jì)、正安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、正安企業(yè)網(wǎng)站模板建站服務(wù),10余年正安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

大數(shù)據(jù)應(yīng)用程序最佳選擇:是SQL還是NoSQL

執(zhí)行大數(shù)據(jù)[注]項(xiàng)目的企業(yè)面對(duì)的關(guān)鍵決策之一是使用哪個(gè)數(shù)據(jù)庫(kù),SQL還是NoSQL?SQL有著驕人的業(yè)績(jī),龐大的安裝基礎(chǔ);而NoSQL正在獲得可觀的收益,且有很多支持者。我們來(lái)看看兩位專家對(duì)這個(gè)問(wèn)題的看法。

專家

·VoltDB公司首席技術(shù)官Ryan Betts表示,SQL已經(jīng)贏得了大型企業(yè)的廣泛部署,大數(shù)據(jù)是它可以支持的另一個(gè)領(lǐng)域。

·Couchbase公司首席執(zhí)行官Bob Wiederhold表示,NoSQL是可行的選擇,并且從很多方面來(lái)看,它是大數(shù)據(jù)的最佳選擇,特別是涉及到可擴(kuò)展性時(shí)。

SQL經(jīng)歷時(shí)間的考驗(yàn),并仍然在蓬勃發(fā)展

VoltDB公司首席技術(shù)官Ryan Betts

結(jié)構(gòu)化查詢語(yǔ)言(SQL)是經(jīng)過(guò)時(shí)間考驗(yàn)的勝利者,它已經(jīng)主宰了幾十年,目前大數(shù)據(jù)公司和組織(例如谷歌、Facebook、Cloudera和Apache)正在積極投資于SQL。

在成為主導(dǎo)技術(shù)(例如SQL)后,有時(shí)候我們很容易忘記其優(yōu)越性。SQL的獨(dú)特優(yōu)勢(shì)包括:

1. SQL能夠加強(qiáng)與數(shù)據(jù)的交互,并允許對(duì)單個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)提出問(wèn)題。這是很關(guān)鍵的特征,因?yàn)闊o(wú)法交互的數(shù)據(jù)基本上是沒(méi)用的,并且,增強(qiáng)的交互性能夠帶來(lái)新的見(jiàn)解、新的問(wèn)題和更有意義的未來(lái)交互。

2. SQL是標(biāo)準(zhǔn)化的,使用戶能夠跨系統(tǒng)運(yùn)用他們的知識(shí),并對(duì)第三方附件和工具提供支持。

3. SQL能夠擴(kuò)展,并且是多功能和經(jīng)過(guò)時(shí)間驗(yàn)證的,這能夠解決從快寫(xiě)為主導(dǎo)的傳輸?shù)綊呙杳芗蜕钊敕治龅葐?wèn)題。

4. SQL對(duì)數(shù)據(jù)呈現(xiàn)和存儲(chǔ)采用正交形式,一些SQL系統(tǒng)支持JSON和其他結(jié)構(gòu)化對(duì)象格式,比NoSQL具有更好的性能和更多功能。

雖然NoSQL的出現(xiàn)帶來(lái)了一些影響,但SQL仍然主導(dǎo)著市場(chǎng),并在大數(shù)據(jù)領(lǐng)域贏得了很多投資和廣泛部署。

NoSQL的說(shuō)法很含糊,對(duì)于本次討論,我借用Rick Cattell對(duì)NoSQL的定義,即提供簡(jiǎn)單操作(例如密鑰/數(shù)值存儲(chǔ))或簡(jiǎn)單記錄和索引,并專注于這些簡(jiǎn)單操作的橫向可擴(kuò)展性的系統(tǒng)。

很顯然,現(xiàn)在很多新的數(shù)據(jù)庫(kù)并不是都一樣,認(rèn)識(shí)每種數(shù)據(jù)庫(kù)背后的原理以及潛在問(wèn)題是成功的關(guān)鍵。NoSQL的主要特點(diǎn)使其更適合于特定的問(wèn)題。例如,圖形數(shù)據(jù)庫(kù)更適合于數(shù)據(jù)通過(guò)關(guān)系組織的情況,而專門(mén)的文本搜索系統(tǒng)更適合于需要實(shí)時(shí)搜索的情況。

在這里,讓我們看看SQL系統(tǒng)的主要優(yōu)勢(shì)和差異化功能:

* SQL可實(shí)現(xiàn)交互性。 SQL是一種聲明性查詢語(yǔ)言。用戶說(shuō)出他們想要什么(例如,顯示過(guò)去五年三月份期間頂級(jí)客戶的地理位置),數(shù)據(jù)庫(kù)內(nèi)部就會(huì)構(gòu)件算法并提取請(qǐng)求的結(jié)果。相比之下,NoSQL編程創(chuàng)新MapReduce是一種程序性查詢技術(shù)。在用戶提出請(qǐng)求時(shí),MapReduce要求用戶不僅說(shuō)出自己想要什么,而且要求他們陳述如何產(chǎn)生答案。

這聽(tīng)起來(lái)像一個(gè)無(wú)趣的技術(shù)差異,但這很關(guān)鍵,原因在于:首先,聲明性SQL查詢更容易通過(guò)圖形化工具以及點(diǎn)擊報(bào)告構(gòu)建器來(lái)構(gòu)建。這讓分析師、操作員、管理者和其他不具備軟件編程能力的員工進(jìn)行數(shù)據(jù)庫(kù)查詢;其次,數(shù)據(jù)庫(kù)引擎可以利用內(nèi)部信息來(lái)選擇最有效的算法。改變數(shù)據(jù)庫(kù)的物理布局或數(shù)據(jù)庫(kù),最佳算法仍然能夠計(jì)算出來(lái)。而在程序性系統(tǒng)中,編程人員需要重新訪問(wèn)和重新編程算法,這是非常昂貴且容易出錯(cuò)的過(guò)程。

市場(chǎng)理解這個(gè)關(guān)鍵區(qū)別。在2010年,谷歌宣布部署SQL來(lái)補(bǔ)充MapReduce,主要受內(nèi)部用戶需求所驅(qū)動(dòng)。最近,F(xiàn)acebook發(fā)布了Presto(一種SQL部署)來(lái)查詢其PB級(jí)HDFS集群。根據(jù)Facebook表示:“隨著我們的倉(cāng)庫(kù)增長(zhǎng)到PB級(jí),以及我們的需求變化,我們清楚地意識(shí)到,我們需要一個(gè)提供低延時(shí)查詢的互動(dòng)系統(tǒng)?!贝送猓珻loudera也正在構(gòu)建Impala—另一個(gè)基于HDFS的SQL部署。

* SQL是標(biāo)準(zhǔn)化的。 雖然供應(yīng)商有時(shí)候會(huì)添加自己的語(yǔ)言到SQL界面,但SQL的核心是標(biāo)準(zhǔn)化的,還有其他規(guī)格(例如ODBC和JDBC)提供廣泛可用的穩(wěn)定界面到SQL存儲(chǔ)。這帶來(lái)了一個(gè)管理和操作工具生態(tài)系統(tǒng),可以在SQL系統(tǒng)之上設(shè)計(jì)、監(jiān)控、檢查、探索和構(gòu)建應(yīng)用程序。

SQL用戶和程序員可用跨多個(gè)后端系統(tǒng)重復(fù)使用其API和UI知識(shí),減少了應(yīng)用程序的開(kāi)發(fā)時(shí)間。標(biāo)準(zhǔn)化還允許聲明性第三方提取、轉(zhuǎn)換、加載(ETL)工具,使企業(yè)可以在數(shù)據(jù)庫(kù)之間以及跨系統(tǒng)傳輸數(shù)據(jù)。

* SQL可擴(kuò)展。 認(rèn)為SQL必須犧牲以獲得可擴(kuò)展性的看法,完全是錯(cuò)誤的。如前所述,F(xiàn)acebook創(chuàng)建了一個(gè)SQL界面來(lái)查詢PB級(jí)數(shù)據(jù)。SQL能夠非常有效地運(yùn)行極快的ACID傳輸。SQL對(duì)數(shù)據(jù)存儲(chǔ)和索引提供的抽象[注]化允許跨各種問(wèn)題和數(shù)據(jù)集大小的一致使用,讓SQL可以跨集群復(fù)制數(shù)據(jù)存儲(chǔ)有效地運(yùn)行。使用SQL作為界面獨(dú)立于構(gòu)建云、規(guī)模或HA系統(tǒng),SQL中并沒(méi)有什么在阻止和限制容錯(cuò)、高可用性和復(fù)制。事實(shí)上,所有現(xiàn)代SQL系統(tǒng)支持云友好型橫向可擴(kuò)展性、復(fù)制和容錯(cuò)性。

* SQL支持JSON。 幾年前,很多SQL系統(tǒng)增加了XML文檔支持?,F(xiàn)在,隨著JSON成為一種流行的數(shù)據(jù)交換格式,SQL供應(yīng)商也紛紛加入了JSON型的支持?;诂F(xiàn)在靈活的編程過(guò)程和web基礎(chǔ)設(shè)施的正常運(yùn)行時(shí)間要求,我們很需要結(jié)構(gòu)化數(shù)據(jù)類型的支持。Oracle 12c、PostgreSQL 9.2、VoltDB和其他支持JSON的數(shù)據(jù)庫(kù),通常具有優(yōu)于“原生”JSON的性能。

SQL將繼續(xù)贏得市場(chǎng)份額,并會(huì)繼續(xù)看到新的投資和部署。NoSQL數(shù)據(jù)庫(kù)提供專有查詢語(yǔ)言或簡(jiǎn)單的鍵值語(yǔ)義,而沒(méi)有更深層次的技術(shù)差異化?,F(xiàn)代SQL系統(tǒng)提供可擴(kuò)展性的同時(shí),還支持更豐富的查詢語(yǔ)義,并有龐大的用戶安裝基礎(chǔ),廣泛的生態(tài)系統(tǒng)整合和深度企業(yè)部署。

NoSQL更適合大數(shù)據(jù)應(yīng)用程序

Couchbase公司首席執(zhí)行官Bob Wiederhold

NoSQL越來(lái)越多地被認(rèn)為是關(guān)系型數(shù)據(jù)庫(kù)的可行替代品,特別是對(duì)于大數(shù)據(jù)應(yīng)用程序。此外,無(wú)模式數(shù)據(jù)模型通常更適合于現(xiàn)在捕捉和處理的數(shù)據(jù)種類和類型。

當(dāng)我們談?wù)揘oSQL領(lǐng)域的大數(shù)據(jù)時(shí),我們指的是從操作數(shù)據(jù)庫(kù)讀取和寫(xiě)入。不要將操作數(shù)據(jù)庫(kù)與分析數(shù)據(jù)庫(kù)混淆,這通常會(huì)查看大量數(shù)據(jù),并從這些數(shù)據(jù)獲取可視性。

雖然操作數(shù)據(jù)庫(kù)的大數(shù)據(jù)看起來(lái)不具有可分析性,但操作數(shù)據(jù)庫(kù)通常會(huì)存儲(chǔ)超大量用戶的大型數(shù)據(jù)集,這些用戶經(jīng)常需要訪問(wèn)數(shù)據(jù)來(lái)實(shí)時(shí)執(zhí)行交易。這種數(shù)據(jù)庫(kù)的操作規(guī)模也解釋了NoSQL的關(guān)鍵特性,也就是為什么NoSQL是大數(shù)據(jù)應(yīng)用程序的關(guān)鍵的原因。

NoSQL是可擴(kuò)展性的關(guān)鍵

每次技術(shù)行業(yè)經(jīng)歷硬件發(fā)展的根本性轉(zhuǎn)變時(shí),都會(huì)出現(xiàn)一個(gè)拐點(diǎn)。在數(shù)據(jù)庫(kù)領(lǐng)域,從縱向擴(kuò)展到橫向擴(kuò)展的轉(zhuǎn)變推動(dòng)了NoSQL的發(fā)展。關(guān)系型數(shù)據(jù)庫(kù)(包括來(lái)自甲骨文和IBM的數(shù)據(jù)庫(kù))是縱向擴(kuò)展。也就是說(shuō),它們是集中式、共享一切的技術(shù),只能通過(guò)增加更多昂貴的硬件來(lái)擴(kuò)展。

而NoSQL數(shù)據(jù)庫(kù)是分布式橫向擴(kuò)展技術(shù)。它們使用了分布式節(jié)點(diǎn)集(稱為集群)來(lái)提供高度彈性擴(kuò)展功能,讓用戶可以添加節(jié)點(diǎn)來(lái)動(dòng)態(tài)處理負(fù)載。

分布式橫向擴(kuò)展的做法通常要比縱向做法更加便宜。商業(yè)關(guān)系型數(shù)據(jù)庫(kù)的授權(quán)費(fèi)用也讓人望而卻步,因?yàn)樗麄兊膬r(jià)格是按每臺(tái)服務(wù)器來(lái)計(jì)算。另一方面,NoSQL數(shù)據(jù)庫(kù)通常是開(kāi)源技術(shù),按照運(yùn)行的服務(wù)器集群收費(fèi),而且價(jià)格相對(duì)便宜。

NoSQL是靈活性的關(guān)鍵

關(guān)系型數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)模型有很大的不同。關(guān)系型模式獲取數(shù)據(jù),并將數(shù)據(jù)分配到很多相互關(guān)聯(lián)的表中,這些表通過(guò)外鍵相互應(yīng)用。

當(dāng)用戶需要對(duì)數(shù)據(jù)集運(yùn)行查詢時(shí),所需信息需要從多個(gè)表中收集(通常涉及數(shù)百個(gè)企業(yè)應(yīng)用程序),并結(jié)合這些信息,再提供給應(yīng)用程序。同樣地,當(dāng)寫(xiě)入數(shù)據(jù)時(shí),需要在多個(gè)表協(xié)調(diào)和執(zhí)行寫(xiě)入。當(dāng)數(shù)據(jù)相對(duì)較少,并且,數(shù)據(jù)以較慢速度流入數(shù)據(jù)庫(kù)時(shí),關(guān)系型數(shù)據(jù)庫(kù)通常能夠捕捉和存儲(chǔ)信息。然而,現(xiàn)在的應(yīng)用程序通常需要快速寫(xiě)入(和讀取)海量數(shù)據(jù)。

NoSQL數(shù)據(jù)庫(kù)采用非常不同的模式。在其核心,NoSQL數(shù)據(jù)庫(kù)其實(shí)是“NoREL”,或者說(shuō)非關(guān)系型,這意味著它們沒(méi)有依賴于表以及表之間的聯(lián)系,以存儲(chǔ)和組織信息。例如,以文檔為導(dǎo)向的NoSQL數(shù)據(jù)庫(kù)獲取你想要存儲(chǔ)的數(shù)據(jù),并采用JSON格式整合到文檔中。每個(gè)JSON文檔可以被你的應(yīng)用程序視為一個(gè)對(duì)象。JSON文檔可能會(huì)提取跨越25個(gè)表的數(shù)據(jù),將數(shù)據(jù)集成到一個(gè)文檔中。

聚合這些信息可能會(huì)導(dǎo)致信息重復(fù),但由于存儲(chǔ)已不再是一個(gè)成本問(wèn)題,數(shù)據(jù)模型靈活性、發(fā)布所產(chǎn)生文檔的簡(jiǎn)便性以及讀取和寫(xiě)入性能提高,讓這成為不錯(cuò)的選擇。

NoSQL是大數(shù)據(jù)應(yīng)用程序的關(guān)鍵

通過(guò)第三方(包括社交媒體網(wǎng)站),數(shù)據(jù)正變得越來(lái)越容易捕捉和訪問(wèn)。這些數(shù)據(jù)包括:個(gè)人用戶信息、地理位置數(shù)據(jù)、用戶生產(chǎn)的內(nèi)容、機(jī)器記錄數(shù)據(jù)和傳感器產(chǎn)生的數(shù)據(jù)。企業(yè)還可以依賴于大數(shù)據(jù)來(lái)推動(dòng)其關(guān)鍵任務(wù)型應(yīng)用程序。同時(shí),企業(yè)正在轉(zhuǎn)向到NoSQL數(shù)據(jù)庫(kù),因?yàn)檫@種數(shù)據(jù)庫(kù)非常適合現(xiàn)在新型的數(shù)據(jù)類型。

開(kāi)發(fā)人員想要一個(gè)靈活的數(shù)據(jù)庫(kù),可以很容易適應(yīng)新的數(shù)據(jù)類型,并且,不會(huì)受第三方數(shù)據(jù)供應(yīng)商的內(nèi)容結(jié)構(gòu)變化的影響。大多數(shù)新數(shù)據(jù)是非結(jié)構(gòu)化和半結(jié)構(gòu)化,因此,開(kāi)發(fā)人員也需要能夠有效存儲(chǔ)這些數(shù)據(jù)的數(shù)據(jù)庫(kù)。然而,關(guān)系型數(shù)據(jù)庫(kù)采用的嚴(yán)格定義的基于模式的做法讓其不可能快速整合新數(shù)據(jù)類型,并且很不適合于非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。

總體來(lái)說(shuō),隨著web和移動(dòng)應(yīng)用程序的增加、新的趨勢(shì)、網(wǎng)上消費(fèi)者行為的轉(zhuǎn)變以及新的數(shù)據(jù)類型的出現(xiàn),行業(yè)需要能夠提供可擴(kuò)展的靈活的數(shù)據(jù)庫(kù)技術(shù)來(lái)管理和訪問(wèn)數(shù)據(jù)。NoSQL技術(shù)是有效滿足這些需求的唯一可行解決方案。

為什么要使用NoSQL?NOSQL的優(yōu)勢(shì)

非常榮幸能受邀在InfoQ開(kāi)辟這樣一個(gè)關(guān)于NoSQL的專欄,InfoQ是我非常尊重的一家技術(shù)媒體,同時(shí)我也希望借助InfoQ,在國(guó)內(nèi)推動(dòng)NoSQL的發(fā)展,希望跟我一樣有興趣的朋友加入進(jìn)來(lái)。這次的NoSQL專欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運(yùn)用到自己的項(xiàng)目中合適的場(chǎng)景中,還會(huì)適當(dāng)?shù)胤治鲆恍┏晒Π咐?,希望有成功使用NoSQL經(jīng)驗(yàn)的朋友給我提供一些線索和信息。 NoSQL概念隨著web2.0的快速發(fā)展,非關(guān)系型、分布式數(shù)據(jù)存儲(chǔ)得到了快速的發(fā)展,它們不保證關(guān)系數(shù)據(jù)的ACID特性。NoSQL概念在2009年被提了出來(lái)。NoSQL最常見(jiàn)的解釋是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一詞最早于1998年被用于一個(gè)輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)的名字。) NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲(chǔ),當(dāng)然還有其他的文檔型的、列存儲(chǔ)、圖型數(shù)據(jù)庫(kù)、xml數(shù)據(jù)庫(kù)等。在NoSQL概念提出之前,這些數(shù)據(jù)庫(kù)就被用于各種系統(tǒng)當(dāng)中,但是卻很少用于web互聯(lián)網(wǎng)應(yīng)用。比如cdb、qdbm、bdb數(shù)據(jù)庫(kù)。 傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的瓶頸 傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)具有不錯(cuò)的性能,高穩(wěn)定型,久經(jīng)歷史考驗(yàn),而且使用簡(jiǎn)單,功能強(qiáng)大,同時(shí)也積累了大量的成功案例。在互聯(lián)網(wǎng)領(lǐng)域,MySQL成為了絕對(duì)靠前的王者,毫不夸張的說(shuō),MySQL為互聯(lián)網(wǎng)的發(fā)展做出了卓越的貢獻(xiàn)。 在90年代,一個(gè)網(wǎng)站的訪問(wèn)量一般都不大,用單個(gè)數(shù)據(jù)庫(kù)完全可以輕松應(yīng)付。在那個(gè)時(shí)候,更多的都是靜態(tài)網(wǎng)頁(yè),動(dòng)態(tài)交互類型的網(wǎng)站不多。 到了最近10年,網(wǎng)站開(kāi)始快速發(fā)展?;鸨恼搲?、博客、sns、微博逐漸引領(lǐng)web領(lǐng)域的潮流。在初期,論壇的流量其實(shí)也不大,如果你接觸網(wǎng)絡(luò)比較早,你可能還記得那個(gè)時(shí)候還有文本型存儲(chǔ)的論壇程序,可以想象一般的論壇的流量有多大。 Memcached+MySQL 后來(lái),隨著訪問(wèn)量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫(kù)上都開(kāi)始出現(xiàn)了性能問(wèn)題,web程序不再僅僅專注在功能上,同時(shí)也在追求性能。程序員們開(kāi)始大量的使用緩存技術(shù)來(lái)緩解數(shù)據(jù)庫(kù)的壓力,優(yōu)化數(shù)據(jù)庫(kù)的結(jié)構(gòu)和索引。開(kāi)始比較流行的是通過(guò)文件緩存來(lái)緩解數(shù)據(jù)庫(kù)壓力,但是當(dāng)訪問(wèn)量繼續(xù)增大的時(shí)候,多臺(tái)web機(jī)器通過(guò)文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個(gè)時(shí)候,Memcached就自然的成為一個(gè)非常時(shí)尚的技術(shù)產(chǎn)品。 Memcached作為一個(gè)獨(dú)立的分布式的緩存服務(wù)器,為多個(gè)web服務(wù)器提供了一個(gè)共享的高性能緩存服務(wù),在Memcached服務(wù)器上,又發(fā)展了根據(jù)hash算法來(lái)進(jìn)行多臺(tái)Memcached緩存服務(wù)的擴(kuò)展,然后又出現(xiàn)了一致性hash來(lái)解決增加或減少緩存服務(wù)器導(dǎo)致重新hash帶來(lái)的大量緩存失效的弊端。當(dāng)時(shí),如果你去面試,你說(shuō)你有Memcached經(jīng)驗(yàn),肯定會(huì)加分的。 Mysql主從讀寫(xiě)分離 由于數(shù)據(jù)庫(kù)的寫(xiě)入壓力增加,Memcached只能緩解數(shù)據(jù)庫(kù)的讀取壓力。讀寫(xiě)集中在一個(gè)數(shù)據(jù)庫(kù)上讓數(shù)據(jù)庫(kù)不堪重負(fù),大部分網(wǎng)站開(kāi)始使用主從復(fù)制技術(shù)來(lái)達(dá)到讀寫(xiě)分離,以提高讀寫(xiě)性能和讀庫(kù)的可擴(kuò)展性。Mysql的master-slave模式成為這個(gè)時(shí)候的網(wǎng)站標(biāo)配了。 分表分庫(kù)隨著web2.0的繼續(xù)高速發(fā)展,在Memcached的高速緩存,MySQL的主從復(fù)制,讀寫(xiě)分離的基礎(chǔ)之上,這時(shí)MySQL主庫(kù)的寫(xiě)壓力開(kāi)始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會(huì)出現(xiàn)嚴(yán)重的鎖問(wèn)題,大量的高并發(fā)MySQL應(yīng)用開(kāi)始使用InnoDB引擎代替MyISAM。同時(shí),開(kāi)始流行使用分表分庫(kù)來(lái)緩解寫(xiě)壓力和數(shù)據(jù)增長(zhǎng)的擴(kuò)展問(wèn)題。這個(gè)時(shí)候,分表分庫(kù)成了一個(gè)熱門(mén)技術(shù),是面試的熱門(mén)問(wèn)題也是業(yè)界討論的熱門(mén)技術(shù)問(wèn)題。也就在這個(gè)時(shí)候,MySQL推出了還不太穩(wěn)定的表分區(qū),這也給技術(shù)實(shí)力一般的公司帶來(lái)了希望。雖然MySQL推出了MySQL Cluster集群,但是由于在互聯(lián)網(wǎng)幾乎沒(méi)有成功案例,性能也不能滿足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。 MySQL的擴(kuò)展性瓶頸 在互聯(lián)網(wǎng),大部分的MySQL都應(yīng)該是IO密集型的,事實(shí)上,如果你的MySQL是個(gè)CPU密集型的話,那么很可能你的MySQL設(shè)計(jì)得有性能問(wèn)題,需要優(yōu)化了。大數(shù)據(jù)量高并發(fā)環(huán)境下的MySQL應(yīng)用開(kāi)發(fā)越來(lái)越復(fù)雜,也越來(lái)越具有技術(shù)挑戰(zhàn)性。分表分庫(kù)的規(guī)則把握都是需要經(jīng)驗(yàn)的。雖然有像淘寶這樣技術(shù)實(shí)力強(qiáng)大的公司開(kāi)發(fā)了透明的中間件層來(lái)屏蔽開(kāi)發(fā)者的復(fù)雜性,但是避免不了整個(gè)架構(gòu)的復(fù)雜性。分庫(kù)分表的子庫(kù)到一定階段又面臨擴(kuò)展問(wèn)題。還有就是需求的變更,可能又需要一種新的分庫(kù)方式。 MySQL數(shù)據(jù)庫(kù)也經(jīng)常存儲(chǔ)一些大文本字段,導(dǎo)致數(shù)據(jù)庫(kù)表非常的大,在做數(shù)據(jù)庫(kù)恢復(fù)的時(shí)候就導(dǎo)致非常的慢,不容易快速恢復(fù)數(shù)據(jù)庫(kù)。比如1000萬(wàn)4KB大小的文本就接近40GB的大小,如果能把這些數(shù)據(jù)從MySQL省去,MySQL將變得非常的小。 關(guān)系數(shù)據(jù)庫(kù)很強(qiáng)大,但是它并不能很好的應(yīng)付所有的應(yīng)用場(chǎng)景。MySQL的擴(kuò)展性差(需要復(fù)雜的技術(shù)來(lái)實(shí)現(xiàn)),大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難,正是當(dāng)前使用MySQL的開(kāi)發(fā)人員面臨的問(wèn)題。 NOSQL的優(yōu)勢(shì)易擴(kuò)展NoSQL數(shù)據(jù)庫(kù)種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特性。數(shù)據(jù)之間無(wú)關(guān)系,這樣就非常容易擴(kuò)展。也無(wú)形之間,在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力。 大數(shù)據(jù)量,高性能 NoSQL數(shù)據(jù)庫(kù)都具有非常高的讀寫(xiě)性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無(wú)關(guān)系性,數(shù)據(jù)庫(kù)的結(jié)構(gòu)簡(jiǎn)單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對(duì)web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來(lái)說(shuō)就要性能高很多了。 靈活的數(shù)據(jù)模型 NoSQL無(wú)需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫(kù)里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡(jiǎn)直就是一個(gè)噩夢(mèng)。這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)代尤其明顯。 高可用NoSQL在不太影響性能的情況,就可以方便的實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過(guò)復(fù)制模型也能實(shí)現(xiàn)高可用。 總結(jié)NoSQL數(shù)據(jù)庫(kù)的出現(xiàn),彌補(bǔ)了關(guān)系數(shù)據(jù)(比如MySQL)在某些方面的不足,在某些方面能極大的節(jié)省開(kāi)發(fā)成本和維護(hù)成本。 MySQL和NoSQL都有各自的特點(diǎn)和使用的應(yīng)用場(chǎng)景,兩者的緊密結(jié)合將會(huì)給web2.0的數(shù)據(jù)庫(kù)發(fā)展帶來(lái)新的思路。讓關(guān)系數(shù)據(jù)庫(kù)關(guān)注在關(guān)系上,NoSQL關(guān)注在存儲(chǔ)上。


本文名稱:大數(shù)據(jù)算法nosql,大數(shù)據(jù)算法是什么意思
鏈接分享:http://weahome.cn/article/dssijec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部