本申請(qǐng)涉及數(shù)據(jù)庫(kù)領(lǐng)域,具體而言,涉及一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法及裝置。
背景技術(shù):
目前,在一些業(yè)務(wù)場(chǎng)景下,需要將Json格式的文檔添加進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,例如,將Json格式的文檔添加進(jìn)mongodb中。通常,相關(guān)技術(shù)中將Json格式的文檔直接拷貝進(jìn)mongodb中,然而,在后續(xù)需要從mongodb中讀取Json格式的文檔中的數(shù)據(jù)時(shí),由于Json格式的文檔中的數(shù)據(jù)類型不是預(yù)設(shè)的強(qiáng)類型,在進(jìn)行反序列化時(shí),容易導(dǎo)致讀取mongodb中數(shù)據(jù)出錯(cuò)。
針對(duì)相關(guān)技術(shù)中由于將Json格式的文檔直接拷貝進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致后續(xù)讀取非關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)容易出錯(cuò)的問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的主要目的在于提供一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法及裝置,以解決相關(guān)技術(shù)中由于將Json格式的文檔直接拷貝進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致后續(xù)讀取非關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)容易出錯(cuò)的問(wèn)題。
為了實(shí)現(xiàn)上述目的,根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法。該方法包括:獲取Json格式的目標(biāo)文檔;將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
進(jìn)一步地,將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔包括:調(diào)用BsonDocument類將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
進(jìn)一步地,將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)包括:調(diào)用MongoDatabase類和MongodbCollection類對(duì)強(qiáng)類型的目標(biāo)文檔進(jìn)行序列化處理;以及將序列化處理后的強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
進(jìn)一步地,獲取Json格式的目標(biāo)文檔包括:在多個(gè)文檔中確定Json格式的文檔;從Json格式的文檔中確定Json格式的目標(biāo)文檔的絕對(duì)路徑;以及從絕對(duì)路徑中讀取 Json格式的目標(biāo)文檔。
進(jìn)一步地,非關(guān)系型數(shù)據(jù)庫(kù)為mongodb。
進(jìn)一步地,在將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)之后,該方法還包括:讀取mongodb中存儲(chǔ)的文檔;對(duì)讀取到的mongodb中存儲(chǔ)的文檔進(jìn)行反序列化處理;以及將反序列化處理后的文檔發(fā)送至目標(biāo)地址。
為了實(shí)現(xiàn)上述目的,根據(jù)本申請(qǐng)的另一方面,提供了一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置。該裝置包括:獲取單元,用于獲取Json格式的目標(biāo)文檔;轉(zhuǎn)化單元,用于將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;創(chuàng)建單元,用于將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及存儲(chǔ)單元,用于將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
進(jìn)一步地,轉(zhuǎn)化單元還用于調(diào)用BsonDocument類將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
進(jìn)一步地,存儲(chǔ)單元包括:處理模塊,用于調(diào)用MongoDatabase類和MongodbCo llection類對(duì)強(qiáng)類型的目標(biāo)文檔進(jìn)行序列化處理;以及存儲(chǔ)模塊,用于將序列化處理后的強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
進(jìn)一步地,獲取單元包括:第一確定模塊,用于在多個(gè)文檔中確定Json格式的文檔;第二確定模塊,用于從Json格式的文檔中確定Json格式的目標(biāo)文檔的絕對(duì)路徑;以及讀取模塊,用于從絕對(duì)路徑中讀取Json格式的目標(biāo)文檔。
通過(guò)本申請(qǐng),采用以下步驟:獲取Json格式的目標(biāo)文檔;將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù),解決了相關(guān)技術(shù)中由于將Json格式的文檔直接拷貝進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致后續(xù)讀取非關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)容易出錯(cuò)的問(wèn)題。即,本申請(qǐng)先將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔,再將Bson格式的目標(biāo)文檔的屬性轉(zhuǎn)換為強(qiáng)類型,再存儲(chǔ)到非關(guān)系型數(shù)據(jù)庫(kù)中,進(jìn)而達(dá)到了保證后續(xù)在非關(guān)系型數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)進(jìn)行反序列化時(shí)不容易出錯(cuò)的效果。
附圖說(shuō)明
構(gòu)成本申請(qǐng)的一部分的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,本申請(qǐng)的示意性實(shí) 施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1是根據(jù)本申請(qǐng)實(shí)施例的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法的流程圖;以及
圖2是根據(jù)本申請(qǐng)實(shí)施例的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置的示意圖。
具體實(shí)施方式
需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
需要說(shuō)明的是,本申請(qǐng)的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請(qǐng)的實(shí)施例。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
為了便于描述,以下對(duì)本申請(qǐng)實(shí)施例涉及的幾個(gè)術(shù)語(yǔ)進(jìn)行說(shuō)明:
Mongo DB是目前在IT行業(yè)非常流行的一種非關(guān)系型數(shù)據(jù)庫(kù)(NoSql),其靈活的數(shù)據(jù)存儲(chǔ)方式備受當(dāng)前IT從業(yè)人員的青睞。Mongo DB很好的實(shí)現(xiàn)了面向?qū)ο蟮乃枷?OO思想),在Mongo DB中每一條記錄都是一個(gè)Document對(duì)象。Mongo DB最大的優(yōu)勢(shì)在于所有的數(shù)據(jù)持久操作都無(wú)需開發(fā)人員手動(dòng)編寫SQL語(yǔ)句,直接調(diào)用方法就可以輕松的實(shí)現(xiàn)CRUD操作。
強(qiáng)類型為所有變量指定數(shù)據(jù)類型稱為“強(qiáng)類型”。強(qiáng)/弱類型是指類型檢查的嚴(yán)格程度的。語(yǔ)言有無(wú)類型,弱類型和強(qiáng)類型三種。無(wú)類型的不檢查,甚至不區(qū)分指令和數(shù)據(jù)。弱類型的檢查很弱,僅能嚴(yán)格的區(qū)分指令和數(shù)據(jù)。強(qiáng)類型的則嚴(yán)格的在編譯期進(jìn)行檢查。強(qiáng)類型語(yǔ)言在沒有強(qiáng)制類型轉(zhuǎn)化前,不允許兩種不同類型的變量相互操作。Java、C#、Apex和Python等都是強(qiáng)類型語(yǔ)言。
Bson是一種類Json的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary Json,它和Json 一樣,支持內(nèi)嵌的文檔對(duì)象和數(shù)組對(duì)象,但是Bson有Json沒有的一些數(shù)據(jù)類型,如Date和BinData類型。Bson可以做為網(wǎng)絡(luò)數(shù)據(jù)交換的一種存儲(chǔ)形式,這個(gè)有點(diǎn)類似于Google的Protocol Buffer,但是Bson是一種schema-less的存儲(chǔ)形式,它的優(yōu)點(diǎn)是靈活性高,但它的缺點(diǎn)是空間利用率不是很理想。Bson有三個(gè)特點(diǎn):輕量性、可遍歷性、高效性。{"hello":"world"}這是一個(gè)Bson的例子,其中"hello"是key name,它一般是cstring類型,字節(jié)表示是cstring::=(byte*)"/x00",其中*表示零個(gè)或多個(gè)byte字節(jié),/x00表示結(jié)束符;后面的"world"是value值,它的類型一般是string,double,array,binarydata等類型。
序列化被定義為將對(duì)象的狀態(tài)存儲(chǔ)到存儲(chǔ)媒介中的過(guò)程。在此過(guò)程中,對(duì)象的公共字段和私有字段以及類的名稱(包括包含該類的程序集)都被轉(zhuǎn)換為字節(jié)流,然后寫入數(shù)據(jù)流。在以后“反序列化”該對(duì)象時(shí),創(chuàng)建原始對(duì)象的精確復(fù)本。具體地,序列化是指一個(gè)對(duì)象的實(shí)例可以被保存,保存成一個(gè)二進(jìn)制串,當(dāng)然,一旦被保存成二進(jìn)制串,那么也可以保存成文本串了。比如,一個(gè)計(jì)數(shù)器,數(shù)值為2,我們可以用字符串“2”表示。如果有個(gè)對(duì)象,叫做connter,當(dāng)前值為2,那么可以序列化成“2”,反向的,也可以從“2”得到值為2的計(jì)數(shù)器實(shí)例。這樣,關(guān)機(jī)時(shí)序列化它,開機(jī)時(shí)反序列化它,每次開機(jī)都是延續(xù)的。不會(huì)都是從頭開始。序列化概念的提出和實(shí)現(xiàn),可以使我們的應(yīng)用程序的設(shè)置信息保存和讀取更加方便。序列化有很多好處,比如,在一臺(tái)機(jī)器上產(chǎn)生一個(gè)實(shí)例,初始化完畢,然后可以序列化,通過(guò)網(wǎng)絡(luò)傳送到另一臺(tái)機(jī)器,然后反序列化,得到對(duì)象實(shí)例,之后再執(zhí)行某些業(yè)務(wù)邏輯,得到結(jié)果,再序列化,返回第一臺(tái)機(jī)器,第一臺(tái)機(jī)器得到對(duì)象實(shí)例,得到結(jié)果。
反序列化的一個(gè)原因是將對(duì)象的狀態(tài)保持在存儲(chǔ)媒體中,以便可以在以后重新創(chuàng)建精確的副本;另一個(gè)原因是通過(guò)值將對(duì)象從一個(gè)應(yīng)用程序域發(fā)送到另一個(gè)應(yīng)用程序域中。例如,序列化可用于在ASP.NET中保存會(huì)話狀態(tài)并將對(duì)象復(fù)制到Windows窗體的剪貼板中。遠(yuǎn)程處理還可以使用序列化通過(guò)值將對(duì)象從一個(gè)應(yīng)用程序域傳遞到另一個(gè)應(yīng)用程序域中。
根據(jù)本申請(qǐng)的實(shí)施例,提供了一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法。
圖1是根據(jù)本申請(qǐng)實(shí)施例的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法的流程圖。如圖1所示,該方法包括以下步驟:
步驟S101,獲取Json格式的目標(biāo)文檔。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法中,獲取Json格式的目標(biāo)文檔包括:在多個(gè)文檔中確定Json格式的文檔;從Json格式的文檔中確定Json格式的目標(biāo)文檔的絕對(duì)路徑;以及從絕對(duì)路徑中讀取Json格式的目標(biāo)文檔。
例如,Json格式的目標(biāo)文檔的絕對(duì)路徑為C:\SPCSPL\jobIni.Json.txt;用FileStream和StreamReader等類讀取文件,獲取到Json格式的目標(biāo)文檔。獲取到的Json格式的目標(biāo)文檔是字符串的形式。
步驟S102,將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法中,將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔包括:調(diào)用BsonDocument類將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
步驟S103,將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系。
例如,設(shè)置BsonClassMap類實(shí)例,指定Bson格式的目標(biāo)文檔的屬性與.NET強(qiáng)類型屬性的映射關(guān)系。
步驟S104,將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
為了保證后續(xù)在非關(guān)系型數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)進(jìn)行反序列化時(shí)不容易出錯(cuò),在對(duì)文檔進(jìn)行存儲(chǔ)前,提前將其轉(zhuǎn)換為強(qiáng)類型,從而保證了后續(xù)在讀取非關(guān)系型數(shù)據(jù)庫(kù)并反序列化時(shí)不容易出錯(cuò)。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法中,非關(guān)系型數(shù)據(jù)庫(kù)為mongodb。
將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔可以調(diào)用BsonDocument類實(shí)例讀取BsonDocument文檔,調(diào)用BsonClass MapSerializer類實(shí)例,通過(guò)Bson讀取器和BsonClassMap的信息,即能夠得到強(qiáng)類型的目標(biāo)文檔。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法中,將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)包括:調(diào)用MongoDatabase類和MongodbCollection類對(duì)強(qiáng)類型的目標(biāo)文檔進(jìn)行序列化處理;以及將序列化處理后的強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
在將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)之前,提前調(diào)用MongoDatabase類和MongodbCollection類對(duì)強(qiáng)類型的目標(biāo)文檔進(jìn)行序列化處理,即提前做一個(gè)序列化處理,從而保證了后續(xù)在讀取非關(guān)系型數(shù)據(jù)庫(kù)并反序列化時(shí)不容易出錯(cuò)。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法中,在將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)之后,該方法還包括:讀取mongodb中存儲(chǔ)的文 檔;對(duì)讀取到的mongodb中存儲(chǔ)的文檔進(jìn)行反序列化處理;以及將反序列化處理后的文檔發(fā)送至目標(biāo)地址。
即將Bson格式的目標(biāo)文檔的屬性轉(zhuǎn)換為強(qiáng)類型,再存儲(chǔ)到mongodb中,在讀取mongodb中存儲(chǔ)的文檔時(shí),會(huì)對(duì)讀取到的mongodb中存儲(chǔ)的文檔進(jìn)行反序列化處理;由于mongodb中存儲(chǔ)的都是強(qiáng)類型的目標(biāo)文本,在對(duì)其進(jìn)行反序列化處理時(shí),保證了不容易出錯(cuò),并將反序列化處理后的文檔發(fā)送至目標(biāo)地址。
本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法,通過(guò)獲取Json格式的目標(biāo)文檔;將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù),解決了相關(guān)技術(shù)中由于將Json格式的文檔直接拷貝進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致后續(xù)讀取非關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)容易出錯(cuò)的問(wèn)題。即先將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔,再將Bson格式的目標(biāo)文檔的屬性轉(zhuǎn)換為強(qiáng)類型,再存儲(chǔ)到非關(guān)系型數(shù)據(jù)庫(kù)中,進(jìn)而達(dá)到了保證后續(xù)在非關(guān)系型數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)進(jìn)行反序列化時(shí)不容易出錯(cuò)的效果。
需要說(shuō)明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本申請(qǐng)實(shí)施例還提供了一種非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置,需要說(shuō)明的是,本申請(qǐng)實(shí)施例的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置可以用于執(zhí)行本申請(qǐng)實(shí)施例所提供的用于非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)方法。以下對(duì)本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置進(jìn)行介紹。
圖2是根據(jù)本申請(qǐng)實(shí)施例的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置的示意圖。如圖2所示,該裝置包括:獲取單元10、轉(zhuǎn)化單元20、創(chuàng)建單元30和存儲(chǔ)單元40。
獲取單元10,用于獲取Json格式的目標(biāo)文檔。
轉(zhuǎn)化單元20,用于將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
創(chuàng)建單元30,用于將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系。
存儲(chǔ)單元40,用于將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置,通過(guò)獲取單元10獲取 Json格式的目標(biāo)文檔;轉(zhuǎn)化單元20將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;創(chuàng)建單元30將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及存儲(chǔ)單元40將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù),解決了相關(guān)技術(shù)中由于將Json格式的文檔直接拷貝進(jìn)非關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致后續(xù)讀取非關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)容易出錯(cuò)的問(wèn)題,即先轉(zhuǎn)化單元20將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔,再存儲(chǔ)單元40將Bson格式的目標(biāo)文檔的屬性轉(zhuǎn)換為強(qiáng)類型,再存儲(chǔ)到非關(guān)系型數(shù)據(jù)庫(kù)中,進(jìn)而達(dá)到了保證后續(xù)在非關(guān)系型數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)進(jìn)行反序列化時(shí)不容易出錯(cuò)的效果。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置中,轉(zhuǎn)化單元20還用于調(diào)用BsonDocument類將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置中,存儲(chǔ)單元40包括:處理模塊,用于調(diào)用MongoDatabase類和MongodbCollection類對(duì)強(qiáng)類型的目標(biāo)文檔進(jìn)行序列化處理;以及存儲(chǔ)模塊,用于將序列化處理后的強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
可選地,在本申請(qǐng)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置中,獲取單元10包括:第一確定模塊,用于在多個(gè)文檔中確定Json格式的文檔;第二確定模塊,用于從Json格式的文檔中確定Json格式的目標(biāo)文檔的絕對(duì)路徑;以及讀取模塊,用于從絕對(duì)路徑中讀取Json格式的目標(biāo)文檔。
所述非關(guān)系型數(shù)據(jù)庫(kù)中的文檔存儲(chǔ)裝置包括處理器和存儲(chǔ)器,上述獲取單元、轉(zhuǎn)化單元、創(chuàng)建單元和存儲(chǔ)單元等均作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的上述程序單元實(shí)現(xiàn)相應(yīng)功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲(chǔ)器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過(guò)調(diào)整內(nèi)核參數(shù)存儲(chǔ)非關(guān)系型數(shù)據(jù)庫(kù)中的文檔。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。
本申請(qǐng)還提供了一種計(jì)算機(jī)程序產(chǎn)品的實(shí)施例,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:獲取Json格式的目標(biāo)文檔;將Json格式的目標(biāo)文檔轉(zhuǎn)化為Bson格式的目標(biāo)文檔;將Bson格式的目標(biāo)文檔的屬性與面向?qū)ο髲?qiáng)類型屬性建立映射關(guān)系;以及將與面向?qū)ο髲?qiáng)類型屬性已建立映射關(guān)系的Bson格式的目標(biāo)文檔轉(zhuǎn)化為強(qiáng)類型的目標(biāo)文檔,并將強(qiáng)類型的目標(biāo)文檔存儲(chǔ)至非關(guān)系型數(shù)據(jù)庫(kù)。
需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置,可通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本申請(qǐng)的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本申請(qǐng)不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本申請(qǐng)的優(yōu)選實(shí)施例,并不用于限制本申請(qǐng),對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的保護(hù)范圍之內(nèi)。