Olap聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置,該方法包括:根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼;在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,索引編碼被保存為鍵值表的鍵,原始數(shù)據(jù)中的鍵被保存為鍵值表的值;當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從鍵值表中將索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。在運(yùn)算過程中通過索引編碼代替了原始數(shù)據(jù)中的鍵,能夠降低OLAP聚合運(yùn)算過程中的內(nèi)存占用。
【專利說明】
OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,具體地說,涉及一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置。
【背景技術(shù)】
[0002]聯(lián)機(jī)分析處理(On-Line Analytical Processing,0LAP)是數(shù)據(jù)倉庫系統(tǒng)的主要應(yīng)用,支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。對于OLAP系統(tǒng)來說,絕大多數(shù)時(shí)候數(shù)據(jù)庫上運(yùn)行著的是報(bào)表作業(yè),執(zhí)行基本上是聚合類的SQL操作,比如分組(group by) ο
[0003]OLAP的聚合運(yùn)算,例如求和(Sum)、最大值(Max)、最小值(Min)、取平均(Ave)等,通常需要計(jì)算各個(gè)鍵(Key)所對應(yīng)的度量值。在一個(gè)報(bào)表中,每一個(gè)鍵通常由多個(gè)維度的屬性組成,例如姓名(name)、地址(adress)等等。在計(jì)算時(shí),利用各個(gè)維度之間的不同組合分別做為鍵來計(jì)算對應(yīng)的度量值,那么,把鍵放入到內(nèi)存中進(jìn)行運(yùn)算時(shí),由各個(gè)維度組合而成的鍵都是字符串(String)類型,對內(nèi)存空間的占用較大,并且維度越高,所占用的內(nèi)存空間就越大。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明實(shí)施例提供了一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置,用以解決現(xiàn)有技術(shù)中OLAP聚合運(yùn)算過程中內(nèi)存占用過大的技術(shù)問題。
[0005]為了解決上述技術(shù)問題,本發(fā)明公開了一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法,包括:根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼;在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)所述原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,所述索引編碼被保存為所述鍵值表的鍵,所述原始數(shù)據(jù)中的鍵被保存為所述鍵值表的值;當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從所述鍵值表中將所述索弓I編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。
[0006]為了解決上述技術(shù)問題,本發(fā)明公開了一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化裝置,包括:編碼模塊,用于根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼;映射模塊,用于在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)所述原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,所述索引編碼被保存為所述鍵值表的鍵,所述原始數(shù)據(jù)中的鍵被保存為所述鍵值表的值;運(yùn)算模塊,用于當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從所述鍵值表中將所述索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。
[0007]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法和裝置,針對原始數(shù)據(jù)中的鍵建立索引編碼,在運(yùn)算過程中通過索引編碼代替了原始數(shù)據(jù)中的鍵,能夠降低OLAP聚合運(yùn)算過程中的內(nèi)存占用。
【附圖說明】
[0008]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0009]圖1是本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)示意圖;
[0010]圖2是本發(fā)明實(shí)施例在內(nèi)存中創(chuàng)建的字典樹的示意圖;
[0011]圖3是本發(fā)明實(shí)施例在內(nèi)存中創(chuàng)建的字典樹的示意圖;
[0012]圖4是本發(fā)明實(shí)施例在內(nèi)存中創(chuàng)建的字典樹的示意圖;
[0013]圖5是本發(fā)明實(shí)施例提供的一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法的流程圖;
[0014]圖6是本發(fā)明實(shí)施例提供的一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法的流程圖;
[0015]圖7是本發(fā)明實(shí)施例提供的一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化裝置的框圖。
【具體實(shí)施方式】
[0016]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0017]本發(fā)明實(shí)施例對OLAP聚合運(yùn)算所使用的原始數(shù)據(jù)中的鍵(Key)建立索引編碼,并記錄在非關(guān)系型數(shù)據(jù)庫(nosql)的鍵值表中,將索引編碼做為鍵值表中的鍵,將原始數(shù)據(jù)中的鍵做為鍵值表中的值,進(jìn)行OLAP聚合運(yùn)算時(shí),將鍵值表的中的索引編碼讀取到內(nèi)存中完成聚合運(yùn)算,通過索引編碼代替了原始數(shù)據(jù)中的鍵,從而降低了運(yùn)算過程中的內(nèi)存占用。此夕卜,還可以在內(nèi)存中依據(jù)讀取到的索引編碼建立對應(yīng)的字典樹,進(jìn)一步減少了需要維護(hù)的內(nèi)存數(shù)據(jù)量。
[0018]圖1是本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)示意圖,包括分布式存儲(chǔ)系統(tǒng)10和終端設(shè)備11。分布式存儲(chǔ)系統(tǒng)10可采用HBase(Hadoop Database,基于Hadoop系統(tǒng)架構(gòu)的數(shù)據(jù)庫),所有數(shù)據(jù)文件都存儲(chǔ)在HDFS(Hadoop分布式文件系統(tǒng),Hadoop Distributed File System)文件系統(tǒng)上,包括大量的Key-Value數(shù)據(jù)。終端設(shè)備10可以是計(jì)算機(jī)設(shè)備或者其他提供OLAP的服務(wù)設(shè)備。
[0019]在分布式存儲(chǔ)系統(tǒng)10中保存的Key-Value數(shù)據(jù)中,鍵(Key)是各種維(Dimens1n)的組合,例如,“時(shí)間,地點(diǎn),產(chǎn)品”等數(shù)據(jù)的維共同組成一個(gè)鍵;值(Value)是在對應(yīng)的鍵(維組合)下的取值,例如,“價(jià)格、銷量”等。這些Key-Value數(shù)據(jù)可能分別存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)的不同集群中,也是終端設(shè)備11進(jìn)行OLAP聚合運(yùn)算所要使用的原始數(shù)據(jù)。
[0020]本發(fā)明實(shí)施例中,在分布式存儲(chǔ)系統(tǒng)10的元數(shù)據(jù)服務(wù)器中,可以利用非關(guān)系型數(shù)據(jù)庫(nosql)創(chuàng)建一個(gè)索引表,該索引表是一個(gè)鍵值(Key-Value)表。在這個(gè)鍵值表中,將分布式存儲(chǔ)系統(tǒng)10中保存的原始數(shù)據(jù)的鍵做為鍵值表的值,根據(jù)預(yù)設(shè)編碼方式為原始數(shù)據(jù)的鍵創(chuàng)建對應(yīng)的索引編碼,并將該索引編碼做為鍵值表中對應(yīng)的鍵。例如,將原始數(shù)據(jù)中由“時(shí)間,地點(diǎn),產(chǎn)品”等維所組成的鍵“2016年I月,上海,智能電視”存儲(chǔ)為鍵值表的值,根據(jù)預(yù)設(shè)編碼方式創(chuàng)建索引編碼“121”,將“121”做為鍵值表中與值“2016年I月,上海,智能電視”對應(yīng)的鍵。那么,通過這個(gè)鍵值表的鍵(索引編碼)就能夠定位到原始數(shù)據(jù)的鍵以及對應(yīng)的度量(如“價(jià)格、銷量”等)。
[0021]預(yù)設(shè)編碼方式包括以下幾種方式。
[0022](I)采用十進(jìn)制數(shù)字編碼
[0023]編碼中的每一位都可以采用0-9的數(shù)字,如果編碼位數(shù)為三位,則可代表10+102+13種不同的維組合。數(shù)字0-9數(shù)據(jù)類型可使用整型,相對于字符型占用的內(nèi)存空間更少。
[0024](2)采用boolean類型的二進(jìn)制數(shù)字編碼
[0025]在這種編碼中,使用的數(shù)字都是boolean類型的O和I,每一位僅占用一個(gè)字節(jié),對內(nèi)存的優(yōu)化效果最好。但是由于每一位只能代表兩種情形,當(dāng)數(shù)據(jù)的維很高,各種維組合的數(shù)量很大時(shí),編碼的位數(shù)會(huì)變得相當(dāng)長。當(dāng)原始數(shù)據(jù)量較小(例如100GB以內(nèi)時(shí)),可以優(yōu)選使用這種編碼方式,使內(nèi)存優(yōu)化效果更佳。
[0026](3)采用二十六進(jìn)制字符編碼
[0027]編碼中的每一位都可以采用A-Z的字符,每一位都可以代表二十六種情形,如果編碼位數(shù)是3位,則可以代表26+262+263種不同的維組合。當(dāng)原始數(shù)據(jù)量很大(例如1TB以上時(shí)),可以優(yōu)選考慮這種編碼方式。
[0028]本發(fā)明實(shí)施例中優(yōu)選使用第(I)種編碼方式,既可以達(dá)到不錯(cuò)的內(nèi)存優(yōu)化效果,也能夠應(yīng)付較多的原始數(shù)據(jù)量。
[0029]終端設(shè)備11進(jìn)行進(jìn)行OLAP聚合運(yùn)算時(shí),從該鍵值表中將索引編碼讀取到內(nèi)存中,并利用該索引編碼來完成OLAP聚合運(yùn)算。此時(shí),不再需要將原始數(shù)據(jù)的鍵讀取到內(nèi)存中,由于原始數(shù)據(jù)的鍵通常是字符串型,因此通過索引編碼代替了原始數(shù)據(jù)中的鍵,能夠降低OLAP聚合運(yùn)算過程中的內(nèi)存占用。
[0030]為了進(jìn)一步優(yōu)化內(nèi)存空間,終端設(shè)備11在將鍵值表中的索引編碼讀取到內(nèi)存中時(shí),根據(jù)索引編碼的預(yù)設(shè)編碼方式在內(nèi)存中構(gòu)建字典樹。
[0031]如果索引編碼采用第(I)種編碼方式,則創(chuàng)建的字典樹如圖2所示,每個(gè)節(jié)點(diǎn)的下一級節(jié)點(diǎn)都可以包括0-9這十個(gè)子節(jié)點(diǎn)。如果索引編碼采用第(2)種編碼方式,則創(chuàng)建的字典樹如圖3所示,每個(gè)節(jié)點(diǎn)的下一級節(jié)點(diǎn)都可以包括O和I這兩個(gè)子節(jié)點(diǎn)。如果索引編碼采用第(3)種編碼方式,則創(chuàng)建的字典樹如圖4所示,每個(gè)節(jié)點(diǎn)的下一級節(jié)點(diǎn)都可以包括A-Z這二十六個(gè)子節(jié)點(diǎn)。
[0032]當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),讀取鍵值表中的索引編碼再查詢內(nèi)存中的字典樹來完成OLAP聚合運(yùn)算。
[0033]構(gòu)建字典樹之后,對于索引編碼中同一個(gè)編碼位的相同編碼,可以只通過一個(gè)節(jié)點(diǎn)就可以維護(hù),例如索引編碼“121”和“122”,前兩位“I”和“2”相同,通過一個(gè)一級節(jié)點(diǎn)T和一個(gè)二級節(jié)點(diǎn)“2”,就可以同時(shí)維護(hù)這兩個(gè)索引編碼的前兩位,從而進(jìn)一步壓縮了內(nèi)存數(shù)據(jù)量,減小了內(nèi)存開銷,使內(nèi)存空間得到進(jìn)一步優(yōu)化。
[0034]在利用非關(guān)系型數(shù)據(jù)庫(nosql)創(chuàng)建索引表時(shí),還可以同時(shí)再創(chuàng)建一個(gè)反向索引表。在該反向索引表中,將原始數(shù)據(jù)的鍵做為反向索引表中的鍵,將索引編碼做為反向索引表中的值。這樣,在利用索引編碼查詢聚合運(yùn)算的結(jié)果時(shí),就可以通過反向索引表定位到原始數(shù)據(jù)的鍵。
[0035]基于以上論述,本發(fā)明實(shí)施例提供了一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法,如圖5所示,包括:
[0036]S20,根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼;
[0037]S21,在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,索引編碼被保存為鍵值表的鍵,原始數(shù)據(jù)中的鍵被保存為鍵值表的值;
[0038]S22,當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從鍵值表中將索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。
[0039]原始數(shù)據(jù)的鍵通常是字符串型,通過索引編碼代替了原始數(shù)據(jù)中的鍵,能夠降低OLAP聚合運(yùn)算過程中的內(nèi)存占用。
[0040]在一個(gè)實(shí)施例中,如圖6所示,步驟S22進(jìn)一步包括以下步驟。
[0041 ] S221,在內(nèi)存中創(chuàng)建與預(yù)設(shè)編碼方式對應(yīng)的字典樹;
[0042]S222,當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),讀取索引編碼并查詢字典樹來完成OLAP聚合運(yùn)算。
[0043]通過在內(nèi)存中建立字典樹來進(jìn)一步壓縮內(nèi)存數(shù)據(jù)量,使內(nèi)存空間能夠得到進(jìn)一步優(yōu)化。
[0044]在本發(fā)明的上述實(shí)施例中,步驟S20可以進(jìn)一步包括:
[0045]利用十進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。既能達(dá)到不錯(cuò)的內(nèi)存優(yōu)化效果,又能夠應(yīng)對原始數(shù)據(jù)較多的情形。
[0046]該步驟20還可以進(jìn)一步包括:
[0047]利用boolean類型的二進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。boolean類型的二進(jìn)制數(shù)字編碼每一位占用一個(gè)字節(jié),能達(dá)到更加的內(nèi)存優(yōu)化效果。
[0048]此外,該步驟20還可以進(jìn)一步包括:
[0049]利用二十六進(jìn)制字符編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。編碼中的每一位都可以有二十六種變化,索引效果更好,適用于原始數(shù)據(jù)量較大或者數(shù)據(jù)維的組合較多的情形。
[0050]在一個(gè)實(shí)施例中,該步驟21進(jìn)一步包括以下步驟。
[0051 ] S211,在非關(guān)系型數(shù)據(jù)庫的鍵值表和反向索引表中分別存儲(chǔ)原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼;在鍵值表中,索引編碼被保存為鍵值表的鍵,原始數(shù)據(jù)中的鍵被保存為鍵值表的值;在反向索引表中,索引編碼被保存為值,原始數(shù)據(jù)中的鍵被保存為鍵。
[0052]在查詢該聚合運(yùn)算的結(jié)果時(shí),可通過該反向索引表進(jìn)行查詢,通過索引編碼定位到原始數(shù)據(jù)的鍵。
[0053]下面是本發(fā)明的裝置實(shí)施例,用于執(zhí)行本發(fā)明的上述方法實(shí)施例。
[0054]圖7是本發(fā)明實(shí)施例提供的一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化裝置,其包括:
[0055]編碼模塊30,用于根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼;
[0056]映射模塊31,用于在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,索引編碼被保存為鍵值表的鍵,原始數(shù)據(jù)中的鍵被保存為所述鍵值表的值;
[0057]運(yùn)算模塊32,用于當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從鍵值表中將索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。
[0058]在一個(gè)實(shí)施例中,該運(yùn)算模塊32進(jìn)一步包括:
[0059]處理子模塊,用于在內(nèi)存中創(chuàng)建與預(yù)設(shè)編碼方式對應(yīng)的字典樹;
[0060]運(yùn)算子模塊,用于當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),讀取索引編碼并查詢字典樹來完成OLAP聚合運(yùn)算。
[0061]在本發(fā)明的上述實(shí)施例中,該編碼模塊30可以進(jìn)一步包括:
[0062]第一編碼子模塊,用于利用十進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。
[0063]該編碼模塊30還可以進(jìn)一步包括:
[0064]第二編碼子模塊,用于利用boolean類型的二進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。
[0065]該編碼模塊30還可以進(jìn)一步包括:
[0066]第三編碼子模塊,用于利用二十六進(jìn)制字符編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。
[0067]在一個(gè)實(shí)施例中,映射模塊31可以進(jìn)一步包括:
[0068]映射子模塊,用于在非關(guān)系型數(shù)據(jù)庫的鍵值表和反向索引表中分別存儲(chǔ)原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼;在鍵值表中,索引編碼被保存為鍵值表的鍵,原始數(shù)據(jù)中的鍵被保存為鍵值表的值;在反向索引表中,索引編碼被保存為值,原始數(shù)據(jù)中的鍵被保存為鍵。
[0069]上述OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化裝置提供的各功能模塊可以位于同一設(shè)備(例如都位于圖1的終端設(shè)備11或者分布式存儲(chǔ)系統(tǒng)10的元數(shù)據(jù)服務(wù)器),或者,上述各功能模塊也可以位于不同設(shè)備(例如,編碼模塊30和映射模塊31位于圖1中分布式存儲(chǔ)系統(tǒng)10的元數(shù)據(jù)服務(wù)器,而運(yùn)算模塊32位于終端設(shè)備11)。
[0070]此外,本發(fā)明實(shí)施例中可以通過硬件處理器(hardware processor)來實(shí)現(xiàn)上述各個(gè)功能模塊。
[0071]以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
[0072]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0073]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1.一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化方法,其特征在于,包括: 根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼; 在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)所述原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,所述索引編碼被保存為所述鍵值表的鍵,所述原始數(shù)據(jù)中的鍵被保存為所述鍵值表的值; 當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從所述鍵值表中將所述索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從所述鍵值表中將所述索弓I編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算包括: 在內(nèi)存中創(chuàng)建與所述預(yù)設(shè)編碼方式對應(yīng)的字典樹; 當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),讀取所述索引編碼并查詢所述字典樹來完成OLAP聚合運(yùn)算。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼包括: 利用十進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼包括: 利用boolean類型的二進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼包括: 利用二十六進(jìn)制字符編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。6.一種OLAP聚合運(yùn)算時(shí)的內(nèi)存優(yōu)化裝置,其特征在于,包括: 編碼模塊,用于根據(jù)預(yù)設(shè)編碼方式對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼; 映射模塊,用于在非關(guān)系型數(shù)據(jù)庫的鍵值表中存儲(chǔ)所述原始數(shù)據(jù)中的鍵以及對應(yīng)的索引編碼,所述索引編碼被保存為所述鍵值表的鍵,所述原始數(shù)據(jù)中的鍵被保存為所述鍵值表的值; 運(yùn)算模塊,用于當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),從所述鍵值表中將所述索引編碼讀取到內(nèi)存中來完成OLAP聚合運(yùn)算。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述運(yùn)算模塊包括: 處理子模塊,用于在內(nèi)存中創(chuàng)建與所述預(yù)設(shè)編碼方式對應(yīng)的字典樹; 運(yùn)算子模塊,用于當(dāng)進(jìn)行OLAP聚合運(yùn)算時(shí),讀取所述索引編碼并查詢所述字典樹來完成OLAP聚合運(yùn)算。8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述編碼模塊包括: 第一編碼子模塊,用于利用十進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述編碼模塊包括: 第二編碼子模塊,用于利用boolean類型的二進(jìn)制數(shù)字編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述編碼模塊包括: 第三編碼子模塊,用于利用二十六進(jìn)制字符編碼對原始數(shù)據(jù)中的鍵創(chuàng)建對應(yīng)的索引編碼。
【文檔編號】G06F17/30GK105956071SQ201610279001
【公開日】2016年9月21日
【申請日】2016年4月28日
【發(fā)明人】楊海樂
【申請人】樂視控股(北京)有限公司, 樂視網(wǎng)信息技術(shù)(北京)股份有限公司