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

一種數(shù)據(jù)存儲方法和裝置與流程

文檔序號:11774628閱讀:228來源:國知局
一種數(shù)據(jù)存儲方法和裝置與流程

本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)存儲方法和裝置。



背景技術(shù):

數(shù)據(jù)的存儲形式往往是與數(shù)據(jù)的應(yīng)用場景息息相關(guān)的,例如在olap(onlineanalyticalprocessing,聯(lián)機(jī)分析處理)等場景下,用戶關(guān)心的往往是大數(shù)據(jù)表中的某幾個列。對于傳統(tǒng)的行式數(shù)據(jù)庫而言,由于數(shù)據(jù)按行存儲,需要把包含這些列的所有行的數(shù)據(jù)全部讀取,而這些行中包含了用戶并不關(guān)系的許多無用的列,因而會讀取較多無用的數(shù)據(jù),十分不適于大數(shù)據(jù)的場景。

而采用列式存儲的列式數(shù)據(jù)庫可以很好地應(yīng)對該問題。但是目前在許多查詢場景下,當(dāng)查詢的對象是數(shù)值型的數(shù)據(jù)時,待查詢的列很可能不包含所要查詢的對象,但依然需要將該列中的所有數(shù)據(jù)進(jìn)行讀取,這就造成查詢效率偏低,資源利用率差,究其原因是現(xiàn)有的列式存儲不能很好地支持這種查詢場景。



技術(shù)實現(xiàn)要素:

鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)存儲方法和裝置。

依據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)存儲方法,包括:

將數(shù)據(jù)進(jìn)行列式存儲;

若一列數(shù)據(jù)的類型為數(shù)值型,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值;

將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

可選地,所述將數(shù)據(jù)進(jìn)行列式存儲包括:將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

可選地,所述將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值包括:

對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算;

根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

可選地,所述對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算包括:

對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;

對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

可選地,所述根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值包括:

根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’;

對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

可選地,所述將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:

設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;

對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;

將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

可選地,所述將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:

適于設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。

可選地,所述對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理包括:

利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

可選地,該方法還包括:

將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;

當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;

是則根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。

可選地,所述根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中包括:

從數(shù)據(jù)查詢請求中提取查詢數(shù)值;

對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對所述查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值;

判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

依據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲裝置,包括:

數(shù)據(jù)存儲單元,適于將數(shù)據(jù)進(jìn)行列式存儲;

元數(shù)據(jù)處理單元,適于當(dāng)一列數(shù)據(jù)的類型為數(shù)值型時,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值,將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

可選地,所述數(shù)據(jù)存儲單元,適于將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

可選地,所述元數(shù)據(jù)處理單元,適于對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

可選地,所述元數(shù)據(jù)處理單元,適于對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

可選地,所述元數(shù)據(jù)處理單元,適于根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’;對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

可選地,所述元數(shù)據(jù)處理單元,適于設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

可選地,所述元數(shù)據(jù)處理單元,適于設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。

可選地,所述元數(shù)據(jù)處理單元,適于利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

可選地,所述元數(shù)據(jù)處理單元,適于將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;

該裝置還包括:

查詢單元,適于當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;是則根據(jù)元數(shù)據(jù)處理單元中存儲的目標(biāo)列對應(yīng)的元數(shù)據(jù),判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。

可選地,所述查詢單元,適于從數(shù)據(jù)查詢請求中提取查詢數(shù)值,對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對所述查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值,判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

由上述可知,本發(fā)明的技術(shù)方案,在將數(shù)據(jù)進(jìn)行列式存儲的場景下,還對數(shù)值型的一列數(shù)據(jù)按其中數(shù)據(jù)取值的離散度劃分為多個組,并為各組生成唯一的組值,將這些組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。該技術(shù)方案提供的這種存儲手段,為一列數(shù)據(jù)添加了更多的描述信息,使得在查詢等場景下可以利用存儲的元數(shù)據(jù)來判斷是否需要讀取一列數(shù)據(jù),提高了查詢效率,減少了資源浪費。

