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

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

nosql如何支持事務(wù),nosql數(shù)據(jù)庫使用更加方便

如何選擇NoSQL數(shù)據(jù)庫

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ā)的

平?jīng)鰏sl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

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ù)。

如何搞定NoSQL事務(wù)機(jī)制

在SequoiaDB巨杉數(shù)據(jù)庫聯(lián)合創(chuàng)始人兼CTO王濤看來,目前只有少量的NoSQL數(shù)據(jù)庫支持事務(wù)機(jī)制,如VoltDB、RavenDB、SequoiaDB、MarkLogic。并且,“NoSQL支持事務(wù)(ACID)是未來的趨勢,不支持事務(wù)的NoSQL會大大縮小其應(yīng)用場景?!睂τ贏CID來說,是指數(shù)據(jù)庫事務(wù)機(jī)制正確執(zhí)行的四大基本要素,包含了:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。

為什么大部分NoSQL不提供分布式事務(wù)

像MongoDB, Cassandra, HBase, DynamoDB, 和

Riak這些NoSQL缺乏傳統(tǒng)的原子事務(wù)機(jī)制,所謂原子事務(wù)機(jī)制是可以保證一系列寫操作要么全部完成,要么全部不會完成,不會發(fā)生只完成一系列中一兩個(gè)

寫操作;因?yàn)閿?shù)據(jù)庫不提供這種事務(wù)機(jī)制支持,開發(fā)者需要自己編寫代碼來確保一系列寫操作的事務(wù)機(jī)制,比較復(fù)雜和測試。

這些NoSQL數(shù)據(jù)庫不提供事務(wù)機(jī)制原因在于其分布式特點(diǎn),一系列寫操作中訪問的數(shù)據(jù)可能位于不同的分區(qū)服務(wù)器,這樣的事務(wù)就變成分布式事務(wù),在分

布式事務(wù)中實(shí)現(xiàn)原子性需要彼此協(xié)調(diào),而協(xié)調(diào)是耗費(fèi)時(shí)間的,每臺機(jī)器在一個(gè)大事務(wù)過程中必須依次確認(rèn),這就需要一種協(xié)議確保一個(gè)事務(wù)中沒有任何一臺機(jī)器寫操

作失敗。

這種協(xié)調(diào)是昂貴的,會增加延遲時(shí)間,關(guān)鍵問題是,當(dāng)協(xié)調(diào)沒有完成時(shí),其他操作是不能讀取事務(wù)中寫操作結(jié)果的,這是因?yàn)槭聞?wù)的all-or-

nothing原理導(dǎo)致,萬一協(xié)調(diào)過程發(fā)現(xiàn)某個(gè)寫操作不能完成,那么需要將其他寫操作成功的進(jìn)行回滾。針對分布式事務(wù)的分布式協(xié)調(diào)對整體數(shù)據(jù)庫性能有嚴(yán)重

影響,不只是吞吐量還包括延遲時(shí)間,這樣大部分NoSQL數(shù)據(jù)庫因?yàn)樾阅軉栴}就選擇不提供分布式事務(wù)。

MongoDB, Riak, HBase, 和 Cassandra提供基于單一鍵的事務(wù),這是因?yàn)樗行畔⒍己鸵粋€(gè)鍵key有關(guān),這個(gè)鍵是存儲在單個(gè)服務(wù)器上,這樣基于單鍵的事務(wù)不會帶來復(fù)雜的分布式協(xié)調(diào)。

那么看來擴(kuò)展性性能和分布式事務(wù)是一對矛盾,總要有取舍?實(shí)際上是不完全是,現(xiàn)在完全有可能提供高擴(kuò)展的性能同時(shí)提供分布式原子事務(wù)。

FIT是這樣一個(gè)在分布式系統(tǒng)提供原子事務(wù)的策略,在fairness公平性, isolation隔離性, 和throughput吞吐量(簡稱FIT)可以權(quán)衡。

一個(gè)支持分布式事務(wù)的可伸縮分布式系統(tǒng)能夠完成這三個(gè)屬性中兩個(gè),公平是事務(wù)之間不會相互影響造成延遲;隔離性提供一種幻覺好像整個(gè)數(shù)據(jù)庫只有它自

己一個(gè)事務(wù),隔離性保證當(dāng)任何同時(shí)發(fā)生的事務(wù)發(fā)生沖突時(shí),能夠保證彼此能看到彼此的寫操作結(jié)果,因此減輕了程序員為避免事務(wù)讀寫沖突的強(qiáng)邏輯推理要求;吞

吐量是指每單元時(shí)間數(shù)據(jù)庫能夠并發(fā)處理多少事務(wù)。

FIT是如下進(jìn)行權(quán)衡:

保證公平性fairness 和隔離性isolation, 但是犧牲吞吐量

保證公平性fairness和吞吐量, 犧牲隔離性isolation

保證隔離性isolation和吞吐量throughput, 但是犧牲公平性fairness.

犧牲公平性:放棄公平性,數(shù)據(jù)庫能有更多機(jī)會降低分布式事務(wù)的成本,主要成本是分布式協(xié)調(diào)帶來的,也就是說,不需要在每個(gè)事務(wù)過程內(nèi)對每個(gè)機(jī)器都依

次確認(rèn)事務(wù)完成,這樣排隊(duì)式的確認(rèn)commit事務(wù)是很浪費(fèi)時(shí)間的,放棄公平性,意味著可以在事務(wù)外面進(jìn)行協(xié)調(diào),這樣就只是增加了協(xié)調(diào)時(shí)間,不會增加互相

沖突事務(wù)因?yàn)楸舜藳_突而不能運(yùn)行所耽擱的時(shí)間,當(dāng)系統(tǒng)不需要公平性時(shí),需要根據(jù)事務(wù)的優(yōu)先級或延遲等標(biāo)準(zhǔn)進(jìn)行指定先后執(zhí)行順序,這樣就能夠獲得很好的吞吐

量。

G-Store是一種放棄公平性的 Isolation-Throughput

的分布式key-value存儲,支持多鍵事務(wù)(multi-key transactions),MongoDB 和

HBase在鍵key在同樣分區(qū)上也支持多鍵事務(wù),但是不支持跨分區(qū)的事務(wù)。

總之:傳統(tǒng)分布式事務(wù)性能不佳的原因是確保原子性(分布式協(xié)調(diào))和隔離性同時(shí)重疊,創(chuàng)建一個(gè)高吞吐量分布式事務(wù)的關(guān)鍵是分離這兩種關(guān)注,這種分離原

子性和隔離性的視角將導(dǎo)致兩種類型的系統(tǒng),第一種選擇是弱隔離性能讓沖突事務(wù)并行執(zhí)行和確認(rèn)提交;第二個(gè)選擇重新排序原子性和隔離性機(jī)制保證它們不會某個(gè)

時(shí)間重疊,這是一種放棄公平的事務(wù)執(zhí)行,所謂放棄公平就是不再同時(shí)照顧原子性和隔離性了,有所傾斜,放棄高標(biāo)準(zhǔn)道德要求就會帶來高自由高效率。


當(dāng)前標(biāo)題:nosql如何支持事務(wù),nosql數(shù)據(jù)庫使用更加方便
URL鏈接:http://weahome.cn/article/hdedeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部