一種利用protobuf的數(shù)據(jù)存儲(chǔ)、讀取方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種利用protobuf的數(shù)據(jù)存儲(chǔ)方法及裝 置、一種利用protobuf的數(shù)據(jù)讀取方法及裝置。
【背景技術(shù)】
[0002] protobuf是由Google開發(fā)提供的一套對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行序列化的方法,可以用做通 信協(xié)議,數(shù)據(jù)存儲(chǔ)格式等,并且,其具有不限系統(tǒng)語(yǔ)言、不限系統(tǒng)平臺(tái)、擴(kuò)展性強(qiáng)以及操作簡(jiǎn) 單等優(yōu)點(diǎn)。
[0003]現(xiàn)有技術(shù)中,protobuf中的proto源文件存放數(shù)據(jù)格式定義,即定義了與消息實(shí)例 的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí),其中,每一消息實(shí)例對(duì)應(yīng)唯一的消息實(shí)例的名稱,與消息實(shí)例的名 稱相關(guān)的存儲(chǔ)標(biāo)識(shí)為:消息實(shí)例的名稱,或,關(guān)于消息實(shí)例的名稱與消息實(shí)例對(duì)應(yīng)的類的名 稱的組合信息,proto源文件編譯后生成proto包文件。protobuf和數(shù)據(jù)庫(kù)的關(guān)聯(lián)配置信息 保存在配置文件中,配置文件根據(jù)proto源文件和數(shù)據(jù)存儲(chǔ)的實(shí)際需要編寫,關(guān)聯(lián)配置信息 定義了與proto源文件中消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)相對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)庫(kù)中的具體 存儲(chǔ)位置,例如數(shù)據(jù)庫(kù)表的名稱、該表中列的名稱等。當(dāng)用戶利用protobuf進(jìn)行數(shù)據(jù)存儲(chǔ) 時(shí),系統(tǒng)獲得待存儲(chǔ)數(shù)據(jù),同時(shí)構(gòu)建一個(gè)消息實(shí)例,并根據(jù)預(yù)定規(guī)則定義該數(shù)據(jù)消息的名 稱,待存儲(chǔ)數(shù)據(jù)存儲(chǔ)在其中;系統(tǒng)獲得該消息實(shí)例的名稱后,獲得配置文件中對(duì)應(yīng)的關(guān)聯(lián)配 置信息,并將該消息實(shí)例中存儲(chǔ)的數(shù)據(jù)存儲(chǔ)到所獲得關(guān)聯(lián)配置信息所指示的存儲(chǔ)位置,進(jìn) 而完成對(duì)數(shù)據(jù)的存儲(chǔ)。相應(yīng)的,當(dāng)用戶利用protobuf進(jìn)行數(shù)據(jù)讀取時(shí),系統(tǒng)獲得存儲(chǔ)待讀取 數(shù)據(jù)的數(shù)據(jù)庫(kù)表的名稱,通過配置文件中的關(guān)聯(lián)配置信息和proto包文件中的數(shù)據(jù)格式定 義查找與待讀取數(shù)據(jù)對(duì)應(yīng)的消息實(shí)例的名稱,從配置文件中獲得與該消息實(shí)例的名稱相關(guān) 的目標(biāo)存儲(chǔ)標(biāo)識(shí)相對(duì)應(yīng)的關(guān)聯(lián)配置信息,進(jìn)而從該關(guān)聯(lián)配置信息所指示的存儲(chǔ)位置中讀取 該待讀取數(shù)據(jù)。
[0004] 可見,現(xiàn)有技術(shù)中proto包文件和配置文件是兩個(gè)不同的文件,存儲(chǔ)或讀取數(shù)據(jù)時(shí) 需分別導(dǎo)入系統(tǒng)中,若配置文件和proto包文件對(duì)應(yīng)的proto源文件不同,存儲(chǔ)或讀取數(shù)據(jù) 時(shí)就會(huì)發(fā)生配置文件與proto包文件不匹配的情況,造成存儲(chǔ)或讀取錯(cuò)誤,例如,系統(tǒng)更新 時(shí),proto源文件被更新,同時(shí)proto包文件更新,但配置文件未更新,二者對(duì)應(yīng)的proto源文 件不同,此時(shí)就會(huì)發(fā)生存儲(chǔ)或讀取錯(cuò)誤。為了防止這種錯(cuò)誤的發(fā)生,需要人工維護(hù)配置文件 與proto包文件的一致性,修改proto源文件中數(shù)據(jù)格式定義時(shí),需要同時(shí)人工修改配置文 件,維護(hù)成本很高。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例的目的在于提供一種利用protobuf的數(shù)據(jù)存儲(chǔ)、讀取方法及裝置, 解決了配置文件與proto包文件不一致的問題,從而降低了人工維護(hù)成本。具體技術(shù)方案如 下:
[0006] 第一方面,本發(fā)明實(shí)施例提供了一種利用protobuf的數(shù)據(jù)存儲(chǔ)方法,包括:
[0007] 獲取待存儲(chǔ)數(shù)據(jù);
[0008] 構(gòu)建用于存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)的目標(biāo)消息實(shí)例,并將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)在所述 目標(biāo)消息實(shí)例中,其中,所述目標(biāo)消息實(shí)例的名稱基于預(yù)設(shè)規(guī)則定義;
[0009] 從proto包文件中,獲得與所述目標(biāo)消息實(shí)例的名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì)應(yīng) 的目標(biāo)關(guān)聯(lián)配置信息,其中,所述proto包文件存儲(chǔ)有與消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)以 及與所述存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的關(guān)聯(lián)配置信息,所述與消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)為:消息 實(shí)例的名稱,或,關(guān)于消息實(shí)例的名稱與消息實(shí)例對(duì)應(yīng)的類的名稱的組合信息;
[0010]將所述目標(biāo)消息實(shí)例存儲(chǔ)到與所述proto包文件所對(duì)應(yīng)數(shù)據(jù)庫(kù)中的所述目標(biāo)關(guān)聯(lián) 配置信息所指示的存儲(chǔ)位置。
[0011]其中,所述proto包文件為對(duì)包括有關(guān)聯(lián)配置信息的proto源文件進(jìn)行編譯后得到 的;
[0012]其中,利用custom option自定義屬性機(jī)制,在proto源文件中加入與消息實(shí)例對(duì) 應(yīng)的類的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的關(guān)聯(lián)配置信息。
[0013]其中,所述關(guān)聯(lián)配置信息至少包括:數(shù)據(jù)庫(kù)表的名稱和該數(shù)據(jù)庫(kù)表中列的名稱。 [0014]其中,所述從proto包文件中獲得與所述目標(biāo)消息實(shí)例的名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo) 識(shí)所對(duì)應(yīng)的目標(biāo)關(guān)聯(lián)配置信息,包括:
[0015] 調(diào)用預(yù)設(shè)的獲取自定義屬性的函數(shù),從proto包文件中讀取與所述目標(biāo)消息實(shí)例 的名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì)應(yīng)的目標(biāo)關(guān)聯(lián)配置信息;其中,所述獲取自定義屬性的函 數(shù)為與當(dāng)前計(jì)算機(jī)語(yǔ)言環(huán)境相對(duì)應(yīng)的特定函數(shù)。
[0016] 第二方面,本發(fā)明實(shí)施例提供了一種利用protobuf的數(shù)據(jù)讀取方法,包括:
[0017] 獲取存儲(chǔ)待讀取數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)表的名稱;
[0018] 從proto包文件中查找與所述目標(biāo)數(shù)據(jù)庫(kù)表的名稱對(duì)應(yīng)的目標(biāo)消息實(shí)例的名稱, 其中,所述proto包文件存儲(chǔ)有與消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)以及與所述存儲(chǔ)標(biāo)識(shí)對(duì) 應(yīng)的關(guān)聯(lián)配置信息,所述與消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)為:消息實(shí)例的名稱,或,關(guān)于 消息實(shí)例的名稱與消息實(shí)例對(duì)應(yīng)的類的名稱的組合信息;
[0019] 從所述pr〇to包文件中獲得與所述目標(biāo)消息實(shí)例的名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì) 應(yīng)的目標(biāo)關(guān)聯(lián)配置信息;
[0020] 從所述目標(biāo)關(guān)聯(lián)配置信息所指示的存儲(chǔ)位置中讀取所述待讀取數(shù)據(jù)。
[0021] 第三方面,本發(fā)明實(shí)施例提供了一種利用protobuf的數(shù)據(jù)存儲(chǔ)裝置,包括:
[0022] 數(shù)據(jù)獲取模塊,用于獲取待存儲(chǔ)數(shù)據(jù);
[0023] 消息實(shí)例構(gòu)建模塊,用于構(gòu)建用于存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)的目標(biāo)消息實(shí)例,并將所 述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)在所述目標(biāo)消息實(shí)例中,其中,所述目標(biāo)消息實(shí)例的名稱基于預(yù)設(shè)規(guī)則 定義;
[0024]關(guān)聯(lián)配置信息獲得模塊,用于從proto包文件中,獲得與所述目標(biāo)消息實(shí)例的名稱 相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì)應(yīng)的目標(biāo)關(guān)聯(lián)配置信息,其中,所述proto包文件存儲(chǔ)有與消息實(shí) 例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)以及與所述存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的關(guān)聯(lián)配置信息,所述與消息實(shí)例的名 稱相關(guān)的存儲(chǔ)標(biāo)識(shí)為:消息實(shí)例的名稱,或,關(guān)于消息實(shí)例的名稱與消息實(shí)例對(duì)應(yīng)的類的名 稱的組合信息;
[0025]數(shù)據(jù)存儲(chǔ)模塊,用于將所述目標(biāo)消息實(shí)例存儲(chǔ)到與所述proto包文件所對(duì)應(yīng)數(shù)據(jù) 庫(kù)中的所述目標(biāo)關(guān)聯(lián)配置信息所指示的存儲(chǔ)位置。
[0026]其中,所述proto包文件為對(duì)包括有關(guān)聯(lián)配置信息的proto源文件進(jìn)行編譯后得到 的;
[0027] 其中,利用custom option自定義屬性機(jī)制,在proto源文件中加入與消息實(shí)例對(duì) 應(yīng)的類的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的關(guān)聯(lián)配置信息。
[0028] 其中,所述關(guān)聯(lián)配置信息至少包括:數(shù)據(jù)庫(kù)表的名稱和該數(shù)據(jù)庫(kù)表中列的名稱。
[0029] 其中,所述關(guān)聯(lián)配置信息獲得模塊包括:
[0030] 函數(shù)調(diào)用單元,用于調(diào)用預(yù)設(shè)的獲取自定義屬性的函數(shù),從proto包文件中讀取與 所述目標(biāo)消息實(shí)例的名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì)應(yīng)的目標(biāo)關(guān)聯(lián)配置信息;其中,所述獲 取自定義屬性的函數(shù)為與當(dāng)前計(jì)算機(jī)語(yǔ)言環(huán)境相對(duì)應(yīng)的特定函數(shù)。
[0031] 第四方面,本發(fā)明實(shí)施例提供了一種利用protobuf的數(shù)據(jù)讀取裝置,包括:
[0032]數(shù)據(jù)庫(kù)表名稱獲取模塊,用于獲取存儲(chǔ)待讀取數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)表的名稱;
[0033]消息實(shí)例的名稱查找模塊,用于從proto包文件中查找與所述目標(biāo)數(shù)據(jù)庫(kù)表的名 稱對(duì)應(yīng)的目標(biāo)消息實(shí)例的名稱,其中,所述proto包文件存儲(chǔ)有與消息實(shí)例的名稱相關(guān)的存 儲(chǔ)標(biāo)識(shí)以及與所述存儲(chǔ)標(biāo)識(shí)對(duì)應(yīng)的關(guān)聯(lián)配置信息,所述與消息實(shí)例的名稱相關(guān)的存儲(chǔ)標(biāo)識(shí) 為:消息實(shí)例的名稱,或,關(guān)于消息實(shí)例的名稱與消息實(shí)例對(duì)應(yīng)的類的名稱的組合信息; [0034]關(guān)聯(lián)配置信息獲得模塊,用于從所述proto包文件中獲得與所述目標(biāo)消息實(shí)例的 名稱相關(guān)的目標(biāo)存儲(chǔ)標(biāo)識(shí)所對(duì)應(yīng)的目標(biāo)關(guān)聯(lián)配置信息;
[0035]數(shù)據(jù)讀取模塊,用于從所述目標(biāo)關(guān)聯(lián)配置信息所指示的存儲(chǔ)位置中讀取所述待讀 取數(shù)據(jù)。
[0036]本發(fā)明實(shí)施例提供的一種利用protobuf的數(shù)據(jù)存儲(chǔ)、讀取方法及裝置,利用 custom o