上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

圖1示出了根據(jù)本發(fā)明一個實施例的一種數(shù)據(jù)存儲方法的流程示意圖;

圖2示出了根據(jù)本發(fā)明一個實施例的一種數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖。

具體實施方式

下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

圖1示出了根據(jù)本發(fā)明一個實施例的一種數(shù)據(jù)存儲方法的流程示意圖,如圖1所示,該方法包括:

步驟s110,將數(shù)據(jù)進(jìn)行列式存儲。

列式存儲的優(yōu)點主要包括下面幾點:極高的裝載速度;適合大數(shù)據(jù)的場景;能夠?qū)崟r加載數(shù)據(jù);高效的壓縮率;適合聚合操作。在本實施例中,不需要對列式存儲的其他方面進(jìn)行改進(jìn)。

步驟s120,若一列數(shù)據(jù)的類型為數(shù)值型,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值。

在本步驟中,在對數(shù)據(jù)進(jìn)行分組時考慮到了數(shù)據(jù)取值的離散度,這樣使得最后的分組中的數(shù)據(jù)不會過于稀疏。

步驟s130,將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

元數(shù)據(jù)是“描述數(shù)據(jù)的數(shù)據(jù)”,即是該列數(shù)據(jù)的描述信息。由于用戶對存儲的數(shù)據(jù)是需要在一些場景下進(jìn)行利用的,最常用的就是查詢場景。查詢場景下必然包括查詢條件,許多情形下,查詢條件中會包括一些限制性條件,例如查詢年齡等于15的所有數(shù)據(jù),而不是單純的把年齡這一列中的所有數(shù)據(jù)加以展示。在列式存儲的場景下,年齡這一列可能是分多個列進(jìn)行存儲的,那么在一列中就可能出現(xiàn)數(shù)據(jù)取值并不包括15的情況。但是如果沒有元數(shù)據(jù),用戶是無法知道該列是否包含取值等于15的數(shù)據(jù)的。那么應(yīng)對這一場景,可以實現(xiàn)在該列的元數(shù)據(jù)中寫入該列不存在取值等于15的數(shù)據(jù)。然而實際上,用戶的很多需求是不可預(yù)期的,無法實現(xiàn)將與所有查詢條件相應(yīng)的信息寫入到元數(shù)據(jù)中。在本實施例中將數(shù)據(jù)分為多個組并設(shè)置多個組值,可以方便用戶判斷待查詢的數(shù)據(jù)是否在該列中。當(dāng)然,本實施例中示出的這種數(shù)據(jù)存儲方法并不限于查詢場景。

可見,圖1所示的方法,在將數(shù)據(jù)進(jìn)行列式存儲的場景下,還對數(shù)值型的一列數(shù)據(jù)按其中數(shù)據(jù)取值的離散度劃分為多個組,并為各組生成唯一的組值,將這些組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。該技術(shù)方案提供的這種存儲手段,為一列數(shù)據(jù)添加了更多的描述信息,使得在查詢等場景下可以利用存儲的元數(shù)據(jù)來判斷是否需要讀取一列數(shù)據(jù),提高了查詢效率,減少了資源浪費。

在本發(fā)明的一個實施例中,上述方法中,將數(shù)據(jù)進(jìn)行列式存儲包括:將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

parquet是面向分析型業(yè)務(wù)的列式存儲格式,由twitter和cloudera合作開發(fā),2015年5月從apache的孵化器里畢業(yè)成為apache頂級項目。在本實施例中可以直接利用這種存儲格式,在此基礎(chǔ)上對一列數(shù)據(jù)進(jìn)行處理并保存元數(shù)據(jù)。

在本發(fā)明的一個實施例中,上述方法中,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值包括:對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算;根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

在本實施例中可以采取符合統(tǒng)計學(xué)規(guī)律的統(tǒng)計計算來實現(xiàn)將一列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,例如下面給出的這種方法:對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算包括:對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

