欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Trafodion事務(wù)管理怎么理解

這篇文章主要介紹“Trafodion事務(wù)管理怎么理解”,在日常操作中,相信很多人在Trafodion事務(wù)管理怎么理解問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Trafodion事務(wù)管理怎么理解”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比六合網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式六合網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋六合地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

Trafodion這個(gè)詞的本意是“事務(wù)”,可見(jiàn)項(xiàng)目組對(duì)事務(wù)處理的重視程度。

事務(wù)主要用來(lái)防止和處理數(shù)據(jù)出現(xiàn)不一致的錯(cuò)誤。首先理解什么是數(shù)據(jù)一致性,給出具體的定義實(shí)在太為難筆者。還是舉個(gè)例子吧。筆者年輕時(shí)大家都知道“香港四大天王”,他們是劉德華,張學(xué)友,黎明和郭富城。我定義這四個(gè)名字是“一致的”,而“劉學(xué)友”或者“張德華”就不是一致性的數(shù)據(jù)?;蛘咴诮榻B的時(shí)候不全:比如“香港四大天王是:劉德華,”,其他天王要不高興了。另外,劉德華唱過(guò)《忘情水》,如果數(shù)據(jù)庫(kù)查詢得到劉德華唱了《吻別》,也是不一致的數(shù)據(jù)。

造成數(shù)據(jù)不一致主要有兩種因素,分別用兩種事務(wù)技術(shù)解決。在Trafodion中,一個(gè)技術(shù)是日志;另一個(gè)技術(shù)是多版本并發(fā)控制MVCC。

日志

第一種造成數(shù)據(jù)不一致的因素是不可預(yù)知的故障。故障會(huì)導(dǎo)致正在處理數(shù)據(jù)的過(guò)程異常中斷,比如數(shù)據(jù)正在往磁盤(pán)中寫(xiě)入的時(shí)候系統(tǒng)斷電,那么結(jié)果就是未知的,有可能寫(xiě)入了不完整的數(shù)據(jù)。比如應(yīng)該寫(xiě)入”張學(xué)友”覆蓋原本的”劉德華”,卻只寫(xiě)了”張”,剩下兩個(gè)字節(jié)沒(méi)來(lái)得及寫(xiě)入,所以還是老數(shù)據(jù),于是磁盤(pán)數(shù)據(jù)變成“張德華”,造成數(shù)據(jù)了不一致,從來(lái)沒(méi)有這個(gè)天王;或者說(shuō)正在順序?qū)懭胨膫€(gè)人的名字,斷電了,只寫(xiě)了劉德華,其他人都沒(méi)寫(xiě),也是不一致,要么4位全寫(xiě),要么全都不寫(xiě),寫(xiě)一個(gè)漏掉其他算是什么意思,看不起其他天王么?

處理這類(lèi)錯(cuò)誤的方法是WAL日志,write ahead log。即每次寫(xiě)入數(shù)據(jù)之前,先將變化寫(xiě)入日志,再寫(xiě)數(shù)據(jù)。這樣,如果有錯(cuò)誤發(fā)生,通過(guò)查詢?nèi)罩荆涂梢赃M(jìn)行恢復(fù)。比如前面的例子,在將“張學(xué)友”寫(xiě)入數(shù)據(jù)文件之前,先寫(xiě)入日志。這樣即便發(fā)生了故障,也不會(huì)有問(wèn)題,如果故障發(fā)生在寫(xiě)日志的過(guò)程中,那么數(shù)據(jù)文件中依然是“劉德華”。如果故障發(fā)生在寫(xiě)數(shù)據(jù)文件的過(guò)程中,那么雖然數(shù)據(jù)文件中是“張德華”,但是WAL日志中卻是正確的數(shù)據(jù)“張學(xué)友”,我們將日志replay一下,用“張學(xué)友”覆蓋“張德華”即可。
如果遇到寫(xiě)中斷錯(cuò)誤,則可以利用日志將做過(guò)的操作全部撤銷(xiāo),比如寫(xiě)入了劉德華,然后出錯(cuò)了,查詢?nèi)罩?,發(fā)現(xiàn)已經(jīng)寫(xiě)了劉德華,那么rollback就是把“劉德華”刪除掉。
通過(guò)日志,保證了在任何錯(cuò)誤情況下,事務(wù)的一致性,即ACID中的A和D。

