亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)寫入方法及裝置與流程

文檔序號:12732951閱讀:425來源:國知局
數(shù)據(jù)寫入方法及裝置與流程

本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種數(shù)據(jù)寫入方法及裝置。



背景技術(shù):

在處理如查詢大量數(shù)據(jù)時,可以直接從存儲系統(tǒng)中查詢,這種查詢方案雖然能保障數(shù)據(jù)安全,但是其查詢速度較慢。為了即保障數(shù)據(jù)安全,又滿足快速查詢的需要,在相關(guān)技術(shù)中,通常會從查詢系統(tǒng)即內(nèi)存中查詢數(shù)據(jù)。這種技術(shù)方案需要將數(shù)據(jù)同時存入查詢系統(tǒng)和存儲系統(tǒng)。比如,將數(shù)據(jù)存儲在Elastic Search中,實(shí)現(xiàn)對數(shù)據(jù)的全文索引,便于查詢;同時為了保障數(shù)據(jù)安全,需要將數(shù)據(jù)同步存儲到磁盤(如,Mongodb數(shù)據(jù)庫等)中。

然而,通過上述技術(shù)方案,可能僅僅將數(shù)據(jù)寫入了查詢系統(tǒng),或者僅僅將數(shù)據(jù)寫入了存儲系統(tǒng),或者同時將數(shù)據(jù)寫入了查詢系統(tǒng)和存儲系統(tǒng),但無法保證數(shù)據(jù)同時寫入了查詢系統(tǒng)和存儲系統(tǒng),即無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性。

針對上述的問題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種數(shù)據(jù)寫入方法及裝置,以至少解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

根據(jù)本發(fā)明實(shí)施例的一個方面,提供了一種數(shù)據(jù)寫入方法,包括:應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入上述產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給上述存儲系統(tǒng);上述應(yīng)用程序?qū)⑸鲜霎a(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入上述產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給上述查詢系統(tǒng);上述應(yīng)用程序分別接收并根據(jù)上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,上述應(yīng)用程序分別接收并根據(jù)上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作包括:在接收到上述存儲系統(tǒng)和/或上述查詢系統(tǒng)返回的消息為寫入失敗消息時,上述應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作;或者在預(yù)設(shè)時間段內(nèi)未接收到上述存儲系統(tǒng)和/或上述查詢系統(tǒng)返回的消息時,上述應(yīng)用程序確定 放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,在上述應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作之后,上述方法還包括:上述應(yīng)用程序向上述存儲系統(tǒng)或上述查詢系統(tǒng)中數(shù)據(jù)寫入成功的一方發(fā)送用于指示上述存儲系統(tǒng)或上述查詢系統(tǒng)回滾本次寫入的數(shù)據(jù)的回滾消息。

進(jìn)一步地,上述應(yīng)用程序分別接收并根據(jù)上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作包括:在接收到上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息都為寫入成功消息時,上述應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,上述應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作之后,上述方法還包括:上述應(yīng)用程序向上述存儲系統(tǒng)和上述查詢系統(tǒng)提交用于指示本次數(shù)據(jù)寫入成功的事務(wù)。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)寫入方法,包括:存儲系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示上述存儲系統(tǒng)寫入上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;上述存儲系統(tǒng)在根據(jù)上述寫入消息對上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向上述應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)寫入方法,包括:查詢系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示上述查詢系統(tǒng)寫入上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;上述查詢系統(tǒng)在根據(jù)上述寫入消息對上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向上述應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)寫入裝置,包括:第一發(fā)送單元,用于使得應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入上述產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給上述存儲系統(tǒng),并將上述產(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入上述產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給上述查詢系統(tǒng);確定單元,用于使得上述應(yīng)用程序分別接收并根據(jù)上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,上述確定單元還用于使得:在接收到上述存儲系統(tǒng)和/或上述查詢系統(tǒng)返回的消息為寫入失敗消息時,上述應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作;或者在預(yù)設(shè)時間段內(nèi)未接收到上述存儲系統(tǒng)和/或上述查詢系統(tǒng)返回的消息時,上述應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,上述裝置還包括:第二發(fā)送單元,用于在上述應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作之后,上述應(yīng)用程序向上述存儲系統(tǒng)或上述查詢系統(tǒng)中數(shù)據(jù)寫入成功的一方發(fā)送用于指示上述存儲系統(tǒng)或上述查詢系統(tǒng)回滾本次寫入的數(shù)據(jù)的回滾消息。

進(jìn)一步地,上述確定單元還用于使得在接收到上述存儲系統(tǒng)和上述查詢系統(tǒng)返回的消息都為寫入成功消息時,上述應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作。

進(jìn)一步地,上述裝置還包括:提交單元,用于使得上述應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作之后,上述應(yīng)用程序向上述存儲系統(tǒng)和上述查詢系統(tǒng)提交用于指示本次數(shù)據(jù)寫入成功的事務(wù)。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)寫入裝置,包括:第一接收單元,用于使得存儲系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示上述存儲系統(tǒng)寫入上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;第一執(zhí)行單元,用于使得上述存儲系統(tǒng)在根據(jù)上述寫入消息對上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向上述應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)寫入裝置,包括:第二接收單元,用于使得查詢系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示上述查詢系統(tǒng)寫入上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;第二執(zhí)行單元,用于使得上述查詢系統(tǒng)在根據(jù)上述寫入消息對上述應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向上述應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

