欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

nosql遵循acid,簡(jiǎn)述nosql

nosql是什么

NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類(lèi)型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類(lèi)帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。

目前成都創(chuàng)新互聯(lián)公司已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、民和網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

雖然NoSQL流行語(yǔ)火起來(lái)才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開(kāi)始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過(guò)現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來(lái)越成熟——以至于原來(lái)很好的NoSQL數(shù)據(jù)存儲(chǔ)不得不進(jìn)行重寫(xiě),也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲(chǔ)庫(kù)。

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。

對(duì)于NoSQL并沒(méi)有一個(gè)明確的范圍和定義,但是他們都普遍存在下面一些共同特征:

不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當(dāng)插入數(shù)據(jù)時(shí),并不需要預(yù)先定義它們的模式。

無(wú)共享架構(gòu):相對(duì)于將所有數(shù)據(jù)存儲(chǔ)的存儲(chǔ)區(qū)域網(wǎng)絡(luò)中的全共享架構(gòu)。NoSQL往往將數(shù)據(jù)劃分后存儲(chǔ)在各個(gè)本地服務(wù)器上。因?yàn)閺谋镜卮疟P(pán)讀取數(shù)據(jù)的性能往往好于通過(guò)網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能,從而提高了系統(tǒng)的性能。

彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時(shí)候,動(dòng)態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),數(shù)據(jù)可以自動(dòng)遷移。

分區(qū):相對(duì)于將數(shù)據(jù)存放于同一個(gè)節(jié)點(diǎn),NoSQL數(shù)據(jù)庫(kù)需要將數(shù)據(jù)進(jìn)行分區(qū),將記錄分散在多個(gè)節(jié)點(diǎn)上面。并且通常分區(qū)的同時(shí)還要做復(fù)制。這樣既提高了并行性能,又能保證沒(méi)有單點(diǎn)失效的問(wèn)題。

異步復(fù)制:和RAID存儲(chǔ)系統(tǒng)不同的是,NoSQL中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫(xiě)入一個(gè)節(jié)點(diǎn),而不會(huì)被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不總是能保證一致性,這樣的方式在出現(xiàn)故障的時(shí)候,可能會(huì)丟失少量的數(shù)據(jù)。

BASE:相對(duì)于事務(wù)嚴(yán)格的ACID特性,NoSQL數(shù)據(jù)庫(kù)保證的是BASE特性。BASE是最終一致性和軟事務(wù)。

NoSQL數(shù)據(jù)庫(kù)并沒(méi)有一個(gè)統(tǒng)一的架構(gòu),兩種NoSQL數(shù)據(jù)庫(kù)之間的不同,甚至遠(yuǎn)遠(yuǎn)超過(guò)兩種關(guān)系型數(shù)據(jù)庫(kù)的不同。可以說(shuō),NoSQL各有所長(zhǎng),成功的NoSQL必然特別適用于某些場(chǎng)合或者某些應(yīng)用,在這些場(chǎng)合中會(huì)遠(yuǎn)遠(yuǎn)勝過(guò)關(guān)系型數(shù)據(jù)庫(kù)和其他的NoSQL。

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

非常榮幸能受邀在InfoQ開(kāi)辟這樣一個(gè)關(guān)于NoSQL的專(zhuān)欄,InfoQ是我非常尊重的一家技術(shù)媒體,同時(shí)我也希望借助InfoQ,在國(guó)內(nèi)推動(dòng)NoSQL的發(fā)展,希望跟我一樣有興趣的朋友加入進(jìn)來(lái)。這次的NoSQL專(zhuān)欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運(yùn)用到自己的項(xiàng)目中合適的場(chǎng)景中,還會(huì)適當(dāng)?shù)胤治鲆恍┏晒Π咐M谐晒κ褂肗oSQL經(jīng)驗(yàn)的朋友給我提供一些線(xià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)站的訪(fǎng)問(wèn)量一般都不大,用單個(gè)數(shù)據(jù)庫(kù)完全可以輕松應(yīng)付。在那個(gè)時(shí)候,更多的都是靜態(tài)網(wǎng)頁(yè),動(dòng)態(tài)交互類(lè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),隨著訪(fǎng)問(wèn)量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫(kù)上都開(kāi)始出現(xiàn)了性能問(wèn)題,web程序不再僅僅專(zhuān)注在功能上,同時(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)訪(fǎ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)有成功案例,性能也不能滿(mǎn)足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。 MySQL的擴(kuò)展性瓶頸 在互聯(lián)網(wǎng),大部分的MySQL都應(yīng)該是IO密集型的,事實(shí)上,如果你的MySQL是個(gè)CPU密集型的話(huà),那么很可能你的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ù)種類(lèi)繁多,但是一個(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ǔ)上。