傳統(tǒng)的日志技術(shù)包括Redo,undo, redo/undo等。和所有其他數(shù)據(jù)庫(kù)一樣,Trafodion采用redo/undo日志。

Trafodion采用HBase的WAL做Redo日志,當(dāng)region恢復(fù)時(shí),HBase負(fù)責(zé)回放WAL進(jìn)行恢復(fù)。

在R1.0版本中,Trafodion將寫(xiě)入數(shù)據(jù)緩存在內(nèi)存中,提交的時(shí)候才將內(nèi)存中的數(shù)據(jù)寫(xiě)入磁盤(pán),因此不需要undo日志。如果事務(wù)需要回滾,只需要將內(nèi)存中的數(shù)據(jù)丟棄即可。

目前計(jì)劃在R1.2版本中,Trafodion將使用一種被稱(chēng)為SSCC的最新技術(shù),SSCC利用HBase的多版本支持存儲(chǔ)數(shù)據(jù)的變化歷史,以便提供repeated read隔離級(jí)別,這些數(shù)據(jù)歷史同時(shí)作為undo日志。

MVCC的并發(fā)控制方法

還有一種錯(cuò)誤,靠日志也不管用,就是多個(gè)事務(wù)并發(fā)寫(xiě)同一個(gè)數(shù)據(jù),這類(lèi)錯(cuò)誤和我們?cè)诙嗑€程程序中修改共享變量時(shí)發(fā)生的race condition是同一類(lèi)問(wèn)題。比如我們有兩個(gè)線程寫(xiě)數(shù)據(jù)庫(kù),都要更新歌曲排行榜的第一名。線程A寫(xiě)入一行數(shù)據(jù):[ singer=>劉德華, song=>忘情水];線程B寫(xiě)入另一行數(shù)據(jù)[ singer=>張學(xué)友,song=>吻別]。A和B一起寫(xiě),一種可能的寫(xiě)法為A寫(xiě)了歌手后被B打斷,B寫(xiě)了歌手和歌曲,A恢復(fù)執(zhí)行,寫(xiě)入歌曲。最后變成了[ singer=>張學(xué)友, song=>忘情水]??墒菑垖W(xué)友沒(méi)有唱過(guò)《忘情水》。

處理第二類(lèi)錯(cuò)誤的方法被稱(chēng)為并發(fā)控制。通常有兩種解決方案,第一種是傳統(tǒng)的數(shù)據(jù)庫(kù)通常使用的方法,即鎖管理器;第二種是MVCC(多版本并發(fā)控制)。Trafodion采用MVCC的方法,沒(méi)有使用鎖管理器。因此在Trafodion中沒(méi)有因?yàn)殒i而引起的讀寫(xiě)阻塞和死鎖問(wèn)題。
MVCC的基本思想和人們使用SVN版本控制系統(tǒng)是一樣的,每個(gè)程序員都是一個(gè)事務(wù),而修改的代碼就是數(shù)據(jù)庫(kù)中的表。如果用sourcesafe,那么就類(lèi)似鎖管理,張三修改寫(xiě)文件A的時(shí)候別人誰(shuí)都不能讀寫(xiě),等張三修改完check in才行。用SVN后,如果張三正在寫(xiě)文件A,他寫(xiě)的是本地的一個(gè)版本,另外的人想讀,可以隨時(shí)讀;別的程序員也可以修改文件A。但是兩個(gè)人不能都commit。先commit的人成功,后commit的人需要做merge,如果兩個(gè)人修改了不同的行(類(lèi)似兩個(gè)事務(wù)修改不同數(shù)據(jù)行),則一般都可以commit,SVN可以自動(dòng)merge。否則就有沖突,需要第二個(gè)commit的人手動(dòng)merge,或者干脆放棄(Abort)。Trafodion的MVCC方法和這個(gè)過(guò)程完全一樣。