在本發(fā)明實(shí)施例中,采用分段提交策略,通過應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給存儲系統(tǒng);應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給查詢系統(tǒng);應(yīng)用程序分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作,達(dá)到了考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)了保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)寫入方法的流程圖;

圖2是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)寫入方法的流程圖;

圖3是根據(jù)本發(fā)明實(shí)施例的再一種可選的數(shù)據(jù)寫入方法的流程圖;

圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)寫入裝置的示意圖;

圖5是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)寫入裝置的示意圖;

圖6是根據(jù)本發(fā)明實(shí)施例的再一種可選的數(shù)據(jù)寫入裝置的示意圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

實(shí)施例1

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)寫入方法的流程圖,如圖1所示,該方法包括如下步驟:

步驟S102,應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給存儲系統(tǒng);

步驟S104,應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給查詢系統(tǒng);

步驟S106,應(yīng)用程序分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù) 寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

可選地,應(yīng)用程序分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作包括:

S2,在接收到存儲系統(tǒng)和/或查詢系統(tǒng)返回的消息為寫入失敗消息時,應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作;或者

S4,在預(yù)設(shè)時間段內(nèi)未接收到存儲系統(tǒng)和/或查詢系統(tǒng)返回的消息時,應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作。

也即,實(shí)施時,可以通過兩種方式確定放棄本次數(shù)據(jù)寫入操作,包括:方式1,根據(jù)返回的消息的種類來確定,具體地,在存儲系統(tǒng)和查詢系統(tǒng)中至少之一返回的消息為寫入失敗消息時,應(yīng)用程序可以確定放棄本次數(shù)據(jù)寫入操作;方式2,只要存儲系統(tǒng)和/或查詢系統(tǒng)在預(yù)設(shè)時間段內(nèi)沒有返回消息,那么無論它們在該預(yù)設(shè)時間段之外是否返回消息,應(yīng)用程序都會確定放棄本次數(shù)據(jù)寫入操作,也即,如果應(yīng)用程序遲遲 未收到存儲系統(tǒng)或查詢系統(tǒng)返回的消息,則認(rèn)為存儲系統(tǒng)或查詢系統(tǒng)寫入失敗,從而取消該事務(wù)的執(zhí)行。需要說明的是,在放棄本次數(shù)據(jù)寫入操作之后,應(yīng)用程序可以再次發(fā)起寫入本次所針對的數(shù)據(jù)的請求。這樣,可以防止某些寫入由于某次寫入失敗而導(dǎo)致最終寫入失敗。

進(jìn)一步可選地,在應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作之后,上述方法還包括:

S6,應(yīng)用程序向存儲系統(tǒng)或查詢系統(tǒng)中數(shù)據(jù)寫入成功的一方發(fā)送用于指示存儲系統(tǒng)或查詢系統(tǒng)回滾本次寫入的數(shù)據(jù)的回滾消息。

