1.一種面向商品篩選應(yīng)用的分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)及查詢方法,其特征在于,包括:
步驟1、根據(jù)對(duì)數(shù)據(jù)表的歷史查詢數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,確定數(shù)據(jù)表的關(guān)鍵列集合,所述數(shù)據(jù)表的關(guān)鍵列集合包括N個(gè)高頻或核心字段,其中N>1;根據(jù)關(guān)鍵列的數(shù)據(jù)相關(guān)性將關(guān)鍵列的取值劃分為M個(gè)取值區(qū)間,其中M>1,同時(shí)將存儲(chǔ)節(jié)點(diǎn)也劃分成M個(gè)區(qū)域,并將M個(gè)關(guān)鍵列的取值區(qū)間劃分到上述的M個(gè)區(qū)域內(nèi),上述區(qū)域內(nèi)包括至少一個(gè)存儲(chǔ)節(jié)點(diǎn);
步驟2、將所述數(shù)據(jù)表中的數(shù)據(jù)根據(jù)其關(guān)鍵列及取值劃分到對(duì)應(yīng)的存儲(chǔ)區(qū)域,并將該數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的存儲(chǔ)區(qū)域;
步驟3、在系統(tǒng)處理查詢請(qǐng)求時(shí)接收到查詢條件時(shí),根據(jù)查詢條件中已有的關(guān)鍵列信息。
2.根據(jù)權(quán)利要求1所述的面向商品篩選應(yīng)用的分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)及查詢方法,其特征在于,所述步驟1為基于關(guān)鍵列預(yù)處理的數(shù)據(jù)存儲(chǔ)方法,具體包括;根據(jù)對(duì)數(shù)據(jù)表的歷史查詢和應(yīng)用的需求以確定關(guān)鍵列及其數(shù)量N和存儲(chǔ)區(qū)域及其數(shù)量M;將關(guān)鍵列的取值劃分到各存儲(chǔ)區(qū)域,根據(jù)不同的數(shù)據(jù)類型,劃分策略包括兩種:基于取值范圍的數(shù)據(jù)劃分策略和基于哈希算法的數(shù)據(jù)劃分策略;
其中所述基于取值范圍的數(shù)據(jù)劃分策略適用于每個(gè)關(guān)鍵列為連續(xù)的取值;當(dāng)關(guān)鍵列的數(shù)據(jù)均為連續(xù)的值時(shí),該策略將每個(gè)關(guān)鍵列的取值劃分成不同范圍,并分配到M個(gè)存儲(chǔ)區(qū)域內(nèi);
其中所述基于哈希算法的數(shù)據(jù)劃分策略適用于關(guān)鍵列為離散的取值,并且取值沒有一定的規(guī)律性;當(dāng)關(guān)鍵列的數(shù)據(jù)為不連續(xù)或不具有一定范圍的值時(shí),該策略根據(jù)哈希算法將關(guān)鍵列的值分配到各存儲(chǔ)區(qū)域內(nèi)。
3.根據(jù)權(quán)利要求1所述的面向商品篩選應(yīng)用的分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)及查詢方法,其特征在于,所述步驟2中是根據(jù)各存儲(chǔ)區(qū)域中關(guān)鍵列取值范圍,將數(shù)據(jù)表中數(shù)據(jù)劃分到各存儲(chǔ)區(qū)域內(nèi);具體包括:
步驟21、對(duì)于數(shù)據(jù)表中的任意記錄,獲取該條記錄中所有關(guān)鍵列的K(x,y);K(x,y)表示某條數(shù)據(jù)記錄中第x關(guān)鍵列的取值所屬第y區(qū)域;并統(tǒng)計(jì)每個(gè)存儲(chǔ)區(qū)域內(nèi)y的數(shù)量;
步驟22、判斷是否在某個(gè)取值區(qū)間具有唯一最大值個(gè)y時(shí),如果是則直接將該記錄存儲(chǔ)到該存儲(chǔ)區(qū)域中;如果y不存在唯一最大值,則根據(jù)存儲(chǔ)負(fù)載均衡,將該記錄存儲(chǔ)到數(shù)據(jù)量較少的存儲(chǔ)區(qū)域中。
4.根據(jù)權(quán)利要求3所述的面向商品篩選應(yīng)用的分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)及查詢方法,其特征在于,所述步驟22中,對(duì)于一條記錄y值不存在唯一最大值時(shí),根據(jù)存儲(chǔ)負(fù)載均衡原則將該記錄存儲(chǔ)在數(shù)據(jù)量最小的存儲(chǔ)區(qū)域內(nèi)。
5.根據(jù)權(quán)利要求1所述的面向商品篩選應(yīng)用的分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)及查詢方法,其特征在于,所述步驟3中對(duì)于處理含有關(guān)鍵列的查詢請(qǐng)求時(shí),經(jīng)過關(guān)鍵列預(yù)處理,只對(duì)含有結(jié)果信息的存儲(chǔ)區(qū)域生成查詢?nèi)蝿?wù),具體包括:
步驟31、獲取查詢條件中所有關(guān)鍵列的K(x,y),并統(tǒng)計(jì)每個(gè)存儲(chǔ)區(qū)域內(nèi)y的數(shù)量;
步驟32、當(dāng)關(guān)鍵列總數(shù)N為偶數(shù)時(shí),在各存儲(chǔ)區(qū)域內(nèi)判斷,假如某存儲(chǔ)區(qū)域內(nèi)y的數(shù)量大于N/2,則直接查詢?cè)搮^(qū)域,否則查詢所有區(qū)域;當(dāng)關(guān)鍵列總數(shù)N為奇數(shù)時(shí),在各存儲(chǔ)區(qū)域內(nèi)判斷,假如某存儲(chǔ)區(qū)域內(nèi)y的數(shù)量大于(N-1)/2,則直接查詢?cè)搮^(qū)域,否則查詢所有區(qū)域。