HBase本身提供多版本服務(wù),因此非常適合采用MVCC技術(shù)。每個(gè)寫(xiě)操作都會(huì)產(chǎn)生一個(gè)新的數(shù)據(jù)版本,而不會(huì)覆蓋老版本數(shù)據(jù)。讀操作根據(jù)事務(wù)開(kāi)始時(shí)間,讀取正確的數(shù)據(jù)版本,即數(shù)據(jù)的一個(gè)歷史快照。這避免了幻讀,提供了repeated read隔離級(jí)別的保證。筆者孤陋寡聞,竊以為MVCC是Oracle最先采用的,Oracle工程師經(jīng)常對(duì)此非常自豪,因?yàn)樽x不會(huì)被寫(xiě)阻塞,提供了很高的并行度。后來(lái)innodb山寨了Oracle的所有實(shí)現(xiàn)細(xì)節(jié),使得MySQL也擁有了類(lèi)似的能力;PostgreSql則采用了和Oracle/innoDb不同的MVCC實(shí)現(xiàn)方法,Trafodion的實(shí)現(xiàn)更加類(lèi)似于Postgresql,即保存多版本數(shù)據(jù)用來(lái)提供快照讀取,而非用作undo日志,然后定期進(jìn)行垃圾收集,刪除過(guò)期的快照。而Oracle則利用了undo日志來(lái)作為歷史快照;前者讀取歷史版本的速度很快,因?yàn)閿?shù)據(jù)和快照都在一起,但需要處理每條歷史數(shù)據(jù),檢查它們的可見(jiàn)性,比較低效;Oracle則需要到undo segment中讀取歷史數(shù)據(jù),應(yīng)用undo日志對(duì)數(shù)據(jù)進(jìn)行回滾,貌似會(huì)比較慢;但是不需要考慮GC的問(wèn)題,而且節(jié)約了空間,因?yàn)閡ndo空間一舉兩得。所以筆者認(rèn)為Oracle/InnoDB的模式好些,但也主要還是取決于具體的應(yīng)用場(chǎng)景,假如并發(fā)很高,讀取歷史版本的比例比讀取最近數(shù)據(jù)的頻率還要高,則PostgreSQL/Trafodion的模式應(yīng)該更好,因?yàn)樗鼈冏x取快照的效率更好。
不過(guò)作者水平經(jīng)驗(yàn)都很有限,在這里議論其他產(chǎn)品有點(diǎn)兒心中坎坷,各位如果不以為然還請(qǐng)不吝賜教。

在Commit的時(shí)候,進(jìn)行write-write沖突檢測(cè)。如果發(fā)現(xiàn)兩個(gè)并發(fā)事務(wù)同時(shí)寫(xiě)一行數(shù)據(jù),就依據(jù)”first committer win”的原則處理,第一個(gè)提交的事務(wù)成功,而其他的事務(wù)則失敗回滾。如前所述的線程A和B,A寫(xiě)入歌手信息劉德華之后,被打斷,B寫(xiě)入張學(xué)友唱《吻別》,這條數(shù)據(jù)不會(huì)覆蓋原始數(shù)據(jù),而是新生成一條記錄,(有些人喜歡稱(chēng)為COW),這條記錄用線程B的事務(wù)ID標(biāo)記它。這時(shí)線程A被調(diào)度回來(lái),繼續(xù)寫(xiě)入,同樣A寫(xiě)的劉德華唱《忘情水》也不會(huì)覆蓋原始數(shù)據(jù),而是新生成一條新的記錄,用A的事務(wù)ID標(biāo)記。在commit的時(shí)候,Trafodion發(fā)現(xiàn),這同一行數(shù)據(jù)有兩條新紀(jì)錄,根據(jù)first commit win的原則,A獲勝。所以如果線程A提交,會(huì)成功;而線程B提交的時(shí)候會(huì)報(bào)錯(cuò),回滾。最終數(shù)據(jù)庫(kù)的記錄為劉德華唱的《忘情水》。是一致的。