具體地,應(yīng)用程序會收集存儲系統(tǒng)和查詢系統(tǒng)返回的消息,如果收到存儲系統(tǒng)或查詢系統(tǒng)發(fā)來的表示寫入失敗的消息,則表明該數(shù)據(jù)在存儲系統(tǒng)或查詢系統(tǒng)中不能正常存儲,此時,應(yīng)用程序會放棄本次數(shù)據(jù)寫入操作,將并將寫入失敗狀態(tài)記錄到日志中,從而向存儲系統(tǒng)或查詢系統(tǒng)中的另外一個發(fā)送回滾消息,對應(yīng)的當(dāng)存儲系統(tǒng)或查詢系統(tǒng)接收到應(yīng)用程序發(fā)來的回滾信息后,存儲系統(tǒng)或查詢系統(tǒng)會回滾該事務(wù),并記錄回滾信息。比如,如果存儲系統(tǒng)寫入失敗而查詢系統(tǒng)寫入成功,則應(yīng)用程序會向查詢系統(tǒng)發(fā)送一個回滾消息,使其放棄本次已經(jīng)寫入成功的數(shù)據(jù);同樣,如果查詢系統(tǒng)寫入失敗而存儲系統(tǒng)寫入成功,則應(yīng)用程序會向存儲系統(tǒng)發(fā)送一個回滾消息,使其放棄本次已經(jīng)寫入成功的數(shù)據(jù);當(dāng)然,如果查詢系統(tǒng)和存儲系統(tǒng)都寫入失敗,應(yīng)用程序無需做任何處理。

通過本發(fā)明實(shí)施例,采用分階段提交策略,在存儲系統(tǒng)和查詢系統(tǒng)中的任一個存儲失敗的情況下,使另一個系統(tǒng)放棄本次已經(jīng)存儲成功的數(shù)據(jù),可以防止存儲系統(tǒng)和查詢系統(tǒng)中的一方存儲了某個或者某些數(shù)據(jù),而另一方并未存儲該個或者該些數(shù)據(jù)而導(dǎo)致的存儲系統(tǒng)和查詢系統(tǒng)中的數(shù)據(jù)不一致。

可選地,應(yīng)用程序分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作包括:

S8,在接收到存儲系統(tǒng)和查詢系統(tǒng)返回的消息都為寫入成功消息時,應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作。

其中,寫入成功消息即是應(yīng)用程序收到的用于表示存儲系統(tǒng)或者查詢系統(tǒng)準(zhǔn)備就緒的消息。只有收到上述兩個系統(tǒng)的寫入成功消息時,才認(rèn)為本次數(shù)據(jù)寫入成功,此時,應(yīng)用程序會將寫入成功的狀態(tài)記錄成日志,并發(fā)送一個提交事務(wù)的消息給存儲系統(tǒng)和查詢系統(tǒng)。

進(jìn)一步可選地,應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作之后,上述方法還包括:

S10,應(yīng)用程序向存儲系統(tǒng)和查詢系統(tǒng)提交用于指示本次數(shù)據(jù)寫入成功的事務(wù)。

進(jìn)一步,在事務(wù)進(jìn)行過程中,在存儲系統(tǒng)或查詢系統(tǒng)宕機(jī)時并重啟后,可以通過詢問應(yīng)用程序得到其未完成事務(wù)究竟是否需要再次提交的信息,這樣,可以防止宕機(jī)等意外故障而導(dǎo)致數(shù)據(jù)存儲失敗。另外,在本發(fā)明中,應(yīng)用程序可以并行同時給存儲系統(tǒng)和查詢系統(tǒng)發(fā)送多個數(shù)據(jù),也可在每次數(shù)據(jù)寫入操作中提交批量數(shù)據(jù)。

通過本發(fā)明實(shí)施例,可以有效地保證存儲系統(tǒng)和查詢系統(tǒng)的數(shù)據(jù)一致性,并且通過樂觀寫的方式以及分階段提交策略,可以減少寫入等待時間。所謂樂觀寫的方式是指系應(yīng)用程序認(rèn)為數(shù)據(jù)在理想狀態(tài)下能夠正確地同時寫入查詢系統(tǒng)和存儲系統(tǒng),只有在某個系統(tǒng)返回失敗消息時,才認(rèn)為數(shù)據(jù)不能正確地同時寫入查詢系統(tǒng)和存儲系統(tǒng),并需要進(jìn)行回滾等操作。

實(shí)施例2

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

圖2是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)寫入方法的流程圖,如圖2所示,該方法包括如下步驟:

步驟S202,存儲系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示存儲系統(tǒng)寫入應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;

步驟S204,存儲系統(tǒng)在根據(jù)寫入消息對應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù)寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個 事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

實(shí)施例3

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

圖3是根據(jù)本發(fā)明實(shí)施例的再一種可選的數(shù)據(jù)寫入方法的流程圖,如圖3所示,該方法包括如下步驟:

步驟S302,查詢系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示查詢系統(tǒng)寫入應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;

步驟S304,查詢系統(tǒng)在根據(jù)寫入消息對應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù)寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

實(shí)施例4

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入裝置的裝置實(shí)施例。

圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)寫入裝置的示意圖,如圖4所示,該裝置包括:第一發(fā)送單元402,用于使得應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給存儲系統(tǒng),并將產(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給查詢系統(tǒng);確定單元404,用于使得應(yīng)用程序分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù)寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序 返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

可選地,上述確定單元還用于使得:在接收到存儲系統(tǒng)和/或查詢系統(tǒng)返回的消息為寫入失敗消息時,應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作;或者在預(yù)設(shè)時間段內(nèi)未接收到存儲系統(tǒng)和/或查詢系統(tǒng)返回的消息時,應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作。

也即,實(shí)施時,可以通過兩種方式確定放棄本次數(shù)據(jù)寫入操作,包括:方式1,根據(jù)返回的消息的種類來確定,具體地,在存儲系統(tǒng)和查詢系統(tǒng)中至少之一返回的消息為寫入失敗消息時,應(yīng)用程序可以確定放棄本次數(shù)據(jù)寫入操作;方式2,只要存儲系統(tǒng)和/或查詢系統(tǒng)在預(yù)設(shè)時間段內(nèi)沒有返回消息,那么無論它們在該預(yù)設(shè)時間段之外是否返回消息,應(yīng)用程序都會確定放棄本次數(shù)據(jù)寫入操作,也即,如果應(yīng)用程序遲遲未收到存儲系統(tǒng)或查詢系統(tǒng)返回的消息,則認(rèn)為存儲系統(tǒng)或查詢系統(tǒng)寫入失敗,從而取消該事務(wù)的執(zhí)行。需要說明的是,在放棄本次數(shù)據(jù)寫入操作之后,應(yīng)用程序可以再次發(fā)起寫入本次所針對的數(shù)據(jù)的請求。這樣,可以防止某些寫入由于某次寫入失敗而導(dǎo)致最終寫入失敗。

進(jìn)一步可選地,上述裝置還包括:第二發(fā)送單元,用于在應(yīng)用程序確定放棄本次數(shù)據(jù)寫入操作之后,應(yīng)用程序向存儲系統(tǒng)或查詢系統(tǒng)中數(shù)據(jù)寫入成功的一方發(fā)送用于指示存儲系統(tǒng)或查詢系統(tǒng)回滾本次寫入的數(shù)據(jù)的回滾消息。

具體地,應(yīng)用程序會收集存儲系統(tǒng)和查詢系統(tǒng)返回的消息,如果收到存儲系統(tǒng)或查詢系統(tǒng)發(fā)來的表示寫入失敗的消息,則表明該數(shù)據(jù)在存儲系統(tǒng)或查詢系統(tǒng)中不能正常存儲,此時,應(yīng)用程序會放棄本次數(shù)據(jù)寫入操作,將并將寫入失敗狀態(tài)記錄到日志中,從而向存儲系統(tǒng)或查詢系統(tǒng)中的另外一個發(fā)送回滾消息,對應(yīng)的當(dāng)存儲系統(tǒng)或查詢系統(tǒng)接收到應(yīng)用程序發(fā)來的回滾信息后,存儲系統(tǒng)或查詢系統(tǒng)會回滾該事務(wù),并記錄回滾信息。比如,如果存儲系統(tǒng)寫入失敗而查詢系統(tǒng)寫入成功,則應(yīng)用程序會向查詢系統(tǒng)發(fā)送一個回滾消息,使其放棄本次已經(jīng)寫入成功的數(shù)據(jù);同樣,如果查詢系統(tǒng) 寫入失敗而存儲系統(tǒng)寫入成功,則應(yīng)用程序會向存儲系統(tǒng)發(fā)送一個回滾消息,使其放棄本次已經(jīng)寫入成功的數(shù)據(jù);當(dāng)然,如果查詢系統(tǒng)和存儲系統(tǒng)都寫入失敗,應(yīng)用程序無需做任何處理。

