本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)領(lǐng)域,尤其涉及了一種內(nèi)存數(shù)據(jù)處理系統(tǒng)。
背景技術(shù):
目前的內(nèi)存數(shù)據(jù)庫(kù)是通過(guò)將系統(tǒng)中常用數(shù)據(jù)庫(kù)表中的數(shù)據(jù)全部映射到主機(jī)共享內(nèi)存中,通過(guò)使用一個(gè)固定的數(shù)據(jù)結(jié)構(gòu)數(shù)組將每個(gè)固定的數(shù)據(jù)庫(kù)表保存在共享內(nèi)存中,也就是將內(nèi)存中的一個(gè)存儲(chǔ)區(qū)作為一個(gè)數(shù)據(jù)庫(kù)表的表空間,根據(jù)表記錄的實(shí)際大小將該存儲(chǔ)區(qū)劃分為多個(gè)內(nèi)存塊來(lái)保存數(shù)據(jù)庫(kù)表中的數(shù)據(jù);在數(shù)據(jù)庫(kù)表中的關(guān)鍵字段上建立內(nèi)存索引,通過(guò)該內(nèi)存索引對(duì)關(guān)鍵數(shù)據(jù)進(jìn)行實(shí)時(shí)訪問(wèn)。內(nèi)存系統(tǒng)提供用于對(duì)內(nèi)存數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行修改和檢索的應(yīng)用編程接口API(Application Programming Interface)接口,應(yīng)用程序在訪問(wèn)這些數(shù)據(jù)庫(kù)表時(shí),通過(guò)調(diào)用內(nèi)存數(shù)據(jù)庫(kù)的API來(lái)訪問(wèn)共享內(nèi)存中的數(shù)據(jù),而不是直接訪問(wèn)物理數(shù)據(jù)庫(kù)表中的數(shù)據(jù),因此,能夠提高系統(tǒng)對(duì)關(guān)鍵數(shù)據(jù)的實(shí)時(shí)訪問(wèn)性能。
但是,關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一些格式化的數(shù)據(jù)結(jié)構(gòu),每個(gè)元組字段的組成都一樣,即使不是每個(gè)元組都需要所有的字段,但數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個(gè)角度來(lái)說(shuō)它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。它不能滿足以下“高”需求:對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求;對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求;對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:目前的數(shù)據(jù)處理技術(shù)難以解決對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求;以及對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求;和對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求。
為解決上面的技術(shù)問(wèn)題,本發(fā)明提供了一種內(nèi)存數(shù)據(jù)處理系統(tǒng),該系統(tǒng)包括分別與數(shù)據(jù)創(chuàng)建模塊連接的通信模塊、數(shù)據(jù)操作模塊及數(shù)據(jù)讀取模塊:
通信模塊,用于接收各種信息和輸出結(jié)果;
數(shù)據(jù)創(chuàng)建模塊,用于根據(jù)通信模塊接收到的數(shù)據(jù)信息確定數(shù)據(jù)的存儲(chǔ)目錄;將數(shù)據(jù)依數(shù)據(jù)文件的形式存儲(chǔ)到存儲(chǔ)服務(wù)器中,所述數(shù)據(jù)文件的文件名中包括有時(shí)間信息;所述的存儲(chǔ)服務(wù)器包括由多個(gè)磁盤(pán)驅(qū)動(dòng)器組成的磁盤(pán)陣列,預(yù)先對(duì)所述磁盤(pán)陣列進(jìn)行邏輯分區(qū);
數(shù)據(jù)操作模塊,用于在所述操作需要向數(shù)據(jù)創(chuàng)建模塊中添加表記錄時(shí),查詢所述描述信息選擇大小匹配的一個(gè)邏輯區(qū),以及將表記錄寫(xiě)入選擇的邏輯區(qū)中空閑的存儲(chǔ)區(qū)內(nèi);
數(shù)據(jù)讀取模塊,用于根據(jù)數(shù)據(jù)創(chuàng)建模塊中的信息創(chuàng)建多個(gè)讀取線程來(lái)依次從列表中提取數(shù)據(jù)文件,讀取數(shù)據(jù)創(chuàng)建模塊中的數(shù)據(jù)。
進(jìn)一步,在進(jìn)行邏輯分區(qū)后,在每一個(gè)邏輯分區(qū)內(nèi)按設(shè)定規(guī)則建立多級(jí)文件目錄;
建立數(shù)據(jù)文件的劃分規(guī)則,使存儲(chǔ)的數(shù)據(jù)文件的大小在設(shè)定的范圍內(nèi);
存儲(chǔ)數(shù)據(jù)時(shí),存儲(chǔ)服務(wù)器存儲(chǔ)數(shù)據(jù)前,先分析數(shù)據(jù)并根據(jù)多級(jí)目錄的建立規(guī)則確定存儲(chǔ)目錄;
為經(jīng)過(guò)設(shè)定時(shí)間的存儲(chǔ)數(shù)據(jù)文件建立索引;
存儲(chǔ)服務(wù)器查詢數(shù)據(jù)采用分段多線程并發(fā)技術(shù)來(lái)掃描索引和數(shù)據(jù)文件的路徑。
進(jìn)一步,所述的數(shù)據(jù)創(chuàng)建模塊還包括:確定單元,用于確定數(shù)據(jù)創(chuàng)建模塊中數(shù)據(jù)文件記錄的大?。粍?chuàng)建單元,用于在共享內(nèi)存中建立第一存儲(chǔ)區(qū)、第二存儲(chǔ)區(qū)和第三存儲(chǔ)區(qū);保存單元,用于將數(shù)據(jù)庫(kù)的描述信息保存到第一存儲(chǔ)區(qū),數(shù)據(jù)庫(kù)的描述信息包括各數(shù)據(jù)庫(kù)表的描述信息。
進(jìn)一步,所述的數(shù)據(jù)操作模塊還包括:操作單元,用于將需要添加的表記錄寫(xiě)入選擇的邏輯區(qū)中空閑的存儲(chǔ)區(qū)內(nèi),以及在第二存儲(chǔ)區(qū)中保存表記錄的位置信。
進(jìn)一步,對(duì)于數(shù)據(jù)創(chuàng)建模塊,所述建立索引為建立多級(jí)索引。
進(jìn)一步,對(duì)于數(shù)據(jù)創(chuàng)建模塊,索引建立后,定時(shí)更新索引。
有益效果:解決了對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求;以及對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求;和對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求,提高了數(shù)據(jù)存儲(chǔ)和讀取的速率。
附圖說(shuō)明
圖1為本發(fā)明的一種內(nèi)存數(shù)據(jù)處理系統(tǒng)的概要圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如附圖1所示的,一種內(nèi)存數(shù)據(jù)處理系統(tǒng),該系統(tǒng)包括分別與數(shù)據(jù)創(chuàng)建模塊連接的通信模塊、數(shù)據(jù)操作模塊及數(shù)據(jù)讀取模塊:
通信模塊,用于接收各種信息和輸出結(jié)果;
數(shù)據(jù)創(chuàng)建模塊,用于根據(jù)通信模塊接收到的數(shù)據(jù)信息確定數(shù)據(jù)的存儲(chǔ)目錄;將數(shù)據(jù)依數(shù)據(jù)文件的形式存儲(chǔ)到存儲(chǔ)服務(wù)器中,所述數(shù)據(jù)文件的文件名中包括有時(shí)間信息;所述的存儲(chǔ)服務(wù)器包括由多個(gè)磁盤(pán)驅(qū)動(dòng)器組成的磁盤(pán)陣列,預(yù)先對(duì)所述磁盤(pán)陣列進(jìn)行邏輯分區(qū);
數(shù)據(jù)操作模塊,用于在所述操作需要向數(shù)據(jù)創(chuàng)建模塊中添加表記錄時(shí),查詢所述描述信息選擇大小匹配的一個(gè)邏輯區(qū),以及將表記錄寫(xiě)入選擇的邏輯區(qū)中空閑的存儲(chǔ)區(qū)內(nèi);
數(shù)據(jù)讀取模塊,用于根據(jù)數(shù)據(jù)創(chuàng)建模塊中的信息創(chuàng)建多個(gè)讀取線程來(lái)依次從列表中提取數(shù)據(jù)文件,讀取數(shù)據(jù)創(chuàng)建模塊中的數(shù)據(jù)。
在進(jìn)行邏輯分區(qū)后,在每一個(gè)邏輯分區(qū)內(nèi)按設(shè)定規(guī)則建立多級(jí)文件目錄;
建立數(shù)據(jù)文件的劃分規(guī)則,使存儲(chǔ)的數(shù)據(jù)文件的大小在設(shè)定的范圍內(nèi);
存儲(chǔ)數(shù)據(jù)時(shí),存儲(chǔ)服務(wù)器存儲(chǔ)數(shù)據(jù)前,先分析數(shù)據(jù)并根據(jù)多級(jí)目錄的建立規(guī)則確定存儲(chǔ)目錄;
為經(jīng)過(guò)設(shè)定時(shí)間的存儲(chǔ)數(shù)據(jù)文件建立索引;
存儲(chǔ)服務(wù)器查詢數(shù)據(jù)采用分段多線程并發(fā)技術(shù)來(lái)掃描索引和數(shù)據(jù)文件的路徑建立索引為建立多級(jí)索引。
還包括步驟:索引建立后,定時(shí)更新索引。
數(shù)據(jù)創(chuàng)建模塊還包括:確定單元,用于確定數(shù)據(jù)創(chuàng)建模塊中數(shù)據(jù)文件記錄的大?。粍?chuàng)建單元,用于在共享內(nèi)存中建立第一存儲(chǔ)區(qū)、第二存儲(chǔ)區(qū)和第三存儲(chǔ)區(qū);保存單元,用于將數(shù)據(jù)庫(kù)的描述信息保存到第一存儲(chǔ)區(qū),數(shù)據(jù)庫(kù)的描述信息包括各數(shù)據(jù)庫(kù)表的描述信息。
數(shù)據(jù)操作模塊還包括:操作單元,用于將需要添加的表記錄寫(xiě)入選擇的邏輯區(qū)中空閑的存儲(chǔ)區(qū)內(nèi),以及在第二存儲(chǔ)區(qū)中保存表記錄的位置信。
內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)了內(nèi)存數(shù)據(jù)庫(kù)表結(jié)構(gòu)與數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的松耦合,在存儲(chǔ)表記錄時(shí),通過(guò)選取與表記錄大小相匹配的邏輯塊可以實(shí)現(xiàn)同一個(gè)表的變長(zhǎng)記錄的存儲(chǔ)模式,降低了共享內(nèi)存中表空間資源的占用;本實(shí)施例中動(dòng)態(tài)擴(kuò)充表空間的方式保證了內(nèi)存數(shù)據(jù)庫(kù)表結(jié)構(gòu)與數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)之間不存在耦合關(guān)系,并且,在系統(tǒng)通過(guò)一個(gè)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)程動(dòng)態(tài)擴(kuò)充表空間時(shí),其他內(nèi)存數(shù)據(jù)庫(kù)應(yīng)用進(jìn)程更新本進(jìn)程內(nèi)邏輯塊的時(shí)間戳與系統(tǒng)定義區(qū)中該邏輯志的時(shí)間戳一致,保證了內(nèi)存空間映射的同步。
內(nèi)存數(shù)據(jù)庫(kù)能夠滿足對(duì)數(shù)據(jù)進(jìn)行大量訪問(wèn)的實(shí)時(shí)性要求,可應(yīng)用在實(shí)時(shí)要求較高的系統(tǒng)中,例如,在一個(gè)實(shí)時(shí)計(jì)費(fèi)系統(tǒng)中采用本實(shí)施例提供的內(nèi)存數(shù)據(jù)庫(kù)來(lái)提高系統(tǒng)的實(shí)時(shí)響應(yīng)性能,數(shù)據(jù)庫(kù)存儲(chǔ)用戶的相關(guān)信息及使用業(yè)務(wù)的計(jì)費(fèi)信息。
在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書(shū)中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。