Trafodion目前的版本為R1.0,在今后的版本中(計(jì)劃在R1.2版本中)使能一種新的并發(fā)控制算法SSCC。SSCC是中科院的研究成果,Trafodion團(tuán)隊(duì)和中科院緊密合作,即將推出這一全新的并發(fā)控制機(jī)制,SSCC提供比SnapShot Isolation更高級(jí)的隔離級(jí)別,同時(shí)對(duì)無(wú)狀態(tài)寫(xiě)操作有很高效的支持。
SSCC認(rèn)為SQL的寫(xiě)操作有兩種:stateful的寫(xiě)比如a=a+1,是有狀態(tài)的;stateless的寫(xiě),比如delete,或者覆蓋舊數(shù)據(jù),這類(lèi)寫(xiě)操作和歷史狀態(tài)無(wú)關(guān)。
無(wú)狀態(tài)寫(xiě)在web應(yīng)用中非常普遍,比如Google的index generating。采用這一機(jī)制,Trafodion可以高效地為相關(guān)的web應(yīng)用提供強(qiáng)大的支持。

筆者也會(huì)嘗試在后續(xù)的博客中介紹SSCC這一創(chuàng)新的并發(fā)控制算法。

并發(fā)控制保證了ACID中的I。
最后還有ACID的C沒(méi)有提到,是"一致"的意思,然而這個(gè)C卻不是靠事務(wù)處理器來(lái)保證的。ACID的Consistency靠數(shù)據(jù)庫(kù)的約束保證。因此筆者不喜歡用ACID來(lái)描述事務(wù)。但是這個(gè)是經(jīng)典,也不得不提。

兩階段提交

對(duì)于單機(jī)的數(shù)據(jù)庫(kù),比如MySQL,Oracle (not RAC),SQL Server,PostgreSql (not xl版)等,以上兩個(gè)技術(shù)就完全可以實(shí)現(xiàn)ACID事務(wù)了。但是Trafodion是一個(gè)分布式數(shù)據(jù)庫(kù),操作分布在集群的不同節(jié)點(diǎn)執(zhí)行,比如兩條寫(xiě)操作可能由兩個(gè)不同的ESP在不同節(jié)點(diǎn)運(yùn)行,所以Trafodion還需要處理分布式事務(wù)。

Trafodion的事務(wù)處理器將并發(fā)控制的職責(zé)分成兩部分,TM(Transaction Manager)負(fù)責(zé)整個(gè)事務(wù)的分布式并發(fā)控制,保證事務(wù)本身的一致性;RM(Resource Manager)負(fù)責(zé)數(shù)據(jù)訪問(wèn)的并發(fā)控制,保證數(shù)據(jù)的一致性。

具體來(lái)說(shuō),RM采用前面所說(shuō)的MVCC技術(shù),提供Snapshot Isolation級(jí)別的數(shù)據(jù)一致性。

在Trafodion中,每個(gè)HBase的Region都是一個(gè)RM。一個(gè)事務(wù)很可能會(huì)在多個(gè)Region上操作,比如事務(wù)需要更新兩行數(shù)據(jù),而它們分別屬于兩個(gè)不同的Region。在這種情況下,一個(gè)事務(wù)會(huì)有多個(gè)RM參與。而HBase的Region很可能運(yùn)行在不同的物理節(jié)點(diǎn)上,因此這是一種分布式事務(wù)。分布式事務(wù)由TM保證整個(gè)事務(wù)的一致性。

TM使用兩階段提交協(xié)議來(lái)保證分布式事務(wù)的一致性。兩階段提交是一個(gè)非常簡(jiǎn)單直觀的協(xié)議,類(lèi)似公司的秘書(shū)安排幾個(gè)人都必須參加的會(huì)議。第一階段:秘書(shū)發(fā)信給所有參與者:“周一下午3點(diǎn)開(kāi)會(huì),OK?”,如果所有有人都回復(fù)“OK”,則最終決定開(kāi)會(huì)進(jìn)入第二階段;如果有人回答no,或者有人不回答,則不開(kāi)會(huì)進(jìn)入第二階段;第二階段根據(jù)第一階段的結(jié)果進(jìn)行不同處理,如果是開(kāi)會(huì),秘書(shū)給每個(gè)人發(fā)信: '確定周一下午3點(diǎn)開(kāi)會(huì)';如果不開(kāi)會(huì),秘書(shū)給每個(gè)人發(fā)信:‘不開(kāi)會(huì)’。