通過本發(fā)明實(shí)施例,采用分階段提交策略,在存儲系統(tǒng)和查詢系統(tǒng)中的任一個存儲失敗的情況下,使另一個系統(tǒng)放棄本次已經(jīng)存儲成功的數(shù)據(jù),可以防止存儲系統(tǒng)和查詢系統(tǒng)中的一方存儲了某個或者某些數(shù)據(jù),而另一方并未存儲該個或者該些數(shù)據(jù)而導(dǎo)致的存儲系統(tǒng)和查詢系統(tǒng)中的數(shù)據(jù)不一致。

可選地,上述確定單元還用于使得在接收到存儲系統(tǒng)和查詢系統(tǒng)返回的消息都為寫入成功消息時,應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作。

其中,寫入成功消息即是應(yīng)用程序收到的用于表示存儲系統(tǒng)或者查詢系統(tǒng)準(zhǔn)備就緒的消息。只有收到上述兩個系統(tǒng)的寫入成功消息時,才認(rèn)為本次數(shù)據(jù)寫入成功,此時,應(yīng)用程序會將寫入成功的狀態(tài)記錄成日志,并發(fā)送一個提交事務(wù)的消息給存儲系統(tǒng)和查詢系統(tǒng)。

進(jìn)一步可選地,上述裝置還包括:提交單元,用于使得應(yīng)用程序確定不放棄本次數(shù)據(jù)寫入操作之后,應(yīng)用程序向存儲系統(tǒng)和查詢系統(tǒng)提交用于指示本次數(shù)據(jù)寫入成功的事務(wù)。

進(jìn)一步,在事務(wù)進(jìn)行過程中,在存儲系統(tǒng)或查詢系統(tǒng)宕機(jī)時并重啟后,可以通過詢問應(yīng)用程序得到其未完成事務(wù)究竟是否需要再次提交的信息,這樣,可以防止宕機(jī)等意外故障而導(dǎo)致數(shù)據(jù)存儲失敗。另外,在本發(fā)明中,應(yīng)用程序可以并行同時給存儲系統(tǒng)和查詢系統(tǒng)發(fā)送多個數(shù)據(jù),也可在每次數(shù)據(jù)寫入操作中提交批量數(shù)據(jù)。

通過本發(fā)明實(shí)施例,可以有效地保證存儲系統(tǒng)和查詢系統(tǒng)的數(shù)據(jù)一致性,并且通過樂觀寫的方式以及分階段提交策略,可以減少寫入等待時間。所謂樂觀寫的方式是指系應(yīng)用程序認(rèn)為數(shù)據(jù)在理想狀態(tài)下能夠正確地同時寫入查詢系統(tǒng)和存儲系統(tǒng),只有在某個系統(tǒng)返回失敗消息時,才認(rèn)為數(shù)據(jù)不能正確地同時寫入查詢系統(tǒng)和存儲系統(tǒng),并需要進(jìn)行回滾等操作。

實(shí)施例5

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入裝置的裝置實(shí)施例。

圖5是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)寫入裝置的示意圖,如圖5所示,該裝置包括:第一接收單元502,用于使得存儲系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示存儲系統(tǒng)寫入應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;第一執(zhí)行單元504,用于使得 存儲系統(tǒng)在根據(jù)寫入消息對應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù)寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

實(shí)施例6

根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)寫入裝置的裝置實(shí)施例。

圖6是根據(jù)本發(fā)明實(shí)施例的再一種可選的數(shù)據(jù)寫入裝置的示意圖,如圖6所示,該裝置包括:第二接收單元602,用于使得查詢系統(tǒng)接收應(yīng)用程序產(chǎn)生的數(shù)據(jù)以及用于指示查詢系統(tǒng)寫入應(yīng)用程序產(chǎn)生的數(shù)據(jù)的寫入消息;第二執(zhí)行單元604,用于使得查詢系統(tǒng)在根據(jù)寫入消息對應(yīng)用程序產(chǎn)生的數(shù)據(jù)進(jìn)行數(shù)據(jù)寫入操作之后,向應(yīng)用程序返回作為確定是否放棄本次數(shù)據(jù)寫入操作的依據(jù)的返回消息。

