欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種列式內(nèi)存存儲(chǔ)查詢裝置及列式內(nèi)存存儲(chǔ)查詢方法

文檔序號(hào):8430758閱讀:364來(lái)源:國(guó)知局
一種列式內(nèi)存存儲(chǔ)查詢裝置及列式內(nèi)存存儲(chǔ)查詢方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體地涉及一種列式內(nèi)存存儲(chǔ)查詢裝置和方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)的飛速發(fā)展,各種業(yè)務(wù)數(shù)據(jù)量也急劇增加,對(duì)于數(shù)據(jù)的存儲(chǔ)方式直接 影響數(shù)據(jù)查詢的效率,而數(shù)據(jù)查詢的效率又會(huì)直接影響各種業(yè)務(wù)的處理效率,科學(xué)的進(jìn)行 數(shù)據(jù)存儲(chǔ),保證數(shù)據(jù)的高效讀寫(xiě),是提高業(yè)務(wù)處理效率的基礎(chǔ)。
[0003] 內(nèi)存中采用什么樣的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),對(duì)內(nèi)存占用及運(yùn)算效率具有重要的意 義,由于內(nèi)存資源有限,要以占用資源較小的方式進(jìn)行存儲(chǔ),首先應(yīng)回答的是多小才算小, 一個(gè)int在內(nèi)存中占用4個(gè)字節(jié),N個(gè)int就應(yīng)該最小接近4*N,這樣的內(nèi)存消耗可以認(rèn)為 是小的,如果比這個(gè)還要小,只能是采用壓縮和特殊編碼方式,而壓縮和編碼必然會(huì)在運(yùn)算 時(shí)進(jìn)行解壓縮和解密的過(guò)程,這個(gè)必然會(huì)影響效率,所以內(nèi)存表除了特殊的情況,應(yīng)該采用 原文存儲(chǔ),避免不必要的運(yùn)算消耗。
[0004]目前的各種存儲(chǔ)方法,最常用的是按行存儲(chǔ),每行的存儲(chǔ)單元具有相同的數(shù)據(jù)結(jié) 構(gòu),一行上要支持存儲(chǔ)多列的多數(shù)據(jù)類型數(shù)據(jù),大部分的應(yīng)用在插入數(shù)據(jù)和取數(shù)據(jù)時(shí)均是 以行為單位,所以絕大部分的數(shù)據(jù)均是按行存儲(chǔ)的,然而查詢往往是在列上發(fā)生,查詢時(shí)需 要遍歷每一行取到每一行的行對(duì)象指針,再由行對(duì)象指針取到相應(yīng)列的值,如果采用通用 結(jié)構(gòu)可能按照列的index或名稱進(jìn)行索引取值,去之后對(duì)每個(gè)列對(duì)象單元格進(jìn)行比對(duì)和查 找,判斷是否為選定的行,如果是把行指針?lè)诺浇Y(jié)果隊(duì)列。這種執(zhí)行一次取值任務(wù),需要在 每行中尋找值以及對(duì)每行進(jìn)行類型轉(zhuǎn)換或值比對(duì),會(huì)占用大量?jī)?nèi)存資源,降低查詢?nèi)≈档?效率。
[0005] 現(xiàn)有技術(shù)內(nèi)存數(shù)據(jù)存儲(chǔ)大都是采用對(duì)象行式存儲(chǔ)和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),運(yùn)算效 率不高,占用大量?jī)?nèi)存資源;還有一種思路是采用內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),但同樣消耗大量?jī)?nèi) 存,性能依賴于索引,使用的接口較為復(fù)雜,采用SQL表達(dá)式和解析器解析查詢。這些技術(shù) 的特點(diǎn)注定了其查詢效率和加載效率不高,條件靈活性不強(qiáng),具有較為復(fù)雜的API,不適合 使用在針對(duì)內(nèi)存中高效查詢的應(yīng)用場(chǎng)景。
[0006] 因此需要一種在內(nèi)存中支持高速高效查詢的存儲(chǔ)查詢方式。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明提供了一種列式內(nèi)存存儲(chǔ)查詢裝置,其特征在于,所述裝置包括:
[0008] 內(nèi)存存儲(chǔ)單元,用于在內(nèi)存中創(chuàng)建列數(shù)組存儲(chǔ)行式存儲(chǔ)結(jié)構(gòu)中的各列數(shù)據(jù);
[0009] 數(shù)據(jù)裝載單元,用于將所述行式存儲(chǔ)結(jié)構(gòu)中的目標(biāo)列數(shù)據(jù)裝載入所述內(nèi)存存儲(chǔ)單 元;
[0010] 查詢引擎,用于根據(jù)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件,對(duì)所述數(shù)據(jù)裝載單元裝載 入所述內(nèi)存存儲(chǔ)單元的列數(shù)據(jù)進(jìn)行查詢,獲取滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí), 發(fā)送給行讀取單元;
[0011] 行讀取單元,根據(jù)所述查詢引擎獲取的列數(shù)據(jù)位置標(biāo)識(shí)在所述行式存儲(chǔ)結(jié)構(gòu)中獲 取行號(hào)與所述列數(shù)據(jù)位置標(biāo)識(shí)一致的所有行數(shù)據(jù)信息,發(fā)送給數(shù)據(jù)消費(fèi)者。
[0012] 優(yōu)選的,所述裝置還包括:
[0013] 緩存單元,用于存儲(chǔ)所述查詢引擎的查詢數(shù)據(jù),當(dāng)數(shù)據(jù)消費(fèi)者輸入的所述級(jí)聯(lián)查 詢條件與存儲(chǔ)的級(jí)聯(lián)查詢條件一致,且該級(jí)聯(lián)查詢條件對(duì)應(yīng)的列數(shù)組未發(fā)生變化時(shí),將所 述存儲(chǔ)的滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí)發(fā)送給行讀取單元;
[0014] 周期控制單元,用于為所述內(nèi)存存儲(chǔ)單元設(shè)定內(nèi)存存儲(chǔ)周期,刪除數(shù)組中超出所 述內(nèi)存存儲(chǔ)周期的列數(shù)據(jù),還用于為所述緩存單元設(shè)定緩存周期,刪除緩存單元中超出所 述緩存周期的緩存數(shù)據(jù);
[0015] 鎖定控制單元,用于對(duì)所述內(nèi)存存儲(chǔ)單元設(shè)定讀鎖和寫(xiě)鎖,控制所述內(nèi)存存儲(chǔ)單 元的讀寫(xiě)鎖定和解鎖。
[0016] 詳細(xì)的,所述內(nèi)存存儲(chǔ)單元進(jìn)一步包括:
[0017] 列數(shù)據(jù)存儲(chǔ)模塊,用于創(chuàng)建列數(shù)組存儲(chǔ)不同列的列數(shù)據(jù),以所述列數(shù)組在行式存 儲(chǔ)結(jié)構(gòu)中相應(yīng)列的字段名稱命名該列數(shù)組,所述數(shù)組下標(biāo)為列數(shù)據(jù)位置標(biāo)識(shí);
[0018] 數(shù)據(jù)表存儲(chǔ)模塊,用于創(chuàng)建數(shù)據(jù)表,將所述列數(shù)據(jù)存儲(chǔ)模塊存儲(chǔ)的屬于相同行式 存儲(chǔ)結(jié)構(gòu)的列數(shù)組存入相同的數(shù)據(jù)表;
[0019] 所述內(nèi)存存儲(chǔ)單元可包含多個(gè)數(shù)據(jù)表存儲(chǔ)模塊,每個(gè)數(shù)據(jù)表存儲(chǔ)模塊可包含多個(gè) 列數(shù)據(jù)存儲(chǔ)模塊,每個(gè)所述列數(shù)據(jù)存儲(chǔ)模塊保存行式存儲(chǔ)結(jié)構(gòu)中一列的數(shù)據(jù),所述列數(shù)據(jù) 位置標(biāo)識(shí)和與其相應(yīng)的行式存儲(chǔ)結(jié)構(gòu)中的行號(hào)相同;
[0020] 優(yōu)先使用簡(jiǎn)單類型將所述列數(shù)據(jù)存入列數(shù)據(jù)存儲(chǔ)模塊。
[0021] 優(yōu)選的,為每個(gè)所述數(shù)據(jù)表存儲(chǔ)模塊中保存的數(shù)據(jù)表設(shè)置版本號(hào),當(dāng)所述數(shù)據(jù)表 對(duì)應(yīng)的所述行式存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)發(fā)生變化時(shí),更新所述版本號(hào)。
[0022] 具體的,所述查詢引擎進(jìn)一步包括:
[0023] 規(guī)則定義存儲(chǔ)模塊,用于定義并存儲(chǔ)所述級(jí)聯(lián)查詢條件的解析規(guī)則;
[0024] 級(jí)聯(lián)查詢條件解析模塊,用于接收數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件,根據(jù)所述規(guī) 則定義存儲(chǔ)模塊定義的所述級(jí)聯(lián)查詢條件的解析規(guī)則,解析所述級(jí)聯(lián)查詢條件;
[0025] 查詢模塊,根據(jù)所述級(jí)聯(lián)查詢條件解析模塊解析獲得的級(jí)聯(lián)查詢條件,逐級(jí)對(duì)所 述列數(shù)據(jù)存儲(chǔ)模塊存儲(chǔ)的列數(shù)組進(jìn)行查詢,獲取滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo) 識(shí)。
[0026] 具體的,所述緩存單元進(jìn)一步包括:
[0027] 查詢數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)級(jí)聯(lián)查詢條件,該級(jí)聯(lián)查詢條件所針對(duì)的數(shù)據(jù)表版 本信息和查詢獲取的列數(shù)據(jù)位置標(biāo)識(shí);
[0028] -致性檢驗(yàn)?zāi)K,用于檢驗(yàn)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件與所述存儲(chǔ)的級(jí)聯(lián)查 詢條件是否一致,以及檢驗(yàn)數(shù)據(jù)消費(fèi)者要求查詢的數(shù)據(jù)表版本信息與存儲(chǔ)的數(shù)據(jù)表版本信 息是否一致;
[0029] 查詢結(jié)果發(fā)送模塊,用于當(dāng)一致性判斷模型的判斷結(jié)果為一致時(shí),將所述查詢數(shù) 據(jù)存儲(chǔ)模塊存儲(chǔ)的與該級(jí)聯(lián)查詢條件對(duì)應(yīng)的列數(shù)據(jù)位置標(biāo)識(shí)發(fā)送給所述行讀取單元。
[0030] 更具體的,所述一致性檢驗(yàn)?zāi)K進(jìn)一步包括:
[0031] 級(jí)聯(lián)查詢條件檢驗(yàn)?zāi)K,用于根據(jù)若級(jí)聯(lián)查詢條件字符串相同且級(jí)聯(lián)查詢條件中 不包含非冪等性函數(shù)則判定級(jí)聯(lián)查詢條件一致的規(guī)則,檢驗(yàn)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條 件與所述存儲(chǔ)的級(jí)聯(lián)查詢條件是否一致;
[0032]目標(biāo)數(shù)據(jù)檢驗(yàn)?zāi)K,用于檢驗(yàn)數(shù)據(jù)消費(fèi)者要求查詢的數(shù)據(jù)表版本信息與所述存儲(chǔ) 的數(shù)據(jù)表版本信息是否一致。
[0033] 本發(fā)明還公開(kāi)一種列式內(nèi)存存儲(chǔ)查詢方法,所述方法包括:
[0034] 在內(nèi)存中創(chuàng)建列數(shù)組存儲(chǔ)行式存儲(chǔ)結(jié)構(gòu)中的各列數(shù)據(jù);
[0035] 將所述行式存儲(chǔ)結(jié)構(gòu)中的列數(shù)據(jù)裝載入所述創(chuàng)建的列數(shù)組;
[0036] 根據(jù)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件,對(duì)所述裝載入列數(shù)組中的列數(shù)據(jù)進(jìn)行查 詢,獲取滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí);
[0037] 根據(jù)所述獲取的列數(shù)據(jù)位置標(biāo)識(shí)在所述行式存儲(chǔ)結(jié)構(gòu)中獲取行號(hào)與所述列數(shù)據(jù) 位置標(biāo)識(shí)一致的所有行數(shù)據(jù)信息,發(fā)送給數(shù)據(jù)消費(fèi)者。
[0038] 優(yōu)選的,所述方法還包括:
[0039] 將一次查詢使用的級(jí)聯(lián)查詢條件、針對(duì)的列數(shù)組、獲取列數(shù)據(jù)位置標(biāo)識(shí)存入緩存, 當(dāng)數(shù)據(jù)消費(fèi)者輸入的所述級(jí)聯(lián)查詢條件與存儲(chǔ)的級(jí)聯(lián)查詢條件相同,且該級(jí)聯(lián)查詢條件對(duì) 應(yīng)的列數(shù)組未發(fā)生變化時(shí),根據(jù)所述存儲(chǔ)的滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí),獲 取行號(hào)與所述列數(shù)據(jù)位置標(biāo)識(shí)一致的所有行數(shù)據(jù)信息;
[0040] 設(shè)定內(nèi)存存儲(chǔ)周期,刪除列數(shù)組中超出所述內(nèi)存存儲(chǔ)周期的列數(shù)據(jù);
[0041] 設(shè)定緩存周期,刪除緩存中超出所述緩存周期的數(shù)據(jù);
[0042] 設(shè)定讀鎖和寫(xiě)鎖,控制對(duì)所述列數(shù)組的讀寫(xiě)鎖定和解鎖。
[0043] 詳細(xì)的,所述在內(nèi)存中創(chuàng)建列數(shù)組存儲(chǔ)行式存儲(chǔ)結(jié)構(gòu)中的各列數(shù)據(jù)的方法具體 為:
[0044] 創(chuàng)建列數(shù)組存儲(chǔ)不同列的列數(shù)據(jù),以所述列數(shù)據(jù)在行式存儲(chǔ)結(jié)構(gòu)中相應(yīng)列的字段 名稱命名該列數(shù)組,所述列數(shù)組下標(biāo)為列數(shù)據(jù)位置標(biāo)識(shí);
[0045] 創(chuàng)建數(shù)據(jù)表,將屬于相同行式存儲(chǔ)結(jié)構(gòu)的所述列數(shù)組存入相同的數(shù)據(jù)表;
[0046] 可創(chuàng)建多個(gè)所述數(shù)據(jù)表,每個(gè)數(shù)據(jù)表包含多個(gè)所述列數(shù)組,每個(gè)所述列數(shù)組保存 行式存儲(chǔ)結(jié)構(gòu)中一列的數(shù)據(jù),所述列數(shù)據(jù)位置標(biāo)識(shí)和與其相應(yīng)的行式存儲(chǔ)結(jié)構(gòu)中的行號(hào)相 同;
[0047] 優(yōu)先使用簡(jiǎn)單類型將列數(shù)據(jù)存入列數(shù)據(jù)存儲(chǔ)模塊。
[0048] 優(yōu)選的,存儲(chǔ)每個(gè)所述數(shù)據(jù)表的版本號(hào)信息,當(dāng)所述數(shù)據(jù)表中的列數(shù)據(jù)發(fā)生變化 時(shí),更新所述版本號(hào)信息。
[0049] 詳細(xì)的,所述根據(jù)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件,對(duì)所述裝載入列數(shù)組中的列 數(shù)據(jù)進(jìn)行查詢,獲取滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí)的方法具體為:
[0050] 定義并存儲(chǔ)所述級(jí)聯(lián)查詢條件的解析規(guī)則;
[0051] 接收數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件,根據(jù)所述存儲(chǔ)的級(jí)聯(lián)查詢條件解析規(guī)則, 解析所述級(jí)聯(lián)查詢條件;
[0052] 根據(jù)所述解析后的級(jí)聯(lián)查詢條件,逐級(jí)對(duì)所述列數(shù)組中存儲(chǔ)的數(shù)據(jù)進(jìn)行查詢,獲 取滿足所述級(jí)聯(lián)查詢條件的列數(shù)據(jù)位置標(biāo)識(shí)。
[0053] 更詳細(xì)的,所述判定當(dāng)數(shù)據(jù)消費(fèi)者輸入的所述級(jí)聯(lián)查詢條件與存儲(chǔ)的級(jí)聯(lián)查詢條 件一致,且該級(jí)聯(lián)查詢條件對(duì)應(yīng)的列數(shù)組未發(fā)生變化的方法具體為:
[0054] 根據(jù)若級(jí)聯(lián)查詢條件字符串相同且級(jí)聯(lián)查詢條件中不包含非冪等性函數(shù)則判定 級(jí)聯(lián)查詢條件一致的規(guī)則,檢驗(yàn)數(shù)據(jù)消費(fèi)者輸入的級(jí)聯(lián)查詢條件與所述存儲(chǔ)的級(jí)聯(lián)查詢條 件是否一致;
[0055] 若數(shù)據(jù)消費(fèi)者要求查詢的數(shù)據(jù)表版本信息與所述存儲(chǔ)的數(shù)據(jù)表版本信息一致,則 判定該級(jí)聯(lián)查詢條件對(duì)應(yīng)的列數(shù)組未發(fā)生變化。
[0056] 本發(fā)明通過(guò)將行式存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)裝載入內(nèi)存,以列數(shù)組的方式進(jìn)行存儲(chǔ),查 詢符合條件的數(shù)據(jù),并獲取該數(shù)據(jù)的列數(shù)據(jù)位置標(biāo)識(shí)(即數(shù)據(jù)所在數(shù)組位置的下標(biāo)),通過(guò) 該標(biāo)識(shí)獲取符合查詢條件的行號(hào),進(jìn)而獲取整行數(shù)據(jù),這樣做的好處是,在查詢時(shí)不需要遍 歷每一行取每一行的信息后,對(duì)目標(biāo)列進(jìn)行比較計(jì)算,而是直接針對(duì)行存儲(chǔ)結(jié)構(gòu)中的該列 所有數(shù)據(jù),將其放入數(shù)組中進(jìn)行統(tǒng)一比對(duì),獲得滿足條件的行號(hào),再獲取滿足條件的行數(shù) 據(jù),大大節(jié)約了遍歷和對(duì)每行均進(jìn)行取值比較計(jì)算的時(shí)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武功县| 江达县| 酒泉市| 舟山市| 罗田县| 集贤县| 平果县| 高碑店市| 刚察县| 塔河县| 新绛县| 秦皇岛市| 泰来县| 津市市| 昌乐县| 洛阳市| 长泰县| 和平区| 丹棱县| 富川| 五莲县| 永昌县| 井陉县| 土默特左旗| 济南市| 佛学| 富源县| 甘谷县| 县级市| 安仁县| 静海县| 甘南县| 南昌县| 大港区| 桦南县| 建阳市| 宁乡县| 赣州市| 鸡泽县| 察雅县| 南京市|