每個(gè)事務(wù)都由一個(gè)TM發(fā)起,事務(wù)開(kāi)始的時(shí)候,TM會(huì)給事務(wù)創(chuàng)建一個(gè)ID。此后,事務(wù)中的每一個(gè)DML操作都帶有該ID,用來(lái)在RM內(nèi)部確定該讀取的數(shù)據(jù)版本。

在提交的時(shí)候,TM先進(jìn)行第一階段的prepare commit,向每個(gè)RM發(fā)送prepare消息。RM在收到prepare消息時(shí),進(jìn)行write-write沖突檢測(cè),如果有沖突則返回沖突,否則返回提交成功。TM得到所有RM的回復(fù)后進(jìn)行判斷,如果所有的RM都提交成功,則該事務(wù)成功,否則事務(wù)失??;進(jìn)入第二階段,如果事務(wù)成功,TM向所有RM發(fā)送commit消息,每一個(gè)RM收到commit消息后將事務(wù)的所有操作都寫(xiě)入物理磁盤(pán),完成事務(wù)處理;如果有任何一個(gè)RM返回沖突,或者任何一個(gè)RM超時(shí)沒(méi)有反應(yīng),TM認(rèn)為事務(wù)失敗,在第二階段向所有的RM發(fā)送abort消息;每個(gè)RM在收到abort消息后進(jìn)行事務(wù)回滾操作。

DDL事務(wù)

從R1.1版本開(kāi)始,Trafodion還支持DDL的事務(wù)處理,比如創(chuàng)建2個(gè)表,第一個(gè)成功,第二個(gè)失敗,回滾后,兩個(gè)表都不存在。

到此,關(guān)于“Trafodion事務(wù)管理怎么理解”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

當(dāng)前名稱(chēng):Trafodion事務(wù)管理怎么理解
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article24/gjdsje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、搜索引擎優(yōu)化、品牌網(wǎng)站建設(shè)、電子商務(wù)、域名注冊(cè)、網(wǎng)站導(dǎo)航

廣告

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

手機(jī)網(wǎng)站建設(shè)
91午夜福利国产在线观看| 日韩一级久久精品理论| 一区二区三区人妻日韩| 亚洲日本一区二区高清在线| 爽妇网亚洲一区二区三区| 日本一区中文字幕怎么用| 蜜臀av中文字幕在线| 亚洲高清成人综合网站| 久热精品视频在线观看| 五月婷婷综合中文字幕在线| 99国产精品欲av麻豆在线观看| 久久国产精品欧美熟妇| 日本区一区二区三高清视频| 亚洲精品一区二区午夜| 日韩爱视频一区二区| 久久午夜人妻一区二区| 四虎最新永久在线网站| 国产精品伦一区二区三级| 亚洲中国av一区二区| 婷婷国产综合一区二区三区| 人妻久久一区二区三区精品99| 韩国av高清在线观看| 日本高清av一区二区| 亚洲精品国产自在现线| 欧美亚洲国产另类第一页| 亚洲国产日韩欧美在线| 亚洲不卡高清一区二区三区| 国产成人精品视频午夜蜜蜂| 视频一区二区中文字幕日韩| 久久精品国产普通话对白| heyzo高清中文字幕在线| av欧美激情在线观看| 亚洲精品欧美日韩久久| 成人av男人天堂东京热| 久久久久精品久久久| 亚洲激情精品成人在线| 久青青国产综合自拍视频在线观看| 91午夜精品在线观看| 不卡在线视频中文字幕| 亚洲中文永久免费视频| 国产精品妇女一二三区|