這里的應(yīng)用程序可以是任何應(yīng)用程序。應(yīng)用程序產(chǎn)生數(shù)據(jù),并準(zhǔn)備將產(chǎn)生的數(shù)據(jù) 寫入到存儲系統(tǒng)和查詢系統(tǒng)中。具體地,系統(tǒng)一般需要通過相應(yīng)的寫入數(shù)據(jù)的接口程序分別將對應(yīng)的數(shù)據(jù)寫入存儲系統(tǒng)和查詢系統(tǒng)。

為了保證寫入存儲系統(tǒng)中的數(shù)據(jù)與寫入查詢系統(tǒng)中的數(shù)據(jù)相同,應(yīng)用程序在準(zhǔn)備好數(shù)據(jù)D后,會同時向存儲系統(tǒng)和查詢系統(tǒng)發(fā)送寫入消息T1和數(shù)據(jù)D,并檢測存儲系統(tǒng)和查詢系統(tǒng)是否能夠成功寫入數(shù)據(jù),其中,寫入消息T1包括:發(fā)送給存儲系統(tǒng)的用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息和發(fā)送給查詢系統(tǒng)的用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息。

由于存儲系統(tǒng)和查詢系統(tǒng)在接收到寫入消息T1和數(shù)據(jù)D以后,都會嘗試開啟一個事務(wù)直接對數(shù)據(jù)D進(jìn)行存儲,并且在存儲過程中,如果數(shù)據(jù)D能存儲成功,則給應(yīng)用程序返回一個準(zhǔn)備就緒的信息T2,如果數(shù)據(jù)D存儲失敗,則記錄日志,并給應(yīng)用程序返回一個寫入失敗的信息T3。因此,應(yīng)用程序可以分別接收并根據(jù)存儲系統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。實(shí)際上,對于存儲系統(tǒng)和查詢系統(tǒng)而言,在本次數(shù)據(jù)寫入操作中,無論哪個系統(tǒng)數(shù)據(jù)寫入失敗,應(yīng)用程序都會放棄本次數(shù)據(jù)寫入操作,只有在兩個系統(tǒng)都成功完成本次的數(shù)據(jù)寫入操作后,應(yīng)用程序才不會放棄本次數(shù)據(jù)寫入操作。需要說明的是,上述存儲系統(tǒng)和查詢系統(tǒng)會由于服務(wù)器繁忙,或者服務(wù)器宕機(jī),或者網(wǎng)絡(luò)中斷等原因而導(dǎo)致數(shù)據(jù)存儲失敗。

通過上述實(shí)施例,可以達(dá)到考慮存儲系統(tǒng)和查詢系統(tǒng)的實(shí)際寫入情況來確定是否放棄當(dāng)前數(shù)據(jù)寫入操作的目的,從而實(shí)現(xiàn)保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)效果,進(jìn)而解決相關(guān)技術(shù)中無法保證查詢系統(tǒng)和存儲系統(tǒng)中數(shù)據(jù)的一致性的技術(shù)問題。

上述數(shù)據(jù)寫入裝置包括處理器和存儲器,上述第一發(fā)送單元和確定單元等均作為程序單元存儲在存儲器中,由處理器執(zhí)行存儲在存儲器中的上述程序單元。

處理器中包含內(nèi)核,由內(nèi)核去存儲器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個或以上,通過調(diào)整內(nèi)核參數(shù)解析文本內(nèi)容。

存儲器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM),存儲器包括至少一個存儲芯片。

本申請還提供了一種計(jì)算機(jī)程序產(chǎn)品的實(shí)施例,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時,適于執(zhí)行初始化有如下方法步驟的程序代碼:應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示存儲系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給存儲系統(tǒng);應(yīng)用程序?qū)a(chǎn)生的數(shù)據(jù)和用于指示查詢系統(tǒng)寫入產(chǎn)生的數(shù)據(jù)的寫入消息發(fā)送給查詢系統(tǒng);應(yīng)用程序分別接收并根據(jù)存儲系 統(tǒng)和查詢系統(tǒng)返回的消息確定是否放棄本次數(shù)據(jù)寫入操作。

上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

在本發(fā)明的上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1