acid是nosql數(shù)據(jù)庫(kù)的基本要求

NoSQL,是not only sql,是非關(guān)系數(shù)據(jù)庫(kù),不同于oracle等關(guān)系數(shù)據(jù)庫(kù)。hadoop,是分布式解決方案,即為Maprece(計(jì)算的)和HDFS(文答件系統(tǒng)),使用Hadoop和NoSQL可以構(gòu)造海量數(shù)據(jù)解決方案。

什么是NoSQL數(shù)據(jù)庫(kù)?

2. 什么是NoSQL?

2.1 NoSQL 概述

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,

泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類(lèi)型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類(lèi)帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,包括超大規(guī)模數(shù)據(jù)的存儲(chǔ)。

(例如谷歌或Facebook每天為他們的用戶(hù)收集萬(wàn)億比特的數(shù)據(jù))。這些類(lèi)型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余操作就可以橫向擴(kuò)展。

2.2 NoSQL代表

MongDB、 Redis、Memcache

3. 關(guān)系型數(shù)據(jù)庫(kù)與NoSQL的區(qū)別?

3.1 RDBMS

高度組織化結(jié)構(gòu)化數(shù)據(jù)

結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)

數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中。

數(shù)據(jù)操縱語(yǔ)言,數(shù)據(jù)定義語(yǔ)言

嚴(yán)格的一致性

基礎(chǔ)事務(wù)

ACID

關(guān)系型數(shù)據(jù)庫(kù)遵循ACID規(guī)則

事務(wù)在英文中是transaction,和現(xiàn)實(shí)世界中的交易很類(lèi)似,它有如下四個(gè)特性:

A (Atomicity) 原子性

原子性很容易理解,也就是說(shuō)事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗,需要回滾。比如銀行轉(zhuǎn)賬,從A賬戶(hù)轉(zhuǎn)100元至B賬戶(hù),分為兩個(gè)步驟:1)從A賬戶(hù)取100元;2)存入100元至B賬戶(hù)。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢(qián)會(huì)莫名其妙少了100元。

C (Consistency) 一致性

一致性也比較容易理解,也就是說(shuō)數(shù)據(jù)庫(kù)要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性約束。

I (Isolation) 獨(dú)立性

所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪(fǎng)問(wèn)的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交,它所訪(fǎng)問(wèn)的數(shù)據(jù)就不受未提交事務(wù)的影響。比如現(xiàn)有有個(gè)交易是從A賬戶(hù)轉(zhuǎn)100元至B賬戶(hù),在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢(xún)自己的賬戶(hù),是看不到新增加的100元的

D (Durability) 持久性

持久性是指一旦事務(wù)提交后,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫(kù)上,即使出現(xiàn)宕機(jī)也不會(huì)丟失。

3.2 NoSQL

代表著不僅僅是SQL

沒(méi)有聲明性查詢(xún)語(yǔ)言

沒(méi)有預(yù)定義的模式

鍵 - 值對(duì)存儲(chǔ),列存儲(chǔ),文檔存儲(chǔ),圖形數(shù)據(jù)庫(kù)

最終一致性,而非ACID屬性

非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)

CAP定理

高性能,高可用性和可伸縮性

分布式數(shù)據(jù)庫(kù)中的CAP原理(了解)

CAP定理:

Consistency(一致性), 數(shù)據(jù)一致更新,所有數(shù)據(jù)變動(dòng)都是同步的

Availability(可用性), 好的響應(yīng)性能

Partition tolerance(分區(qū)容錯(cuò)性) 可靠性

P: 系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作。

定理:任何分布式系統(tǒng)只可同時(shí)滿(mǎn)足二點(diǎn),沒(méi)法三者兼顧。

CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿(mǎn)足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求,

因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫(kù)分成了滿(mǎn)足 CA 原則、滿(mǎn)足 CP 原則和滿(mǎn)足 AP 原則三 大類(lèi):

CA - 單點(diǎn)集群,滿(mǎn)足一致性,可用性的系統(tǒng),通常在可擴(kuò)展性上不太強(qiáng)大。

CP - 滿(mǎn)足一致性,分區(qū)容忍性的系統(tǒng),通常性能不是特別高。

AP - 滿(mǎn)足可用性,分區(qū)容忍性的系統(tǒng),通常可能對(duì)一致性要求低一些。

CAP理論就是說(shuō)在分布式存儲(chǔ)系統(tǒng)中,最多只能實(shí)現(xiàn)上面的兩點(diǎn)。

而由于當(dāng)前的網(wǎng)絡(luò)硬件肯定會(huì)出現(xiàn)延遲丟包等問(wèn)題,所以分區(qū)容忍性是我們必須需要實(shí)現(xiàn)的。

所以我們只能在一致性和可用性之間進(jìn)行權(quán)衡,沒(méi)有NoSQL系統(tǒng)能同時(shí)保證這三點(diǎn)。

說(shuō)明:C:強(qiáng)一致性 A:高可用性 P:分布式容忍性

舉例:

CA:傳統(tǒng)Oracle數(shù)據(jù)庫(kù)

AP:大多數(shù)網(wǎng)站架構(gòu)的選擇

CP:Redis、Mongodb

注意:分布式架構(gòu)的時(shí)候必須做出取舍。

一致性和可用性之間取一個(gè)平衡。多余大多數(shù)web應(yīng)用,其實(shí)并不需要強(qiáng)一致性。

因此犧牲C換取P,這是目前分布式數(shù)據(jù)庫(kù)產(chǎn)品的方向。

4. 當(dāng)下NoSQL的經(jīng)典應(yīng)用

當(dāng)下的應(yīng)用是 SQL 與 NoSQL 一起使用的。

代表項(xiàng)目:阿里巴巴商品信息的存放。

去 IOE 化。

ps:I 是指 IBM 的小型機(jī),很貴的,好像好幾萬(wàn)一臺(tái);O 是指 Oracle 數(shù)據(jù)庫(kù),也很貴的,好幾萬(wàn)呢;M 是指 EMC 的存儲(chǔ)設(shè)備,也很貴的。

難點(diǎn):

數(shù)據(jù)類(lèi)型多樣性。

數(shù)據(jù)源多樣性和變化重構(gòu)。

數(shù)據(jù)源改造而服務(wù)平臺(tái)不需要大面積重構(gòu)。

為什么選擇PostgreSQL而不是MySQL

David

Bolton是一名獨(dú)立開(kāi)發(fā)者,他使用PostgreSQL和MySQL都已有超過(guò)十年的時(shí)間。近日,他撰文闡述了選擇PostgreSQL而不是MySQL的理由。他認(rèn)為,MySQL之所以仍然如此流行是因?yàn)槊總€(gè)Linux

Web托管軟件包中都包含它。但隨著Oracle將其收購(gòu),MySQL的開(kāi)源程度大不如前。而PostgreSQL不僅發(fā)展更快,還加入了JSON支持,成為少數(shù)幾個(gè)支持NoSQL的關(guān)系型數(shù)據(jù)庫(kù)之一。

MySQL/MariaDB的當(dāng)前版本是5.7.6(MariaDB為MySQL創(chuàng)建者M(jìn)onty

Widenius創(chuàng)建的一個(gè)MySQL分支),PostgreSQL的版本是9.4.1。Bolton從以下幾個(gè)方面對(duì)比了兩者的最新版本:

