專利名稱:一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存數(shù)據(jù)庫應(yīng)用方法,更具體地說,本發(fā)明涉及的是一 種在使用內(nèi)存數(shù)據(jù)庫時(shí)數(shù)據(jù)庫的邏輯對(duì)象和數(shù)據(jù)按多用戶管理的實(shí)現(xiàn)方 法。
背景技術(shù):
現(xiàn)有技術(shù)中,隨著嵌入式軟件的廣泛應(yīng)用,軟件系統(tǒng)中需要保存的數(shù)據(jù) 大量出現(xiàn),內(nèi)存數(shù)據(jù)庫的需求大量增加。目前在嵌入式內(nèi)存數(shù)據(jù)庫領(lǐng)域中, 不論是商用的嵌入式數(shù)據(jù)庫或是各公司自行研發(fā)的內(nèi)存數(shù)據(jù)庫,都沒有提
出多用戶的概念,他們所支持的數(shù)據(jù)庫應(yīng)用模式也比較單一;如果上層應(yīng) 用需要按照業(yè)務(wù)特點(diǎn)不同使用數(shù)據(jù)庫提供的服務(wù),那么大部分情況是所有 的表存放在一起,更有甚者兩種完全不同的業(yè)務(wù)數(shù)據(jù)會(huì)耦合到一張表中, 不同用戶對(duì)數(shù)據(jù)庫的操作需要依據(jù)上層應(yīng)用來判斷,數(shù)據(jù)庫本身無法對(duì)不 同的用戶進(jìn)行區(qū)別管理。
對(duì)多用戶內(nèi)存數(shù)據(jù)庫需求的一個(gè)例子,是移動(dòng)通訊行業(yè)的多制式混用同 一設(shè)備概念的提出。在移動(dòng)通訊行業(yè)中,為了充分利用運(yùn)營商已有的網(wǎng)絡(luò), 業(yè)界廣泛提出了基站、基站控制器等硬件設(shè)備實(shí)現(xiàn)雙?;蚨嗄5那樾危?同 一個(gè)基站可以同時(shí)運(yùn)行不同制式標(biāo)準(zhǔn),類似基站可以同時(shí)提供 GSM/WCDMA雙模業(yè)務(wù),更有甚者可以同時(shí)多種模式存在。
那么對(duì)數(shù)據(jù)庫來說,多種模式的混合存放顯然是在增加了耦合,因此, 現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。本發(fā)明的目的在于提供一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法,在使用內(nèi)存 數(shù)據(jù)庫時(shí)通過對(duì)多用戶的管理,引入多用戶的管理方法以大幅度降低整個(gè) 軟件系統(tǒng)的復(fù)雜度,降低不同用戶數(shù)據(jù)的耦合程度。
本發(fā)明的技術(shù)方案包括
一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法,其包括以下步驟
A、 在內(nèi)存數(shù)據(jù)庫中引入用戶注冊(cè)表用于存放用戶相關(guān)信息;
B、 才艮據(jù)業(yè)務(wù)需求確定用戶,并對(duì)用戶所使用的表進(jìn)行注冊(cè);
C、 用戶只使用自己注冊(cè)的表以及其相關(guān)邏輯對(duì)象。
所述的方法,其中,所述步驟B還包括不同的用戶使用相同的表時(shí) 分別注冊(cè)自己的表。
所述的方法,其中,所述步驟B還包括不同的用戶^f吏用相同的表結(jié) 構(gòu)和表數(shù)據(jù)。
所述的方法,其中,所述步驟B還包括不同的用戶使用共用表結(jié)構(gòu), 并將其表數(shù)據(jù)分開存放。
所述的方法,其中,所述步驟B還包括不同的用戶使用不同的表結(jié) 構(gòu),和,不同的表數(shù)據(jù)。
所述的方法,其中,所述步驟C還包括在內(nèi)存數(shù)據(jù)庫啟動(dòng)時(shí),將用 戶所注冊(cè)的相關(guān)信息從文件中讀入內(nèi)存;所述內(nèi)存數(shù)據(jù)庫啟動(dòng)后,在數(shù)據(jù) 庫級(jí)別進(jìn)行用戶校-險(xiǎn),不允許用戶對(duì)沒有注冊(cè)的表進(jìn)行訪問。
所述的方法,其中,所述步驟C還包括不同用戶的凄t據(jù)庫操作以消 息的方式發(fā)送到相關(guān)公共進(jìn)程,等待排隊(duì)處理。
所述的方法,其中,所述數(shù)據(jù)庫操作包括存盤、數(shù)據(jù)同步。
本發(fā)明所提供的一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法,由于引入了對(duì)多用 戶的管理機(jī)制,將內(nèi)存數(shù)據(jù)庫的各種邏輯對(duì)象分用戶進(jìn)行了管理,可以從 根本上降低內(nèi)存數(shù)據(jù)庫不同業(yè)務(wù)用戶邏輯對(duì)象數(shù)據(jù)的耦合,減少了不同用戶之間的互相干擾狀態(tài),大幅度降低了軟件系統(tǒng)的復(fù)雜度。
圖l是本發(fā)明方法的共用表結(jié)構(gòu)和表數(shù)據(jù)場(chǎng)景下結(jié)構(gòu)圖; 圖2是本發(fā)明方法共用表結(jié)構(gòu)分別有自己的表數(shù)據(jù)場(chǎng)景下結(jié)構(gòu)圖; 圖3是本發(fā)明方法的表結(jié)構(gòu)和表數(shù)據(jù)完全分開場(chǎng)景下結(jié)構(gòu)圖。
具體實(shí)施方式
以下結(jié)合附圖,將對(duì)本發(fā)明各較佳實(shí)施例進(jìn)行更為詳細(xì)的說明 在內(nèi)存數(shù)據(jù)庫使用時(shí)候,首先引入用戶注冊(cè)表用來存放各個(gè)用戶的相關(guān) 信息。根據(jù)業(yè)務(wù)需求確定不同用戶后,再對(duì)用戶使用的表進(jìn)行注冊(cè),用戶 只可以使用自己注冊(cè)的表以及其相關(guān)的邏輯對(duì)象;不同的用戶使用相同的 表則分別注冊(cè)即可。在內(nèi)存數(shù)據(jù)庫啟動(dòng)后,不同用戶只能操作與其相關(guān)的表數(shù)據(jù), 一般情 況下沒備的物理屬性表不同的用戶都需要注冊(cè)才能擁有,這部分表用戶可 以根據(jù)具體情況設(shè)計(jì)在內(nèi)存中的存儲(chǔ)關(guān)系, 一般分如下三種l)使用相同 的表結(jié)構(gòu)和表數(shù)扭,如圖l所示;2)只共用表結(jié)構(gòu),表數(shù)據(jù)分開存放,如 圖2所示;3)表結(jié)構(gòu)和數(shù)據(jù)都完全分離,如圖3所示。一般對(duì)于業(yè)務(wù)表數(shù)據(jù),不同用戶需要分別注冊(cè);那么對(duì)于不同用戶表數(shù)據(jù)分別存儲(chǔ),對(duì)于某個(gè)用戶的操作記錄不會(huì)被其他用戶影響,這樣也就 不會(huì)有操作互相干擾的問題。只有注冊(cè)了的表,系統(tǒng)才會(huì)分配給內(nèi)存空間,沒有用戶注冊(cè)的表不分配 數(shù)據(jù)空間,這樣就可以大量節(jié)省內(nèi)存空間。當(dāng)某個(gè)用戶發(fā)起內(nèi)存數(shù)據(jù)庫相 關(guān)操作,則只能操作自己用戶的的表,比如事務(wù)操作和數(shù)據(jù)庫寫日志存盤 等。存盤進(jìn)程只有一個(gè),由多用戶共用,進(jìn)行串行處理,如果內(nèi)存數(shù)據(jù)庫 需要進(jìn)行熱備份,則內(nèi)存數(shù)據(jù)庫的同步也可以根據(jù)用戶區(qū)別進(jìn)行。也就是說由于本發(fā)明引入了多用戶的概念,在對(duì)內(nèi)存數(shù)據(jù)庫的所有操作中與業(yè)務(wù) 有關(guān)的都可以引入用戶概念,而不需要按業(yè)務(wù)分開處理的則可以選擇使用 公共功能。本發(fā)明方法主要包括以下處理步驟A、 對(duì)引入的用戶進(jìn)行注冊(cè);B、 根據(jù)業(yè)務(wù)用戶分類,配置注冊(cè)用戶擁有的表,各用戶分別注冊(cè)自 己需要的業(yè)務(wù)表,對(duì)于雙方都使用的公共表,雙方可以分別進(jìn)行注冊(cè);C、 內(nèi)存數(shù)據(jù)庫啟動(dòng)時(shí),將步驟A和步驟B注冊(cè)的相關(guān)信息從文件中 讀入內(nèi)存,數(shù)據(jù)庫啟動(dòng)后,業(yè)務(wù)用戶對(duì)數(shù)據(jù)庫的訪問,在數(shù)據(jù)庫級(jí)別進(jìn)行 用戶校驗(yàn),不允許用戶對(duì)沒有注冊(cè)的表進(jìn)行訪問。D、 不同用戶的數(shù)據(jù)庫操作如存盤、數(shù)據(jù)同步等以消息的方式發(fā)送到 相關(guān)公共進(jìn)程,等待排隊(duì)處理。下面以移動(dòng)通訊行業(yè)通訊設(shè)備實(shí)現(xiàn)雙模(USER1/USER2 )情景作為典 型例子,下面的實(shí)施例中注冊(cè)信息都以結(jié)構(gòu)數(shù)組的方式表示,內(nèi)存數(shù)據(jù)庫 的具體設(shè)計(jì)實(shí)施步驟包括引入的兩個(gè)用戶在配置文件中進(jìn)行注冊(cè),命名為USER1、 USER2。 才艮據(jù)兩種業(yè)務(wù)用戶分類,配置注冊(cè)用戶擁有的表,如下列表中根據(jù)需求 R—RACKT表只有USER1和USER2都擁有,R—SHELFT表只有USER1擁 有。具體的操作方式可以比較靈活,可以在源碼中直接配置好或者在磁盤 文件中描述好該注冊(cè)關(guān)系等。數(shù)據(jù)庫啟動(dòng)后,只要在內(nèi)存中存在用戶和表 的對(duì)應(yīng)關(guān)系即可。表句柄 表名稱 表最小記錄 表最大記錄 表所屬用戶 const TSYSTABTuple gtSysTabTuple[]={ { HANDLE一RACKTYPE , "R一RACKT" ,0, RACKTYPE—MAX USER1|1USER2 },{ HANDLE_SHELFTYPE , "R一SHELFT" ,0,SHELFTYPE—MAX , USER1 };內(nèi)存數(shù)據(jù)庫啟動(dòng)后,業(yè)務(wù)用戶對(duì)數(shù)據(jù)庫的訪問,在數(shù)據(jù)庫級(jí)別進(jìn)行用戶 校驗(yàn),不允許用戶對(duì)沒有注冊(cè)表表進(jìn)行訪問, 一種校驗(yàn)的方法是應(yīng)用在訪 問數(shù)據(jù)庫的接口入?yún)⒅杏幸粋€(gè)用戶模式的字段,用來標(biāo)識(shí)具體的用戶。對(duì)于USER1/USER2用戶都注冊(cè)的表,如果表數(shù)據(jù)共用的則應(yīng)用可以通 過加鎖互斥訪問或者通過數(shù)據(jù)庫同 一進(jìn)程進(jìn)行串行訪問,防止訪問的沖突。USER1/USER2用戶的數(shù)據(jù)庫操作如存盤、數(shù)據(jù)同步等以消息.的方式發(fā) 送到相關(guān)公共進(jìn)程,等待排隊(duì)處理。本發(fā)明方法由于引入了對(duì)多用戶的管理機(jī)制,將內(nèi)存數(shù)據(jù)庫的各種邏輯 對(duì)象分用戶進(jìn)行了管理,可以從4艮本上降低內(nèi)存數(shù)據(jù)庫不同業(yè)務(wù)用戶邏輯 對(duì)象數(shù)據(jù)的耦合,減少了不同用戶之間的互相干擾狀態(tài),大幅度降低了軟 件系統(tǒng)的復(fù)雜度。應(yīng)當(dāng)理解的是,上述針對(duì)本發(fā)明較佳實(shí)施例的描述較為詳細(xì),但不能因 此而認(rèn)為是對(duì)本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所 附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1、一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法,其包括以下步驟A、在內(nèi)存數(shù)據(jù)庫中引入用戶注冊(cè)表用于存放用戶相關(guān)信息;B、根據(jù)業(yè)務(wù)需求確定用戶,并對(duì)用戶所使用的表進(jìn)行注冊(cè);C、用戶只使用自己注冊(cè)的表以及其相關(guān)邏輯對(duì)象。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B還包括 不同的用戶使用相同的表時(shí)分別注冊(cè)自己的表。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所迷步驟B還包括 不同的用戶使用相同的表結(jié)構(gòu)和表數(shù)據(jù)。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B還包括 不同的用戶使用共用表結(jié)構(gòu),并將其表數(shù)據(jù)分開存放。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B還包括 不同的用戶使用不同的表結(jié)構(gòu),和,不同的表數(shù)據(jù)。
6、 根據(jù)權(quán)利要求3、 4或5所述的方法,其特征在于,所述步驟C還 包括在內(nèi)存數(shù)據(jù)庫啟動(dòng)時(shí),將用戶所注冊(cè)的相關(guān)信息從文件中讀入內(nèi)存; 所述內(nèi)存數(shù)椐庫啟動(dòng)后,在數(shù)據(jù)庫級(jí)別進(jìn)行用戶校驗(yàn),不允許用戶對(duì)沒有 注冊(cè)的表進(jìn)行訪問。
7、 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟C還包括 不同用戶的數(shù)據(jù)庫操作以消息的方式發(fā)送到相關(guān)公共進(jìn)程,等待排隊(duì)處理。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述數(shù)據(jù)庫操作包括: 存盤、數(shù)據(jù)同步。
全文摘要
本發(fā)明公開了一種內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法,其包括以下步驟在內(nèi)存數(shù)據(jù)庫中引入用戶注冊(cè)表用于存放用戶相關(guān)信息;根據(jù)業(yè)務(wù)需求確定用戶,并對(duì)用戶所使用的表進(jìn)行注冊(cè);用戶只使用自己注冊(cè)的表以及其相關(guān)邏輯對(duì)象。本發(fā)明內(nèi)存數(shù)據(jù)庫的多用戶實(shí)現(xiàn)方法由于引入了對(duì)多用戶的管理機(jī)制,將內(nèi)存數(shù)據(jù)庫的各種邏輯對(duì)象分用戶進(jìn)行了管理,可以從根本上降低內(nèi)存數(shù)據(jù)庫不同業(yè)務(wù)用戶邏輯對(duì)象數(shù)據(jù)的耦合,減少了不同用戶之間的互相干擾狀態(tài),大幅度降低了軟件系統(tǒng)的復(fù)雜度。
文檔編號(hào)G06F17/30GK101256578SQ20081006647
公開日2008年9月3日 申請(qǐng)日期2008年4月8日 優(yōu)先權(quán)日2008年4月8日
發(fā)明者孫號(hào)令 申請(qǐng)人:中興通訊股份有限公司