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ā)的
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對成都塔吊租賃等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。
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)用,這一概念無疑是一種全新的思維的注入。
從這一新興技術(shù)中選擇一款正確的NoSQL數(shù)據(jù)庫是非常具有挑戰(zhàn)性的。比一下網(wǎng)建議在選擇時(shí)考慮以下因素:
并發(fā)控制
并
發(fā)控制指的是當(dāng)多個(gè)用戶同時(shí)更新運(yùn)行時(shí),用于保護(hù)數(shù)據(jù)庫完整性的各種技術(shù)。并發(fā)機(jī)制不正確可能導(dǎo)致臟讀、幻讀和不可重復(fù)讀等此類問題。并發(fā)控制的目的是保
證一個(gè)用戶的工作不會對另一個(gè)用戶的工作產(chǎn)生不合理的影響。在某些情況下,這些措施保證了當(dāng)用戶和其他用戶一起操作時(shí),所得的結(jié)果和她單獨(dú)操作時(shí)的結(jié)果是
一樣的。在另一些情況下,這表示用戶的工作按預(yù)定的方式受其他用戶的影響。
封鎖
就是事務(wù)T在對某個(gè)數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。
封鎖是一次只允許一個(gè)用戶讀取或修改的一種機(jī)制,是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。
MVCC
Multi-Version Concurrency Control多版本并發(fā)控制,維持一個(gè)數(shù)據(jù)的多個(gè)版本使讀寫操作沒有沖突。MVCC優(yōu)化了數(shù)據(jù)庫并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時(shí)得到最高的性能,并且可以不用關(guān)閉服務(wù)器就直接進(jìn)行熱備份。
ACID
指
數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個(gè)支持事務(wù)(Transaction)的數(shù)據(jù)庫系統(tǒng),必需要具有這四種特性,否則在事務(wù)過程(Transaction
processing)當(dāng)中無法保證數(shù)據(jù)的正確性,交易過程極可能達(dá)不到交易方的要求。
None
一些系統(tǒng)不提供原子性。
鏡像
數(shù)據(jù)庫鏡像是DBMS根據(jù)DBA的要求,自動把整個(gè)數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤上,每當(dāng)主數(shù)據(jù)庫更新時(shí),DBMS會自動把更新后的數(shù)據(jù)復(fù)制過去,即DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。
鏡像分為同步和異步。
數(shù)據(jù)存儲
指的是數(shù)據(jù)的物理特性怎樣被存儲在數(shù)據(jù)庫中。
磁盤 數(shù)據(jù)被存儲在硬盤驅(qū)動器里;
GFS或谷歌文件系統(tǒng)是一個(gè)由谷歌開發(fā)的專有的分布式文件系統(tǒng);
Hadoop是Apache軟件框架,免費(fèi)許可下支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序;
RAM隨機(jī)存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務(wù)接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務(wù)能力的表類型,由Sleepycat
Software開發(fā)。BDB表類型提供了MySQL用戶長久期盼的功能,即事務(wù)控制能力。在任何RDBMS中,事務(wù)控制能力都是一種極其重要和寶貴的功
能。事務(wù)控制能力使得我們能夠確保一組命令確實(shí)已經(jīng)全部執(zhí)行成功,或者確保當(dāng)任何一個(gè)命令出現(xiàn)錯(cuò)誤時(shí)所有命令的執(zhí)行結(jié)果均被退回。
實(shí)現(xiàn)語言
實(shí)現(xiàn)語言會影響數(shù)據(jù)庫的發(fā)展速度。典型的NoSQL數(shù)據(jù)庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實(shí)現(xiàn)語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個(gè)特點(diǎn)對你的數(shù)據(jù)庫是最重要的:
持久性
可用性
一致性
分區(qū)容忍性
證書類型
下面這些許可證是一個(gè)不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發(fā)
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發(fā)者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數(shù)據(jù)庫最大的不同,是決定使用哪款數(shù)據(jù)庫的一個(gè)首要指標(biāo)。
關(guān)鍵字:支持get、put和刪除操作
按列存儲:相對于傳統(tǒng)的按行存儲,數(shù)據(jù)集成容易多了
面向文件系統(tǒng):存儲像是JSON或XML這樣的結(jié)構(gòu)化文件,很容易就能從面向?qū)ο筌浖蝎@取數(shù)據(jù)。
一樣是數(shù)據(jù)庫
NOSQL查詢速度快,但是占用空間也大(都去索引那邊了)
但是NOSQL查詢復(fù)雜的邏輯關(guān)系的時(shí)候,只能批量獲取到本地去統(tǒng)計(jì)而SQL能通過條件和關(guān)聯(lián)表等方式進(jìn)行篩選只顯示符合條件的語句。
NOSQL用于無條件或少條件下的存取。百億級數(shù)據(jù)也能快速取出。
SQL用于復(fù)雜的邏輯存取。在數(shù)據(jù)量不多的情況下也能跟NOSQL一樣用于數(shù)據(jù)存儲。
NoSQL不像傳統(tǒng)關(guān)系型庫那樣有統(tǒng)一的標(biāo)準(zhǔn),也不具有普適性。所以要根據(jù)應(yīng)用和數(shù)據(jù)的存取特征來選擇適合的NoSQL。如果以前沒有接觸過NoSQL,MongoDB是一個(gè)比較好的選擇,他支持的所以和查詢能力是所有NoSQL中最強(qiáng)大的,缺點(diǎn)是索引的成本和文檔大小限制。如果是使用Hadoop大數(shù)據(jù)分析,數(shù)據(jù)基本上不存在修改,只是插入和查詢,并且需要配合Hadoop的MR任務(wù),HBase會是很好的選擇。如果要求有很強(qiáng)的擴(kuò)展能力,高并發(fā)讀寫和維護(hù)方便,Casaandra則是不錯(cuò)的選擇。當(dāng)然除了上面三個(gè)流行的NoSQL,還有很多優(yōu)秀的NoSQL數(shù)據(jù)庫,而且他們都有各自擅長領(lǐng)域,所以需要了解你們產(chǎn)品自身的特點(diǎn)然后分析選擇哪種才是最適合的,往往在大型系統(tǒng)中不是單一的數(shù)據(jù)庫,而是使用多種數(shù)據(jù)庫組合。
答案:A
1.文檔型數(shù)據(jù)庫
作為最受歡迎的NoSQL產(chǎn)品,文檔型數(shù)據(jù)庫MongoDB當(dāng)仁不讓地占據(jù)了第一的位置,同時(shí)它也是所有NoSQL數(shù)據(jù)庫中排名最靠前的產(chǎn)品(總排行榜第七名)。Apache基金會的CouchDB排在第二,基于.Net的數(shù)據(jù)庫RavenDB排在第三,Couchbase排在第四。
2.鍵值(Key-value)數(shù)據(jù)庫
鍵值(Key-value)數(shù)據(jù)庫是NoSQL領(lǐng)域中應(yīng)用范圍最廣的,也是涉及產(chǎn)品最多的一種模型。從最簡單的BerkeleyDB到功能豐富的分布式數(shù)據(jù)庫Riak再到Amazon托管的DynamoDB不一而足。
在鍵值數(shù)據(jù)庫流行度排行中,Redis不出意外地排名第一,它是一款由Vmware支持的內(nèi)存數(shù)據(jù)庫,總體排名第十一。排在第二位的是Memcached,它在緩存系統(tǒng)中應(yīng)用十分廣泛。排在之后的是Riak、BerkeleyDB、SimpleDB、DynamoDB以及甲骨文的Oracle NoSQL數(shù)據(jù)庫。值得注意的是,Oracle NoSQL數(shù)據(jù)庫上榜不久,得分已經(jīng)翻番,上升勢頭非常迅猛。
3. 列式存儲
列式存儲被視為NoSQL數(shù)據(jù)庫中非常重要的一種模式,其中Cassandra流行度最高,它已經(jīng)由Facebook轉(zhuǎn)交給到Apache進(jìn)行管理,同時(shí)Cassandra在全體數(shù)據(jù)庫排名中排在第十位,緊隨MongoDB成為第二受歡迎的NoSQL數(shù)據(jù)庫。基于Hadoop的Hbase排在第二位,Hypertable排在第三。而Google的BigTable并未列入排名,原因是它并未正式公開。
如何玩轉(zhuǎn) NoSQL數(shù)據(jù)庫?作者:IT專家網(wǎng)
Weather公司CIO Bryson Koehler整理出了MongoDB,Riak和Cassandra等NoSQL數(shù)據(jù)庫的特性。他指出這其中最重要的特性是“NoSQL不會限制住你”。
Weather公司,致力于天氣報(bào)告和天氣預(yù)報(bào)業(yè)務(wù),其并不缺乏數(shù)據(jù),當(dāng)然也不缺乏數(shù)據(jù)管理工具。但它為什么需要三種不同的NoSQL數(shù)據(jù)庫?
最近,我向Weather 公司的CIO Bryson Koehler提出了這個(gè)疑問,除了公司的CIO,Bryson Koehler還是其他很多業(yè)務(wù)單元的孵化者,包括Weather Channel,WeatherFX,Weather Underground,和Intellicast等。Weather公司每天獲取和處理著約20萬億字節(jié)數(shù)據(jù),對外提供當(dāng)前全球天氣狀況,并為航空公司,緊急服務(wù),貨運(yùn)商,公用事業(yè),保險(xiǎn),以及在線天氣網(wǎng)站和天氣應(yīng)用程序的用戶提供天氣預(yù)報(bào)服務(wù)。每天需求增加了數(shù)十億的天氣數(shù)據(jù)請求,并且預(yù)期響應(yīng)時(shí)間要在10毫秒左右。
Riak是Weather 公司的后臺NoSQL數(shù)據(jù)庫,服務(wù)于公司的事務(wù)性存儲公用網(wǎng)絡(luò)(SUN)數(shù)據(jù)獲取平臺,它運(yùn)行在多個(gè)亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)的可用區(qū)域上,并以每小時(shí)15次的頻率捕獲超過20億氣象數(shù)據(jù)信息,。所以,Riak具有明確的處理規(guī)模,但該公司也使用Cassandra以及新近添加的MongoDB數(shù)據(jù)庫,為Weather.com 上IOS和Android移動應(yīng)用程序服務(wù)。
Weather 公司使用了不同的產(chǎn)品,Koehler解釋說,因?yàn)椤安煌墓ぞ哂胁煌膬?yōu)勢。
Cassandra,它服務(wù)于Weather 公司以及全球消費(fèi)者使用的第三方天氣應(yīng)用的API數(shù)據(jù):“我們的數(shù)據(jù)分發(fā)平臺每秒處理數(shù)十萬的事務(wù),我們發(fā)現(xiàn)Cassandra在用于全球分發(fā)數(shù)據(jù)上是一個(gè)很棒的解決方案,并且在[數(shù)據(jù)庫]讀取方面體現(xiàn)出很高的可用性 “。它本質(zhì)上為全球各地消費(fèi)者所使用的數(shù)據(jù)服務(wù),包括Weather 公司和第三方的天氣應(yīng)用程序。
MongoDB,它提供了Weather.com網(wǎng)站和移動應(yīng)用程序的中間層緩存功能:“離開我們的核心API,我們還沒有全部Weather.com內(nèi)容,所以MongoDB是容器和分發(fā)站,為Weather.com以及Android和iOS上的移動應(yīng)用程序服務(wù)。Mongo有很多好處,這些好處基于其內(nèi)建的JSON格式以及靈活性上。“
Riak,用于消費(fèi)氣象數(shù)據(jù)和觀測,包括來自世界各地的圖片和視頻等:“我們喜愛Riak因其優(yōu)秀的數(shù)據(jù)攝取能力,而且是以一種全球分布式的方式來實(shí)現(xiàn)。這對于從全球分布式平臺上獲取數(shù)據(jù)的入站式數(shù)據(jù)庫是一個(gè)真正可靠的選擇。
我曾聽說Datastax,Basho和Couchbase的高管貶低MongoDB的可擴(kuò)展性,但MongoDB指向大規(guī)模部署,在Facebook對超過200萬臺移動設(shè)備上應(yīng)用程序提供支持,在eHarmony公司,MongDB每天處理著數(shù)十億的潛在比賽預(yù)約。據(jù)Koehle所述,MongoDB為Weather.com和Weather.com移動應(yīng)用程序處理著“每天十億交易”,“毫無疑問,你可以通過配置和部署Mongo來處理大批量的交易數(shù)據(jù)。”
盡管如此,Koehler承認(rèn),他將“很樂于看到MongoDB繼續(xù)使全球集群和多位置[功能]更加無縫化且易于使用。” 這些屬于全球性的分布式集群,復(fù)制和負(fù)載平衡是Cassandra和Riak眾所周知的功能。
從規(guī)模討論的角度來看,很少有公司達(dá)到Weather公司的經(jīng)營規(guī)模。易于開發(fā),架構(gòu)靈活性和JSON數(shù)據(jù)處理使得MongoDB的成為世界上最流行的NoSQL數(shù)據(jù)庫。這就是為什么微軟和IBM都進(jìn)行了MongoDB的模仿,如微軟的Azure DocumentDB和IBM的 Cloudant,而不是Cassandra和Riak。
Weather公司可以從三個(gè)NoSQL標(biāo)準(zhǔn)降低至兩個(gè)的過程中得到鞏固,Koehler說,但公司沒有準(zhǔn)備好這么做。
“由于我們構(gòu)造了由許多不同的數(shù)據(jù)解決方案組成的網(wǎng)狀結(jié)構(gòu),我們目前的環(huán)境已過于復(fù)雜,”他說。“我們希望給團(tuán)隊(duì)一些自由的空間,讓我們可以了解所有選擇的利弊,但你將會看到一些整合。”
到了那個(gè)時(shí)候,遷移將不在是一件難事,因?yàn)椤瓣P(guān)于NoSQL數(shù)據(jù)庫最重要的事情是,你不會被困在其中,” Koehler說。“如果你的架構(gòu)和編碼正確,從一個(gè)數(shù)據(jù)庫遷移到另一個(gè)并不難。隨著模式的自由以及數(shù)據(jù)轉(zhuǎn)存技術(shù)的發(fā)展,無論前者是一個(gè)key-value存儲或其他什么形式,轉(zhuǎn)儲數(shù)據(jù)都將十分容易。“
對特定產(chǎn)品進(jìn)程自定義編碼的復(fù)雜的存儲過程已經(jīng)一去不復(fù)返了,Koehler說,但關(guān)于“結(jié)構(gòu)化和編碼正確”還有很多需要考慮的地方?這樣做是為了避免特殊供應(yīng)商提供的工具和功能可能讓你身陷其中。他舉了亞馬遜網(wǎng)絡(luò)服務(wù)“(AWS)的消息服務(wù)為例。
“你不必讓服務(wù)在云中運(yùn)行,”他解釋說。“你可以只部署自己的RabbitMQ的環(huán)境,而不是陷于其中,所以你可以將一個(gè)原先部署在AWS 上的應(yīng)用程序轉(zhuǎn)而部署在谷歌計(jì)算云服務(wù)上。無論它是數(shù)據(jù)平臺,存儲環(huán)境,或云計(jì)算環(huán)境,都要小心別讓自己局限在一個(gè)僅由一個(gè)供應(yīng)商提供的小范圍空間內(nèi)“。
轉(zhuǎn)載
網(wǎng)站欄目:nosql數(shù)據(jù)獲取,No數(shù)據(jù)庫
本文地址:http://www.chinadenli.net/article20/dsdjcjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站改版、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)