在此基礎(chǔ)上,可以利用z-score標(biāo)準(zhǔn)化等處理方式對該列數(shù)據(jù)進(jìn)行處理。舉例而言,在本發(fā)明的一個實施例中,上述方法中,根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值包括:

1)根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’。

2)對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

特別地,當(dāng)n取1時,可以得到組值0和1,也就是分別對應(yīng)于該組數(shù)據(jù)中的最大值和最小值。此時如果進(jìn)行數(shù)據(jù)查詢,那么可以通過對查詢條件中的數(shù)值進(jìn)行相同的變換,來判斷變換后的數(shù)值是否在[0,1]區(qū)間中,如果在,那么說明查詢條件中的數(shù)值可能在該列數(shù)據(jù)中;否則,查詢查詢條件中的數(shù)值必然不在該列數(shù)據(jù)中。

在實際應(yīng)用中,可以根據(jù)數(shù)據(jù)的取值來確定n的取值,例如數(shù)據(jù)的取值范圍很大,那么n的取值可以較大,這樣確定的分組數(shù)量也就越多,相當(dāng)于將數(shù)據(jù)按取值細(xì)分為多個區(qū)間。

以下面這一組數(shù)為例:

15,23,11,21,31,44,12,1,21,33,21,44,55,21,2,87,12,5,32,12,23,23,99,12,11,1,12,5,1,19。

先對這組數(shù)求均值,得到μ=23.63333333;然后對該組數(shù)據(jù)求標(biāo)準(zhǔn)差,得到σ=23.14941473。然后根據(jù)z-score標(biāo)準(zhǔn)化公式對每個數(shù)進(jìn)行處理,再令n=10,利用上面的公式進(jìn)行組值計算,得到的組值為:

0,1,2,3,4,6,9,10。

經(jīng)過上述處理,我們不需要關(guān)心每一個數(shù)究竟在哪個組中。但顯然可知1這個數(shù)在0所對應(yīng)的組中,99這個數(shù)在10所對應(yīng)的組中。

將上述組值直接作為元數(shù)據(jù)存儲,需要占用的存儲空間較大,因此在本發(fā)明的一個實施例中,上述方法中,將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;將二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

例如,對于上例,相應(yīng)的二進(jìn)制串為11111010011,也就是低位在前,高位在后。

在本發(fā)明的一個實施例中,上述方法中,將二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。那么對于上例,只需要個字節(jié)即可,其中ceil是計算大于或者等于指定表達(dá)式(本例中為)的最小整數(shù)的函數(shù)。

z-score標(biāo)準(zhǔn)化的公式為但根據(jù)統(tǒng)計學(xué)規(guī)律可知,如果利用3σ進(jìn)行標(biāo)準(zhǔn)化,處理后的數(shù)據(jù)落在[-1,1]之間的概率是99.7%。因此在本發(fā)明的一個實施例中,上述方法中,對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理包括:利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

這樣可以將僅有0.3%概率存在的邊緣數(shù)據(jù)歸到最大和最小組值對應(yīng)的組中。

在本發(fā)明的一個實施例中,上述方法還包括:將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;是則根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。具體而言,根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中包括:從數(shù)據(jù)查詢請求中提取查詢數(shù)值;對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值;判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

以前面舉例的那組數(shù)為例,如果查詢條件是判斷一列中是否存在等于70的數(shù),對70進(jìn)行相同類型的統(tǒng)計計算以及計算組值,得到的組值為7,如果是直接采用組值作為元數(shù)據(jù)的方式,就可以直接判斷出7不在0、1、2、3、4、6、9、10這些組值中,說明該數(shù)不在該列中。如果是采用二進(jìn)制串作為元數(shù)據(jù)的方式,就需要判斷二進(jìn)制串的第7+1=8位上的數(shù)據(jù)是不是1,由于11111010011的第8位是0,說明該數(shù)不在該列中。

圖2示出了根據(jù)本發(fā)明一個實施例的一種數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖,如圖2所示,數(shù)據(jù)存儲裝置200包括:

數(shù)據(jù)存儲單元210,適于將數(shù)據(jù)進(jìn)行列式存儲。

元數(shù)據(jù)處理單元220,適于當(dāng)一列數(shù)據(jù)的類型為數(shù)值型時,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值,將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

可見,圖2所示的裝置,通過各單元的相互配合,在將數(shù)據(jù)進(jìn)行列式存儲的場景下,還對數(shù)值型的一列數(shù)據(jù)按其中數(shù)據(jù)取值的離散度劃分為多個組,并為各組生成唯一的組值,將這些組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。該技術(shù)方案提供的這種存儲手段,為一列數(shù)據(jù)添加了更多的描述信息,使得在查詢等場景下可以利用存儲的元數(shù)據(jù)來判斷是否需要讀取一列數(shù)據(jù),提高了查詢效率,減少了資源浪費。

在本發(fā)明的一個實施例中,上述裝置中,數(shù)據(jù)存儲單元210,適于將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’;對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;將二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)處理單元220,適于將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;該裝置還包括:查詢單元(圖未示),適于當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;是則根據(jù)元數(shù)據(jù)處理單元中存儲的目標(biāo)列對應(yīng)的元數(shù)據(jù),判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。

在本發(fā)明的一個實施例中,上述裝置中,查詢單元,適于從數(shù)據(jù)查詢請求中提取查詢數(shù)值,對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值,判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

需要說明的是,上述各裝置實施例的具體實施方式與前述對應(yīng)方法實施例的具體實施方式相同,在此不再贅述。

綜上所述,本發(fā)明的技術(shù)方案,在將數(shù)據(jù)進(jìn)行列式存儲的場景下,還對數(shù)值型的一列數(shù)據(jù)按其中數(shù)據(jù)取值的離散度劃分為多個組,并為各組生成唯一的組值,將這些組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。該技術(shù)方案提供的這種存儲手段,為一列數(shù)據(jù)添加了更多的描述信息,使得在查詢等場景下可以利用存儲的元數(shù)據(jù)來判斷是否需要讀取一列數(shù)據(jù),提高了查詢效率,減少了資源浪費。

需要說明的是:

在此提供的算法和顯示不與任何特定計算機(jī)、虛擬裝置或者其它設(shè)備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。

在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。

類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。

本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(dsp)來實現(xiàn)根據(jù)本發(fā)明實施例的數(shù)據(jù)存儲裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

本發(fā)明的實施例公開了a1、一種數(shù)據(jù)存儲方法,其中,該方法包括:

將數(shù)據(jù)進(jìn)行列式存儲;

若一列數(shù)據(jù)的類型為數(shù)值型,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值;

將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

a2、如a1所述的方法,其中,所述將數(shù)據(jù)進(jìn)行列式存儲包括:將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

a3、如a1所述的方法,其中,所述將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值包括:

對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算;

根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

a4、如a3所述的方法,其中,所述對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算包括:

對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;

對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

a5、如a4所述的方法,其中,所述根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值包括:

根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’;

對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

a6、如a5所述的方法,其中,所述將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:

設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;

對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;

將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

a7、如a6所述的方法,其中,所述將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存包括:

設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。

a8、如a5所述的方法,其中,所述對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理包括:

利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

a9、如a8所述的方法,其中,該方法還包括:

將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;

當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;

是則根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。

a10、如a8所述的方法,其中,所述根據(jù)目標(biāo)列對應(yīng)的元數(shù)據(jù)判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中包括:

從數(shù)據(jù)查詢請求中提取查詢數(shù)值;

對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對所述查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值;

判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

本發(fā)明的實施例還公開了b11、一種數(shù)據(jù)存儲裝置,其中,該裝置包括:

數(shù)據(jù)存儲單元,適于將數(shù)據(jù)進(jìn)行列式存儲;

元數(shù)據(jù)處理單元,適于當(dāng)一列數(shù)據(jù)的類型為數(shù)值型時,將該列數(shù)據(jù)按數(shù)據(jù)取值的離散度劃分為m個組,并為各組分別生成對應(yīng)的組值,將m個組值作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

