數(shù)據(jù)庫操作方法、裝置及服務(wù)器的制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)庫操作方法、裝置及服務(wù)器,屬于數(shù)據(jù)庫領(lǐng)域。所述方法包括:通過接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一API的調(diào)用請求;根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與該對象對應(yīng)的數(shù)據(jù)庫,和在該數(shù)據(jù)庫中與該對象對應(yīng)的數(shù)據(jù)表;在被調(diào)用的統(tǒng)一API所對應(yīng)的n個數(shù)據(jù)庫腳本中,調(diào)用與該數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫腳本對該數(shù)據(jù)表進行數(shù)據(jù)操作;解決了操作不同的非關(guān)系型數(shù)據(jù)庫需要使用具有很大區(qū)別的不同數(shù)據(jù)庫腳本進行數(shù)據(jù)操作的問題;達到了操作非關(guān)系型數(shù)據(jù)庫時不需要了解并編寫大量執(zhí)行腳本,只需要使用統(tǒng)一API就可以實現(xiàn)在不同的非關(guān)系型數(shù)據(jù)庫中操作數(shù)據(jù)的效果,減少了開發(fā)工作量,降低了應(yīng)用程序與非關(guān)系型數(shù)據(jù)庫的耦合,提高了開發(fā)效率。
【專利說明】數(shù)據(jù)庫操作方法、裝置及服務(wù)器
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,特別涉及一種數(shù)據(jù)庫操作方法、裝置及服務(wù)器。
【背景技術(shù)】
[0002] 非關(guān)系型數(shù)據(jù)庫廣泛應(yīng)用于web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的 SNS (Social Networking Services,社會性網(wǎng)絡(luò)服務(wù))類型的web2.0純動態(tài)網(wǎng)站。
[0003] 非關(guān)系型數(shù)據(jù)庫與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有很多不同。最重要的一點是,非關(guān)系型 數(shù)據(jù)庫不使用通用的SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)語言作為查詢語 言,其數(shù)據(jù)存儲不需要固定的表格模式。為此,對不同類型的非關(guān)系型數(shù)據(jù)庫進行數(shù)據(jù)操作 時,需要使用與該類型的非關(guān)系型數(shù)據(jù)庫相對應(yīng)的數(shù)據(jù)庫腳本,比如,對A類型的非關(guān)系型 數(shù)據(jù)庫進行數(shù)據(jù)操作,則需要使用與A類型的非關(guān)系型數(shù)據(jù)庫相對應(yīng)的數(shù)據(jù)庫腳本A ;對B 類型的非關(guān)系型數(shù)據(jù)庫進行數(shù)據(jù)操作,則需要使用與B類型的非關(guān)系型數(shù)據(jù)庫相對應(yīng)的數(shù) 據(jù)庫腳本B。
[0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005] 由于非關(guān)系型數(shù)據(jù)庫沒有統(tǒng)一規(guī)范,不同的非關(guān)系型數(shù)據(jù)庫需要使用具有很大區(qū) 別的不同數(shù)據(jù)庫腳本進行數(shù)據(jù)操作,在開發(fā)過程中,需要了解并編寫大量的數(shù)據(jù)庫腳本,浪 費較多的人力和物力。
【發(fā)明內(nèi)容】
[0006] 為了解決在非關(guān)系型數(shù)據(jù)庫開發(fā)過程中需要了解并編寫大量的數(shù)據(jù)庫腳本的問 題,本發(fā)明實施例提供了一種數(shù)據(jù)庫操作方法、裝置及服務(wù)器。所述技術(shù)方案如下:
[0007] 第一方面,提供了一種數(shù)據(jù)庫操作方法,所述方法包括:
[0008] 接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一 API的調(diào)用請求,所述調(diào)用請求用于對對象進行 數(shù)據(jù)操作,所述映射工具提供至少一個統(tǒng)一 API,每個統(tǒng)一 API對應(yīng)η個數(shù)據(jù)庫腳本,同一個 統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本具有相同的功能且分別對應(yīng)一種類型的非關(guān)系型數(shù)據(jù)庫;
[0009] 根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與所述對象對應(yīng)的數(shù)據(jù)庫,和在所述數(shù)據(jù)庫中與所 述對象對應(yīng)的數(shù)據(jù)表;
[0010] 在被調(diào)用的所述統(tǒng)一 API所對應(yīng)的η個數(shù)據(jù)庫腳本中,調(diào)用與所述數(shù)據(jù)庫對應(yīng)的 數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
[0011] 第二方面,提供了一種數(shù)據(jù)庫操作裝置,所述裝置包括:
[0012] 第一接收模塊,用于接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一 API的調(diào)用請求,所述調(diào)用 請求用于對對象進行數(shù)據(jù)操作,所述映射工具提供至少一個統(tǒng)一 API,每個統(tǒng)一 API對應(yīng)η 個數(shù)據(jù)庫腳本,同一個統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本具有相同的功能且分別對應(yīng)一種類 型的非關(guān)系型數(shù)據(jù)庫;
[0013] 關(guān)系確定模塊,用于根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與所述對象對應(yīng)的數(shù)據(jù)庫和在 所述數(shù)據(jù)庫中與所述對象對應(yīng)的數(shù)據(jù)表;
[0014] 腳本調(diào)用模塊,用于在被調(diào)用的所述統(tǒng)一 API所對應(yīng)的η個數(shù)據(jù)庫腳本中,調(diào)用與 所述數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
[0015] 第三方面,提供了一種服務(wù)器,所述服務(wù)器包括如上第二方面所述的數(shù)據(jù)庫操作 裝直。
[0016] 本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0017] 通過接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一 API的調(diào)用請求;根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系 確定與該對象對應(yīng)的數(shù)據(jù)庫和在該數(shù)據(jù)庫中與該對象對應(yīng)的數(shù)據(jù)表;在被調(diào)用的統(tǒng)一 API 所對應(yīng)的η個數(shù)據(jù)庫腳本中,調(diào)用與該數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫腳本對該數(shù)據(jù)表進行數(shù)據(jù)操 作;解決了操作不同的非關(guān)系型數(shù)據(jù)庫需要使用具有很大區(qū)別的不同數(shù)據(jù)庫腳本進行數(shù)據(jù) 操作的問題;達到了操作非關(guān)系型數(shù)據(jù)庫時不需要了解并編寫大量執(zhí)行腳本,只需要使用 一些簡單的統(tǒng)一 API就可以實現(xiàn)在不同的非關(guān)系型數(shù)據(jù)庫中操作數(shù)據(jù)的效果,減少了開發(fā) 工作量,降低了應(yīng)用程序與非關(guān)系型數(shù)據(jù)庫的耦合,提高了開發(fā)效率。
【專利附圖】
【附圖說明】
[0018] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0019] 圖1是本發(fā)明一個實施例提供的數(shù)據(jù)庫操作方法所涉及的實施環(huán)境的結(jié)構(gòu)示意 圖;
[0020] 圖2是本發(fā)明一個實施例提供的數(shù)據(jù)庫操作方法的方法流程圖;
[0021] 圖3是本發(fā)明另一個實施例提供的數(shù)據(jù)庫操作方法的方法流程圖;
[0022] 圖4是本發(fā)明一個實施例提供的數(shù)據(jù)庫操作裝置的結(jié)構(gòu)方框圖;
[0023] 圖5是本發(fā)明另一個實施例提供的數(shù)據(jù)庫操作裝置的結(jié)構(gòu)方框圖;
[0024] 圖6是本發(fā)明一個實施例提供的服務(wù)器的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方 式作進一步地詳細描述。
[0026] 請參考圖1,其示出了本發(fā)明一個實施例提供的數(shù)據(jù)庫操作方法所涉及的實施環(huán) 境的結(jié)構(gòu)示意圖。該實施環(huán)境包括應(yīng)用程序110、運行有映射工具的裝置130、至少一個數(shù) 據(jù)庫腳本150和至少一個與該數(shù)據(jù)庫腳本150對應(yīng)的數(shù)據(jù)庫170。
[0027] 裝置130中運行有映射工具,該映射工具預(yù)先提供有η個統(tǒng)一 API,每個統(tǒng)一 API 用于實現(xiàn)一種數(shù)據(jù)操作,數(shù)據(jù)操作包括:增加、刪除、查詢和修改等。每個統(tǒng)一 API對應(yīng)的 η個數(shù)據(jù)庫腳本,這η個數(shù)據(jù)庫腳本具有相同的功能且分別對應(yīng)一種類型的非關(guān)系型數(shù)據(jù) 庫。
[0028] 應(yīng)用程序110可以訪問運行有映射工具的裝置130。應(yīng)用程序110通過統(tǒng)一 API 可以調(diào)用引映射工具130。
[0029] 裝置130經(jīng)過初始配置后,可以調(diào)用數(shù)據(jù)庫腳本150來對數(shù)據(jù)庫170進行數(shù)據(jù) 操作。數(shù)據(jù)庫170可以是各種非關(guān)系型數(shù)據(jù)庫,比如:redis數(shù)據(jù)庫、Memcached數(shù)據(jù)庫和 MongoDB數(shù)據(jù)庫。
[0030] 首先對本發(fā)明實施例中涉及的一些名詞進行解釋:
[0031] 映射工具:預(yù)先整合開發(fā)的一個工具包,比如采用java語言開發(fā)的jar包。該工 具包將各種類型的非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫腳本封裝為統(tǒng)一API。也即,該映射工具預(yù)先提 供有η個統(tǒng)一 API,每個統(tǒng)一 API用于實現(xiàn)一種數(shù)據(jù)操作,數(shù)據(jù)操作包括:增加、刪除、查詢 和修改等。每個統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本,這η個數(shù)據(jù)庫腳本具有相同的功能且分 別對應(yīng)一種類型的非關(guān)系型數(shù)據(jù)庫。
[0032] 統(tǒng)一 API (Application Programming Interface,應(yīng)用程序編程接口):每個統(tǒng)一 API對應(yīng)η個數(shù)據(jù)庫腳本,同一個統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本具有相同的功能且分別對 應(yīng)一種類型的非關(guān)系型數(shù)據(jù)庫。統(tǒng)一 API包括增加對象API、刪除對象API、查詢對象API 和修改對象API中的至少一種。以表1為例:
[0033]
【權(quán)利要求】
1. 一種數(shù)據(jù)庫操作方法,其特征在于,所述方法包括: 接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一 API的調(diào)用請求,所述調(diào)用請求用于對對象進行數(shù)據(jù) 操作,所述映射工具提供至少一個統(tǒng)一 API,每個統(tǒng)一 API對應(yīng)η個數(shù)據(jù)庫腳本,同一個統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本具有相同的功能且分別對應(yīng)一種類型的非關(guān)系型數(shù)據(jù)庫; 根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與所述對象對應(yīng)的數(shù)據(jù)庫和在所述數(shù)據(jù)庫中與所述對 象對應(yīng)的數(shù)據(jù)表; 在被調(diào)用的所述統(tǒng)一 API所對應(yīng)的η個數(shù)據(jù)庫腳本中,調(diào)用與所述數(shù)據(jù)庫對應(yīng)的數(shù)據(jù) 庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一API 的調(diào)用請求之前,所述方法還包括: 接收對所述映射工具的配置請求; 根據(jù)所述配置請求配置各個數(shù)據(jù)庫的連接信息和數(shù)據(jù)庫類型,所述連接信息包括IP 地址、端口、用戶名和密碼; 根據(jù)所述配置請求配置各個對象與各個數(shù)據(jù)庫中的數(shù)據(jù)表的對應(yīng)關(guān)系。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與所 述對象對應(yīng)的數(shù)據(jù)庫和在所述數(shù)據(jù)庫中與所述對象對應(yīng)的數(shù)據(jù)表,包括: 根據(jù)所述各個對象與各個數(shù)據(jù)庫中的數(shù)據(jù)表的對應(yīng)關(guān)系,查詢與所述對象對應(yīng)的數(shù)據(jù) 庫,和在所述數(shù)據(jù)庫中與所述對象對應(yīng)的數(shù)據(jù)表。
4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在被調(diào)用的所述統(tǒng)一 API對應(yīng)的η個 數(shù)據(jù)庫腳本中,調(diào)用與所述數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作,包括: 獲取與所述對象對應(yīng)的數(shù)據(jù)庫的數(shù)據(jù)庫類型; 通過所述連接信息與所述數(shù)據(jù)庫建立連接; 在所述連接建立后,從被調(diào)用的所述統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本中調(diào)用與所述數(shù) 據(jù)庫類型對應(yīng)的數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述各個對象與各個數(shù)據(jù)庫中 的數(shù)據(jù)表的對應(yīng)關(guān)系,查詢與所述對象對應(yīng)的數(shù)據(jù)庫,和在所述數(shù)據(jù)庫中與所述對象對應(yīng) 的數(shù)據(jù)表之后,還包括: 若與所述對象對應(yīng)的數(shù)據(jù)庫尚不存在,則創(chuàng)建所述數(shù)據(jù)庫; 若與所述對象對應(yīng)的數(shù)據(jù)庫存在但與所述對象對應(yīng)的數(shù)據(jù)表不存在,則創(chuàng)建所述數(shù)據(jù) 表; 若與所述對象對應(yīng)的數(shù)據(jù)表存在但在所述數(shù)據(jù)表中與所述對象的屬性所對應(yīng)的表字 段不存在,則創(chuàng)建所述表字段。
6. 根據(jù)權(quán)利要求1至5任一所述的方法,其特征在于,所述統(tǒng)一 API包括增加對象API、 刪除對象API、查詢對象API和修改對象API中的至少一種。
7. -種數(shù)據(jù)庫操作裝置,其特征在于,所述裝置包括: 第一接收模塊,用于接收應(yīng)用程序?qū)τ成涔ぞ咧薪y(tǒng)一 API的調(diào)用請求,所述調(diào)用請求 用于對對象進行數(shù)據(jù)操作,所述映射工具提供至少一個統(tǒng)一 API,每個統(tǒng)一 API對應(yīng)η個數(shù) 據(jù)庫腳本,同一個統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳本具有相同的功能且分別對應(yīng)一種類型的 非關(guān)系型數(shù)據(jù)庫; 關(guān)系確定模塊,用于根據(jù)預(yù)設(shè)配置的對應(yīng)關(guān)系確定與所述對象對應(yīng)的數(shù)據(jù)庫和在所述 數(shù)據(jù)庫中與所述對象對應(yīng)的數(shù)據(jù)表; 腳本調(diào)用模塊,用于在被調(diào)用的所述統(tǒng)一 API所對應(yīng)的η個數(shù)據(jù)庫腳本中,調(diào)用與所述 數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置,還包括: 第二接收模塊,用于接收對所述映射工具的配置請求; 信息配置模塊,用于根據(jù)所述配置請求配置各個數(shù)據(jù)庫的連接信息和數(shù)據(jù)庫類型,所 述連接信息包括IP地址、端口、用戶名和密碼; 關(guān)系配置模塊,用于根據(jù)所述配置請求配置各個對象與各個數(shù)據(jù)庫中的數(shù)據(jù)表的對應(yīng) 關(guān)系。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述關(guān)系確定模塊,包括: 查詢對應(yīng)單元,用于根據(jù)所述各個對象與各個數(shù)據(jù)庫中的數(shù)據(jù)表的對應(yīng)關(guān)系,查詢與 所述對象對應(yīng)的數(shù)據(jù)庫,和在所述數(shù)據(jù)庫中與所述對象對應(yīng)的數(shù)據(jù)表。
10. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述腳本調(diào)用模塊,包括: 類型獲取單元,用于獲取與所述對象對應(yīng)的數(shù)據(jù)庫的數(shù)據(jù)庫類型; 連接建立單元,用于通過所述連接信息與所述數(shù)據(jù)庫建立連接; 腳本調(diào)用單元,用于在所述連接建立后,從被調(diào)用的所述統(tǒng)一 API對應(yīng)的η個數(shù)據(jù)庫腳 本中調(diào)用與所述數(shù)據(jù)庫類型對應(yīng)的數(shù)據(jù)庫腳本對所述數(shù)據(jù)表進行數(shù)據(jù)操作。
11. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置,還包括: 創(chuàng)建數(shù)據(jù)庫模塊,用于若與所述對象對應(yīng)的數(shù)據(jù)庫尚不存在,則創(chuàng)建所述數(shù)據(jù)庫; 創(chuàng)建數(shù)據(jù)表模塊,用于若與所述對象對應(yīng)的數(shù)據(jù)庫存在但與所述對象對應(yīng)的數(shù)據(jù)表不 存在,則創(chuàng)建所述數(shù)據(jù)表; 創(chuàng)建表字段模塊,用于若與所述對象對應(yīng)的數(shù)據(jù)表存在但在所述數(shù)據(jù)表中與所述對象 的屬性所對應(yīng)的表字段不存在,則創(chuàng)建所述表字段。
12. 根據(jù)權(quán)利要求7至11任一所述的裝置,其特征在于,所述統(tǒng)一 API包括增加對象 API、刪除對象API、查詢對象API和修改對象API中的至少一種。
13. -種數(shù)據(jù)庫操作服務(wù)器,其特征在于,所述服務(wù)器包括如上權(quán)利要求7至權(quán)利要求 12任一所述的數(shù)據(jù)庫操作裝置。
【文檔編號】G06F9/44GK104267932SQ201410395778
【公開日】2015年1月7日 申請日期:2014年8月12日 優(yōu)先權(quán)日:2014年8月12日
【發(fā)明者】林小虎 申請人:廣州華多網(wǎng)絡(luò)科技有限公司