ANSI標(biāo)準(zhǔn)兼容性:與先前的版本相比,MySQL已經(jīng)有了長(zhǎng)足的進(jìn)步,但MySQL背后的哲學(xué)是,如果客戶(hù)喜歡,他們就會(huì)支持非標(biāo)準(zhǔn)擴(kuò)展,而PostgreSQL從開(kāi)始就將標(biāo)準(zhǔn)構(gòu)建到平臺(tái)里。不過(guò),二者殊途同歸,差別不大;

ACID遵從性:PostgreSQL有一個(gè)存儲(chǔ)引擎,而MySQL有9個(gè),但只有MyIsam和InnoDB與大部分用戶(hù)有關(guān),其中,后者為默認(rèn)存儲(chǔ)引擎。InnoDB和PostgreSQL都完全遵循ACID,差別不大;

無(wú)鎖表修改:MyIsam使用表級(jí)鎖來(lái)提升速度,這會(huì)導(dǎo)致寫(xiě)互斥。但PostgreSQL和InnoDB均使用行級(jí)鎖,差別不大;

子查詢(xún):長(zhǎng)期以來(lái),這一直是MySQL的一個(gè)弱點(diǎn),雖然5.6.5作了重大改進(jìn),但PostgreSQL對(duì)表連接支持得更好,尤其是MySQL不支持全外連接,因此,這方面PostgreSQL勝過(guò)MySQL;

JSON支持和NoSQL:PostgreSQL最近增加了JSON支持,與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,它提供了更大的數(shù)據(jù)存儲(chǔ)靈活性,因此,這方面PostgreSQL勝過(guò)MySQL。

此外,Bolton指出,選擇PostgreSQL還有如下理由:

更好的許可:PostgreSQL采用類(lèi)似MIT的許可協(xié)議,允許開(kāi)發(fā)人員做任何事情,包括在開(kāi)源或閉源產(chǎn)品中商用,而MySQL的客戶(hù)端遵循GPL許可協(xié)議,所以開(kāi)發(fā)人員必須向Oracle付費(fèi)或者將自己的應(yīng)用程序開(kāi)源;

更好的數(shù)據(jù)一致性:

PostgreSQL會(huì)在數(shù)據(jù)插入和更新之前進(jìn)行嚴(yán)格的驗(yàn)證,確保數(shù)據(jù)合法才會(huì)進(jìn)行相應(yīng)的操作,但在MySQL中,開(kāi)發(fā)人員需要將服務(wù)器設(shè)定為嚴(yán)格SQL模式才能達(dá)到同樣的目的,否則可能會(huì)產(chǎn)生不規(guī)范數(shù)據(jù);

服務(wù)器擴(kuò)展:MySQL提供了插件程序API,支持C/C++或任何兼容C的語(yǔ)言,而且從5.7.3版本開(kāi)始支持全文搜索,PostgreSQL有一個(gè)類(lèi)似的系統(tǒng)但支持的語(yǔ)言更多,包括C/C++、Java、.Net、Perl、

Python、Ruby、Tcl、ODBC等,它甚至可以在單獨(dú)的進(jìn)程中運(yùn)行用戶(hù)提供的代碼;除了所有關(guān)系型數(shù)據(jù)庫(kù)都包含的有關(guān)數(shù)據(jù)庫(kù)、表和列的一般信息外,PostgreSQL系統(tǒng)目錄中還可以包含關(guān)于數(shù)據(jù)類(lèi)型、函數(shù)和存取方法的信息,開(kāi)發(fā)人員可以通過(guò)修改這些信息實(shí)現(xiàn)擴(kuò)展。

文章題目:nosql遵循acid,簡(jiǎn)述nosql
轉(zhuǎn)載源于:http://www.chinadenli.net/article24/dseojce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣外貿(mào)網(wǎng)站建設(shè)網(wǎng)站建設(shè)網(wǎng)站維護(hù)小程序開(kāi)發(fā)自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)