b12、如b11所述的裝置,其中,

所述數(shù)據(jù)存儲單元,適于將數(shù)據(jù)按parquet格式進(jìn)行列式存儲。

b13、如b11所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于對該列數(shù)據(jù)進(jìn)行指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果將該列數(shù)據(jù)劃分為m個組,并為各組分別生成對應(yīng)的組值。

b14、如b13所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于對該列數(shù)據(jù)進(jìn)行求均值計算,將求得的均值記為μ;對該列數(shù)據(jù)進(jìn)行求標(biāo)準(zhǔn)差計算,將求得的標(biāo)準(zhǔn)差記為σ。

b15、如b14所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于根據(jù)μ和σ,對該列的每個數(shù)據(jù)xi進(jìn)行標(biāo)準(zhǔn)化處理,得到相應(yīng)的標(biāo)準(zhǔn)化的數(shù)據(jù)xi’;對每個標(biāo)準(zhǔn)化的數(shù)據(jù)xi’,以如下公式確定原數(shù)據(jù)xi所在分組的組值m:其中xmax為該列數(shù)據(jù)中的最大值,xmin為該列數(shù)據(jù)中的最小值,n為不小于1的自然數(shù)。

b16、如b15所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于設(shè)置一個長度為n+1的二進(jìn)制串,該二進(jìn)制串各位上的數(shù)據(jù)的初始值為0;對于得到的各組值m,將該二進(jìn)制串上第m+1位上的數(shù)據(jù)修改為1;將所述二進(jìn)制串作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存。

b17、如b16所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于設(shè)置一個字節(jié)數(shù)為的字節(jié)數(shù)組,用于存儲該二進(jìn)制串。

b18、如b15所述的裝置,其中,所述元數(shù)據(jù)處理單元,適于利用公式對該列的每個數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)歸一化,若得到的xi'>1,則令xi'=1;若得到的xi'<-1,則令xi'=-1。

b19、如b18所述的裝置,其中,

所述元數(shù)據(jù)處理單元,適于將μ和σ作為該列數(shù)據(jù)的元數(shù)據(jù)進(jìn)行保存;

該裝置還包括:

查詢單元,適于當(dāng)接收到一個數(shù)據(jù)查詢請求時,判斷待查詢的目標(biāo)列的數(shù)據(jù)類型是否為數(shù)值型;是則根據(jù)元數(shù)據(jù)處理單元中存儲的目標(biāo)列對應(yīng)的元數(shù)據(jù),判斷是否讀取目標(biāo)列的數(shù)據(jù)到內(nèi)存中。

b20、如b19所述的裝置,其中,

所述查詢單元,適于從數(shù)據(jù)查詢請求中提取查詢數(shù)值,對待查詢的目標(biāo)列,根據(jù)各列的元數(shù)據(jù)對所述查詢數(shù)值進(jìn)行相應(yīng)的指定類型的統(tǒng)計計算,根據(jù)統(tǒng)計計算結(jié)果確定該查詢數(shù)值對應(yīng)的組值,判斷該組值是否與該列元數(shù)據(jù)中記錄的任一個組值相匹配,是則讀取該列的數(shù)據(jù)到內(nèi)存中,否則跳過該列。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
镇宁| 金寨县| 启东市| 贞丰县| 长兴县| 台安县| 莫力| 屏边| 洮南市| 扎鲁特旗| 侯马市| 石林| 岳西县| 高碑店市| 寿光市| 金沙县| 油尖旺区| 麟游县| 璧山县| 蛟河市| 利川市| 宁阳县| 金溪县| 宣城市| 高陵县| 若尔盖县| 白银市| 沾益县| 邢台县| 浦东新区| 紫阳县| 甘孜| 济源市| 乃东县| 扶余县| 陆河县| 苏尼特左旗| 铜梁县| 通道| 敦化市| 明光市|