本發(fā)明涉及數(shù)據(jù)庫信息處理領(lǐng)域,具體而言,涉及一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法及裝置。
背景技術(shù):
關(guān)系數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)?,F(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)系均用關(guān)系模型來表示。標準數(shù)據(jù)查詢語言SQL就是一種基于關(guān)系數(shù)據(jù)庫的語言,這種語言執(zhí)行對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的檢索和操作。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整性約束三部分組成。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
非關(guān)系型數(shù)據(jù)庫特點是無需經(jīng)過SQL層解析,讀寫性能高;基于鍵值對存儲,擴展性強。對于那些具有數(shù)據(jù)訪問壓力的系統(tǒng)使用非關(guān)系型數(shù)據(jù)庫是首選。但是數(shù)據(jù)落地后,非關(guān)系型數(shù)據(jù)庫的分析統(tǒng)計存在明顯不足,這就需要轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中進行分析統(tǒng)計。目前沒有成熟的產(chǎn)品支持從非關(guān)系型數(shù)據(jù)庫到關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換。如果有特定的需求,需要寫三部分程序來完成任務(wù):1,編寫程序把非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)抽取出來。2,編寫程序?qū)⒎顷P(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫做字段映射。3,編寫程序?qū)⒂成浜玫臄?shù)據(jù)寫入關(guān)系型數(shù)據(jù)庫。一旦需求變更,需要修改程序。當有新的數(shù)據(jù)需要轉(zhuǎn)換時,需要重復以上三個步驟,這樣不僅需要投入大量的人力物力,還存在許多重復工作。
因此,需要一種新的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法及裝置。
在所述背景技術(shù)部分公開的上述信息僅用于加強對本發(fā)明的背景的理解,因此它可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提供一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法及裝置,能夠?qū)⒎顷P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)自動、高效的轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,節(jié)約人力與時間成本。
本發(fā)明的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本發(fā)明的實踐而習得。
根據(jù)本發(fā)明的一方面,提出一種用于將非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,該方法包括:
由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù);
通過配置信息對數(shù)據(jù)進行篩選,以獲得第一數(shù)據(jù);
通過預定規(guī)則對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù);以及
將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中。
在本公開的一種示例性實施例中,還包括:
將配置信息加載到內(nèi)存中。
在本公開的一種示例性實施例中,還包括:
通過javaIO技術(shù)將配置信息加載到內(nèi)存中。
在本公開的一種示例性實施例中,配置信息包括:
非關(guān)系型數(shù)據(jù)庫的連接池信息、關(guān)系型數(shù)據(jù)庫的連接池信息、字段映射信息以及配置篩選條件。
在本公開的一種示例性實施例中,字段映射信息在內(nèi)存中為key-value形式的注冊表。
在本公開的一種示例性實施例中,由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù),包括:
通過非關(guān)系型數(shù)據(jù)庫的連接池中獲取鏈接;以及
通過連接獲取非關(guān)系數(shù)據(jù)庫的數(shù)據(jù)。
在本公開的一種示例性實施例中,根據(jù)配置信息批量抽取數(shù)據(jù)。
在本公開的一種示例性實施例中,通過預定規(guī)則對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù),包括:
獲取注冊表中的字段信息;
根據(jù)key值,獲取要轉(zhuǎn)換的目標值;
根據(jù)目標值對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù)。
在本公開的一種示例性實施例中,將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中,包括:
建立關(guān)系型數(shù)據(jù)庫的連接;
通過連接將第二數(shù)據(jù)數(shù)據(jù)存儲到關(guān)系型數(shù)據(jù)庫中。
在本公開的一種示例性實施例中,通過連接將第二數(shù)據(jù)數(shù)據(jù)批量存儲到關(guān)系型數(shù)據(jù)庫中。
在本公開的一種示例性實施例中,非關(guān)系型數(shù)據(jù)庫的連接池信息,包括:
mongodb連接池信息。
在本公開的一種示例性實施例中,關(guān)系型數(shù)據(jù)庫的連接池信息,包括:
mysql連接池信息。
在本公開的一種示例性實施例中,按照分頁批量抽取數(shù)據(jù)。
根據(jù)本發(fā)明的一方面,提出一種用于將非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的裝置,該裝置包括:
數(shù)據(jù)獲取模塊,用于由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù);
數(shù)據(jù)篩選模塊,用于通過配置信息對數(shù)據(jù)進行篩選,以獲得第一數(shù)據(jù);
數(shù)據(jù)轉(zhuǎn)換模塊,用于通過預定規(guī)則對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù);以及
數(shù)據(jù)儲存模塊,用于建立數(shù)據(jù)庫連接,將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中。
在本公開的一種示例性實施例中,還包括:
內(nèi)存加載模塊,用于將配置信息加載到內(nèi)存中。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法及裝置,能夠?qū)⒎顷P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)自動、高效的轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,節(jié)約人力與時間成本。
應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性的,并不能限制本發(fā)明。
附圖說明
通過參照附圖詳細描述其示例實施例,本發(fā)明的上述和其它目標、特征及優(yōu)點將變得更加顯而易見。下面描述的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。
圖2是根據(jù)另一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。
圖3是根據(jù)另一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。
圖4是根據(jù)一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的裝置的框圖。
具體實施例
現(xiàn)在將參考附圖更全面地描述示例實施例。然而,示例實施例能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的實施例;相反,提供這些實施例使得本發(fā)明將全面和完整,并將示例實施例的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復描述。
此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施例中。在下面的描述中,提供許多具體細節(jié)從而給出對本發(fā)明的實施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本發(fā)明的技術(shù)方案而沒有特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知方法、裝置、實現(xiàn)或者操作以避免模糊本發(fā)明的各方面。
附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應(yīng)。即,可以采用軟件形式來實現(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。
附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實際執(zhí)行的順序有可能根據(jù)實際情況改變。
應(yīng)理解,雖然本文中可能使用術(shù)語第一、第二、第三等來描述各種組件,但這些組件不應(yīng)受這些術(shù)語限制。這些術(shù)語乃用以區(qū)分一組件與另一組件。因此,下文論述的第一組件可稱為第二組件而不偏離本公開概念的教示。如本文中所使用,術(shù)語“及/或”包括相關(guān)聯(lián)的列出項目中的任一個及一或多者的所有組合。
本領(lǐng)域技術(shù)人員可以理解,附圖只是示例實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的,因此不能用于限制本發(fā)明的保護范圍。
圖1是根據(jù)一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。
如圖1所示,在S102中,由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù)。
如上文所述,本發(fā)明實施例的目的是將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。簡單來說,關(guān)系模型指的就是二維表格模型,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。關(guān)系模型中常用的概念:關(guān)系:可以理解為一張二維表,每個關(guān)系都具有一個關(guān)系名,就是通常說的表名。元組:可以理解為二維表中的一行,在數(shù)據(jù)庫中經(jīng)常被稱為記錄。屬性:可以理解為二維表中的一列,在數(shù)據(jù)庫中經(jīng)常被稱為字段。域:屬性的取值范圍,也就是數(shù)據(jù)庫中某一列的取值限制。關(guān)鍵字:一組可以唯一標識元組的屬性,數(shù)據(jù)庫中常稱為主鍵,由一個或多個列組成。
非關(guān)系型數(shù)據(jù)庫用于指代那些非關(guān)系型的,分布式的,且一般不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。非關(guān)系型數(shù)據(jù)庫提出另一種理念,例如,以鍵值對存儲,且結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。使用這種方式,用戶可以根據(jù)需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫中,要對多表進行關(guān)聯(lián)查詢。僅需要根據(jù)id取出相應(yīng)的value就可以完成查詢。但非關(guān)系型數(shù)據(jù)庫由于很少的約束,他也不能夠提供像SQL所提供的where這種對于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計的完整性。他只適合存儲一些較為簡單的數(shù)據(jù),對于需要進行較復雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫顯的更為合適。根據(jù)關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的原理,簡單的數(shù)據(jù)傳輸,無法實現(xiàn)上述兩種數(shù)據(jù)庫之間的數(shù)據(jù)儲存。在進行兩個數(shù)據(jù)庫之間的數(shù)據(jù)處理時,首先獲取非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)。
在S104中,通過配置信息對數(shù)據(jù)進行篩選,以獲得第一數(shù)據(jù)。在本實施例中,配置信息可例如為用戶配置的篩選條件,通過篩選條件,對非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行篩選,進而獲得第一數(shù)據(jù)。在本發(fā)明實施例中,對于非關(guān)系型數(shù)據(jù)的數(shù)據(jù)篩選可例如為批量篩選。同時處理大量數(shù)據(jù)的篩選工作。
在S106中,通過預定規(guī)則對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù)。通過篩選得到第一數(shù)據(jù)之后,對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,可例如,獲取字段映射信息,根據(jù)字段信息的key值,與待轉(zhuǎn)換的目標值,對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,獲得第二數(shù)據(jù)。
在S108中,將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中。第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中的時候可例如為批量儲存也可為逐一儲存,本發(fā)明不以此為限。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,通過配置信息將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行篩選,然后通過預定的規(guī)則將篩選后的數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換的方式,能夠?qū)⒎顷P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)自動、高效的轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,節(jié)約人力與時間成本。
應(yīng)清楚地理解,本發(fā)明描述了如何形成和使用特定示例,但本發(fā)明的原理不限于這些示例的任何細節(jié)。相反,基于本發(fā)明公開的內(nèi)容的教導,這些原理能夠應(yīng)用于許多其它實施例。
在本公開的一種示例性實施例中,還包括:通過javaIO技術(shù)將配置信息加載到內(nèi)存中。javaIO是Java的核心庫,提供了全面的IO接口。包括:文件讀寫、標準設(shè)備輸出等。Java中IO是以流為基礎(chǔ)進行輸入輸出的,所有數(shù)據(jù)被串行化寫入輸出流,或者從輸入流讀入。
在本公開的一種示例性實施例中,配置信息包括:非關(guān)系型數(shù)據(jù)庫的連接池信息、關(guān)系型數(shù)據(jù)庫的連接池信息、字段映射信息以及配置篩選條件。數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。
在本公開的一種示例性實施例中,字段映射信息在內(nèi)存中為key-value形式的注冊表。所謂的key-value就是每次存儲一個數(shù)據(jù)時,是根據(jù)Key進行索引存儲的。key-value分布式存儲系統(tǒng)查詢速度快、存放數(shù)據(jù)量大、支持高并發(fā),非常適合通過主鍵進行查詢,但不能進行復雜的條件查詢。
在本公開的一種示例性實施例中,由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù),包括:通過非關(guān)系型數(shù)據(jù)庫的連接池中獲取鏈接;以及通過連接獲取非關(guān)系數(shù)據(jù)庫的數(shù)據(jù)。對于一個簡單的數(shù)據(jù)庫引用,用于對數(shù)據(jù)庫的訪問不是很頻繁。這時就可以簡單的在需要訪問數(shù)據(jù)庫時,就創(chuàng)建一個連接,用完后就關(guān)閉它,這樣做也不會帶來什么明顯的性能上的開銷。但是對于一個復雜的數(shù)據(jù)庫引用,頻繁的建立、關(guān)閉連接,會極大的減低系統(tǒng)的性能,因為對于連接的使用成了系統(tǒng)性能的瓶頸。對于共享資源,可例如,建立一個數(shù)據(jù)庫連接池,提供連接分配、使用策略。數(shù)據(jù)庫連接池的基本原理是在內(nèi)部對象池中維護一定數(shù)量的數(shù)據(jù)庫連接,并對外暴露數(shù)據(jù)庫連接獲取和返回方法。如:外部使用者可通過getConnection方法獲取連接,使用完畢后再通過releaseConnection方法將連接返回。
在本公開的一種示例性實施例中,根據(jù)配置信息批量抽取數(shù)據(jù)。在批量抽取數(shù)據(jù)時可例如,為了保證數(shù)據(jù)庫的穩(wěn)定,設(shè)定數(shù)據(jù)量抽取閾值,每次抽取的數(shù)據(jù)量均在該數(shù)值以下,還可例如,將數(shù)據(jù)庫的數(shù)據(jù)抽取工作分時處理,避免數(shù)據(jù)庫壓力,本發(fā)明不以此為限。
圖2是根據(jù)另一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。圖2中內(nèi)容是對圖1中S106的示例性描述。
如圖1所示,在S202中,獲取注冊表中的字段信息。如上文所述,字段映射信息在內(nèi)存中為key-value形式的注冊表??衫?,獲取key-value形式的注冊表中的字段信息。
在S204中,根據(jù)key值,獲取要轉(zhuǎn)換的目標值。可例如,根據(jù)key值,來獲取要轉(zhuǎn)換的目標值value。在本實施例中,可例如,通過預先設(shè)定的對應(yīng)關(guān)系文件,根據(jù)文件上的key與value對應(yīng)關(guān)系獲得目標value值,也可例如,根據(jù)現(xiàn)有技術(shù)中,程序處理中的函數(shù),實時通過key值獲取value值。本發(fā)明不以此為限。
在S206中,根據(jù)目標值對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù)。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,通過key-value之間的關(guān)系,將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行映射轉(zhuǎn)換的方式,能夠在非關(guān)系型數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫之間進行數(shù)據(jù)轉(zhuǎn)換時,通過簡單的配置即可實現(xiàn),大大增加了工作效率還減少了工作成本。
在本公開的一種示例性實施例中,將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中,包括:建立關(guān)系型數(shù)據(jù)庫的連接;通過連接將第二數(shù)據(jù)數(shù)據(jù)存儲到關(guān)系型數(shù)據(jù)庫中。如上文所述,連接池是對于一個復雜的數(shù)據(jù)庫引用,頻繁的建立、關(guān)閉連接時,不減低系統(tǒng)的性能的方式。
在本公開的一種示例性實施例中,通過連接將第二數(shù)據(jù)數(shù)據(jù)批量存儲到關(guān)系型數(shù)據(jù)庫中。
在本公開的一種示例性實施例中,非關(guān)系型數(shù)據(jù)庫的連接池信息,包括:mongodb連接池信息。mongodb是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引
在本公開的一種示例性實施例中,關(guān)系型數(shù)據(jù)庫的連接池信息,包括:mysql連接池信息。mysql是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),mysql是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。mysql所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。
在本公開的一種示例性實施例中,按照分頁批量抽取數(shù)據(jù)。在本發(fā)明實時例中,分頁抽取數(shù)據(jù)可例如,將數(shù)據(jù)庫中包含的數(shù)據(jù)按照預定閾值進行分頁,每次處理當前頁面中的數(shù)據(jù)。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,通過分頁抽取數(shù)據(jù)的再進行數(shù)據(jù)轉(zhuǎn)換的方式,可以減輕數(shù)據(jù)庫實時處理數(shù)據(jù)的壓力。
圖3是根據(jù)另一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法的流程圖。
如圖3所述,在啟動時加載用戶配置信息。查詢是否有篩選條件,該篩選條件可例如為來自用戶配置的篩選條件,如果有篩選條件,則使用該條件進行數(shù)據(jù)篩選,該篩選條件可例如通過配置信息獲取。還可例如,如果沒有篩選條件,可使用系統(tǒng)自帶的默認條件對數(shù)據(jù)進行篩選。還可例如,獲取非關(guān)系型數(shù)據(jù)庫mongodb存儲的數(shù)據(jù)時,先在連接池中獲取鏈接,根據(jù)用戶配置的篩選條件批量抽取滿足條件的數(shù)據(jù)。篩選出數(shù)據(jù),進行數(shù)據(jù)轉(zhuǎn)換時,可例如,讀取注冊表中字段信息,根據(jù)key值,來獲取要轉(zhuǎn)換的目標值value,將數(shù)據(jù)做轉(zhuǎn)換。數(shù)據(jù)經(jīng)過轉(zhuǎn)換后,建立mysql的數(shù)據(jù)庫連接,將映射好的數(shù)據(jù)批量存儲到關(guān)系型數(shù)據(jù)庫mysql中在本實施例中,可例如,如上文所述,為了避免數(shù)據(jù)庫不穩(wěn)定的情況,可將數(shù)據(jù)庫內(nèi)的書進行分頁轉(zhuǎn)換,分頁轉(zhuǎn)換數(shù)據(jù)時,每次批量抽取的數(shù)據(jù)可以為當前頁面的數(shù)據(jù),在處理處理結(jié)束之后,繼續(xù)查詢是否有其他待處理的數(shù)據(jù),可例如,檢測用戶是否通過游標的移動獲取下一頁面的數(shù)據(jù),進而繼續(xù)執(zhí)行數(shù)據(jù)轉(zhuǎn)換操作。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,將非關(guān)系型數(shù)據(jù)抽取、關(guān)系映射、關(guān)系型數(shù)據(jù)庫存儲進行無縫的融合。整個過程對用戶是透明的,友好的。用戶只需配置需要的轉(zhuǎn)換列,并點擊轉(zhuǎn)換程序。工具即可自動、高效的將數(shù)據(jù)進行轉(zhuǎn)換。
本領(lǐng)域技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟被實現(xiàn)為由CPU執(zhí)行的計算機程序。在該計算機程序被CPU執(zhí)行時,執(zhí)行本發(fā)明提供的上述方法所限定的上述功能。所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
此外,需要注意的是,上述附圖僅是根據(jù)本發(fā)明示例性實施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時間順序。另外,也易于理解,這些處理可以是例如在多個模塊中同步或異步執(zhí)行的。
下述為本發(fā)明裝置實施例,可以用于執(zhí)行本發(fā)明方法實施例。對于本發(fā)明裝置實施例中未披露的細節(jié),請參照本發(fā)明方法實施例。
圖4是根據(jù)一示例性實施例示出的一種將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的裝置的框圖。
數(shù)據(jù)獲取模塊402用于由非關(guān)系數(shù)據(jù)庫獲取數(shù)據(jù)。
數(shù)據(jù)篩選模塊404用于通過配置信息對數(shù)據(jù)進行篩選,以獲得第一數(shù)據(jù)。
數(shù)據(jù)轉(zhuǎn)換模塊406用于通過預定規(guī)則對第一數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,以獲得第二數(shù)據(jù)。以及
數(shù)據(jù)儲存模塊408用于建立數(shù)據(jù)庫連接,將第二數(shù)據(jù)儲存到關(guān)系型數(shù)據(jù)庫中。
根據(jù)本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的裝置,通過配置信息將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行篩選,然后通過預定的規(guī)則將篩選后的數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換的方式,能夠?qū)⒎顷P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)自動、高效的轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,節(jié)約人力與時間成本。
在本公開的一種示例性實施例中,還包括:內(nèi)存加載模塊用于將配置信息加載到內(nèi)存中。
本領(lǐng)域技術(shù)人員可以理解上述各模塊可以按照實施例的描述分布于裝置中,也可以進行相應(yīng)變化唯一不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。
通過以上的實施例的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施例可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本發(fā)明實施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本發(fā)明實施例的方法。
通過以上的詳細描述,本領(lǐng)域的技術(shù)人員易于理解,根據(jù)本發(fā)明實施例的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法及裝置具有以下優(yōu)點中的一個或多個。
根據(jù)一些實施例,本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,通過配置信息將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行篩選,然后通過預定的規(guī)則將篩選后的數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換的方式,能夠?qū)⒎顷P(guān)系型數(shù)據(jù)庫的數(shù)據(jù)自動、高效的轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫中,節(jié)約人力與時間成本。
根據(jù)另一些實施例,本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,通過key-value之間的關(guān)系,將非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行映射轉(zhuǎn)換的方式,能夠在非關(guān)系型數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫之間進行數(shù)據(jù)轉(zhuǎn)換時,通過簡單的配置即可實現(xiàn),大大增加了工作效率還減少了工作成本。
根據(jù)另一些實施例,本發(fā)明的將非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到關(guān)系型數(shù)據(jù)庫的方法,將非關(guān)系型數(shù)據(jù)抽取、關(guān)系映射、關(guān)系型數(shù)據(jù)庫存儲進行無縫的融合。整個過程對用戶是透明的,友好的。用戶只需配置需要的轉(zhuǎn)換列,并點擊轉(zhuǎn)換程序。工具即可自動、高效的將數(shù)據(jù)進行轉(zhuǎn)換。
以上具體地示出和描述了本發(fā)明的示例性實施例。應(yīng)可理解的是,本發(fā)明不限于這里描述的詳細結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。
此外,本說明書說明書附圖所示出的結(jié)構(gòu)、比例、大小等,均僅用以配合說明書所公開的內(nèi)容,以供本領(lǐng)域技術(shù)人員了解與閱讀,并非用以限定本公開可實施的限定條件,故不具技術(shù)上的實質(zhì)意義,任何結(jié)構(gòu)的修飾、比例關(guān)系的改變或大小的調(diào)整,在不影響本公開所能產(chǎn)生的技術(shù)效果及所能實現(xiàn)的目的下,均應(yīng)仍落在本公開所公開的技術(shù)內(nèi)容得能涵蓋的范圍內(nèi)。同時,本說明書中所引用的如“上”、“第一”、“第二”及“一”等的用語,也僅為便于敘述的明了,而非用以限定本公開可實施的范圍,其相對關(guān)系的改變或調(diào)整,在無實質(zhì)變更技術(shù)內(nèi)容下,當也視為本發(fā)明可實施的范疇。