亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法

文檔序號(hào):6542378閱讀:122來(lái)源:國(guó)知局
一種數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法,屬于數(shù)據(jù)庫(kù)處理【技術(shù)領(lǐng)域】。該方法包括:根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表;在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引;從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,獲取與索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表;將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中。本發(fā)明能夠提高對(duì)業(yè)務(wù)數(shù)據(jù)的查詢效率。
【專(zhuān)利說(shuō)明】一種數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)庫(kù)處理【技術(shù)領(lǐng)域】,具體涉及一種數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法。
【背景技術(shù)】
[0002]傳統(tǒng)的數(shù)據(jù)存儲(chǔ)和訪問(wèn)的實(shí)現(xiàn)方式一般是基于關(guān)系型數(shù)據(jù)庫(kù)或者是基于nosql數(shù)據(jù)庫(kù)的分布式緩存。對(duì)于關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)方式,數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)的磁盤(pán)中,應(yīng)用程序通過(guò)sql語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。由于sql語(yǔ)句的語(yǔ)法非常靈活,因此能夠支持多種排序和多種分組條件下的復(fù)雜查詢,即能夠支持復(fù)雜的查詢業(yè)務(wù)。但是,關(guān)系型數(shù)據(jù)庫(kù)需要維護(hù)數(shù)據(jù)一致性,并維護(hù)大量關(guān)聯(lián)關(guān)系,并且數(shù)據(jù)存儲(chǔ)在硬盤(pán)上,導(dǎo)致數(shù)據(jù)查詢速度慢,特別是在高并發(fā)訪問(wèn)情況下會(huì)嚴(yán)重影響查詢效率。
[0003]對(duì)于nosql數(shù)據(jù)庫(kù)實(shí)現(xiàn)方式,數(shù)據(jù)以鍵-值(key-value)對(duì)的方式存儲(chǔ)在內(nèi)存中。在這種實(shí)現(xiàn)方式下,由于數(shù)據(jù)存儲(chǔ)在內(nèi)存中,訪問(wèn)速度快,并且通過(guò)標(biāo)準(zhǔn)api(應(yīng)用程序編程接口)獲取數(shù)據(jù)簡(jiǎn)單易用。但這種實(shí)現(xiàn)方式無(wú)法很好的支持多種排序和多種組合條件的復(fù)雜查詢,無(wú)法支持復(fù)雜的查詢業(yè)務(wù)。
[0004]可見(jiàn)上述兩種數(shù)據(jù)存儲(chǔ)和訪問(wèn)的實(shí)現(xiàn)方式各有優(yōu)劣。而如何在支持復(fù)雜的查詢業(yè)務(wù)的前提下提高數(shù)據(jù)訪問(wèn)效率,就成為亟待解決的技術(shù)問(wèn)題。

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

[0005]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的數(shù)據(jù)存儲(chǔ)系統(tǒng)和存儲(chǔ)方法。
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)存儲(chǔ)方法,適于將來(lái)自第一數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,該方法包括:
[0007]根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式;
[0008]在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引,其中每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng);
[0009]從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0010]根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表;以及
[0011]將與每個(gè)索弓I相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索弓I的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中。
[0012]可選地,所述根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,包括:[0013]根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表;
[0014]根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,構(gòu)造所述索引列表。
[0015]可選地,所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí);
[0016]在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。
[0017]可選地,所述索引名稱(chēng)還包括數(shù)據(jù)鍵值類(lèi)型;
[0018]在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)還包括數(shù)據(jù)鍵值類(lèi)型,以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的與數(shù)據(jù)鍵值類(lèi)型對(duì)應(yīng)的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容;
[0019]其中,所述數(shù)據(jù)鍵值類(lèi)型用于標(biāo)識(shí)鍵值信息,所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng)。
[0020]可選地,所述方法還包括:
[0021]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值,其中所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng);
[0022]根據(jù)查詢方式確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0023]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,并從去序列化后的內(nèi)容中獲取與鍵值對(duì)應(yīng)的內(nèi)容返回給應(yīng)用服務(wù)器。
[0024]可選地,所述方法還包括:
[0025]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值;
[0026]根據(jù)查詢方式和鍵值確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0027]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,將去序列化后的內(nèi)容返回給應(yīng)用服務(wù)器。
[0028]可選地,第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目以關(guān)系型數(shù)據(jù)庫(kù)方式進(jìn)行存儲(chǔ);以及
[0029]第二數(shù)據(jù)存儲(chǔ)器中的索引以索引名稱(chēng)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表為值的鍵-值方式進(jìn)行存儲(chǔ),以及數(shù)據(jù)條目以數(shù)據(jù)條目的唯一標(biāo)識(shí)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為值的鍵-值方式進(jìn)行存儲(chǔ)。
[0030]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),適于將來(lái)自第一數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,該系統(tǒng)包括:
[0031]索引列表構(gòu)造單元,適于根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式;
[0032]索引存儲(chǔ)單元,適于在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引,其中每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng);
[0033]數(shù)據(jù)條目存儲(chǔ)單元,適于從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;以及
[0034]關(guān)聯(lián)單元,適于根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表;
[0035]其中,所述索引存儲(chǔ)單元被配置成將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中。
[0036]可選地,所述索引列表構(gòu)造單元被配置成:
[0037]根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表;
[0038]根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,構(gòu)造所述索引列表。
[0039]可選地,所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí);
[0040]在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。
[0041]可選地,所述索引名稱(chēng)還包括數(shù)據(jù)鍵值類(lèi)型;
[0042]在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)還包括數(shù)據(jù)鍵值類(lèi)型,以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的與數(shù)據(jù)鍵值類(lèi)型對(duì)應(yīng)的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容;
[0043]其中,所述數(shù)據(jù)鍵值類(lèi)型用于標(biāo)識(shí)鍵值信息,所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng)。
[0044]可選地,所述第二數(shù)據(jù)存儲(chǔ)器還包括查詢接口,所述查詢接口被配置成:
[0045]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值,其中所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng);
[0046]根據(jù)查詢方式確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0047]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,并從去序列化后的內(nèi)容中獲取與鍵值對(duì)應(yīng)的內(nèi)容返回給應(yīng)用服務(wù)器。
[0048]可選地,所述第二數(shù)據(jù)存儲(chǔ)器還包括查詢接口,所述查詢接口被配置成:
[0049]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值;
[0050]根據(jù)查詢方式和鍵值確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0051]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,將去序列化后的內(nèi)容返回給應(yīng)用服務(wù)器。
[0052]可選地,第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目以關(guān)系型數(shù)據(jù)庫(kù)方式進(jìn)行存儲(chǔ);以及
[0053]第二數(shù)據(jù)存儲(chǔ)器中的索引以索引名稱(chēng)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表為值的鍵-值方式進(jìn)行存儲(chǔ),以及數(shù)據(jù)條目以數(shù)據(jù)條目的唯一標(biāo)識(shí)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為值的鍵-值方式進(jìn)行存儲(chǔ)。
[0054]根據(jù)本發(fā)明的又一方面,提供了一種數(shù)據(jù)查詢系統(tǒng),包括第一數(shù)據(jù)存儲(chǔ)器、數(shù)據(jù)發(fā)布服務(wù)器和第二數(shù)據(jù)存儲(chǔ)器,其中,所述數(shù)據(jù)發(fā)布服務(wù)器包括上述的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
[0055]根據(jù)本發(fā)明的上述一個(gè)或多個(gè)技術(shù)方案,通過(guò)采用離線計(jì)算代替同步計(jì)算,并整合傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)和nosql數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),既滿足了對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行復(fù)雜查詢的功能要求,又解決了基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)查詢效率較低的問(wèn)題,特別是提高了高并發(fā)環(huán)境下的數(shù)據(jù)查詢效率。
[0056]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0057]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0058]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖;
[0059]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;以及
[0060]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。
【具體實(shí)施方式】
[0061]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0062]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)示意圖。參照?qǐng)D1,本發(fā)明實(shí)施例的數(shù)據(jù)查詢系統(tǒng)可以包括:第一數(shù)據(jù)存儲(chǔ)器100、數(shù)據(jù)發(fā)布服務(wù)器20和第二數(shù)據(jù)存儲(chǔ)器300,其中數(shù)據(jù)發(fā)布服務(wù)器20分別與第一數(shù)據(jù)存儲(chǔ)器100和第二數(shù)據(jù)存儲(chǔ)器300通信連接,且數(shù)據(jù)發(fā)布服務(wù)器20包括數(shù)據(jù)存儲(chǔ)系統(tǒng)200,即數(shù)據(jù)存儲(chǔ)系統(tǒng)200駐留在數(shù)據(jù)發(fā)布服務(wù)器20中。
[0063]數(shù)據(jù)存儲(chǔ)系統(tǒng)200能夠從第一數(shù)據(jù)存儲(chǔ)器中100獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中,其中在第二數(shù)據(jù)存儲(chǔ)器300中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容。數(shù)據(jù)存儲(chǔ)系統(tǒng)200還能夠根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器100中的數(shù)據(jù)條目的各種查詢方式構(gòu)造索引列表(索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式),并將該索引列表中的每個(gè)索引存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中,其中在第二數(shù)據(jù)存儲(chǔ)器300中,每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng)以及相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表。
[0064]根據(jù)數(shù)據(jù)存儲(chǔ)系統(tǒng)200的上述處理,相當(dāng)于預(yù)先完成了在各種查詢方式下對(duì)第一數(shù)據(jù)存儲(chǔ)器100中數(shù)據(jù)條目的查詢,并將查詢結(jié)果存儲(chǔ)在第二數(shù)據(jù)存儲(chǔ)器300中,即采用離線計(jì)算代替了傳統(tǒng)的同步計(jì)算。這樣,當(dāng)應(yīng)用服務(wù)器400需要查詢第一數(shù)據(jù)存儲(chǔ)器100中的數(shù)據(jù)條目時(shí),可以直接從第二數(shù)據(jù)存儲(chǔ)器300提供的查詢接口來(lái)獲取查詢結(jié)果,由于不需要根據(jù)具體的查詢方式進(jìn)行實(shí)時(shí)計(jì)算,因此提高了數(shù)據(jù)查詢速度。具體地,所述查詢接口接收到應(yīng)用服務(wù)器400發(fā)來(lái)的查詢請(qǐng)求時(shí),先根據(jù)所述查詢請(qǐng)求中攜帶的查詢方式信息確定索引名稱(chēng),然后根據(jù)索引名稱(chēng)從第二數(shù)據(jù)存儲(chǔ)器200中獲取對(duì)應(yīng)的數(shù)據(jù)條目標(biāo)識(shí)列表,最后根據(jù)獲取到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器200中獲取對(duì)應(yīng)的數(shù)據(jù)條目集合。
[0065]第一數(shù)據(jù)存儲(chǔ)器100可以是關(guān)系型數(shù)據(jù)庫(kù),例如Oracle、DB2、Microsoft SQLServer和MySQL等;第二數(shù)據(jù)存儲(chǔ)器200可以是鍵-值方式的no sql數(shù)據(jù)庫(kù),例如redis數(shù)據(jù)庫(kù)。此種情況下,該數(shù)據(jù)查詢系統(tǒng)就整合了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)和nosql數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),既滿足了對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行復(fù)雜查詢的功能要求,又解決了基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)查詢效率較低的問(wèn)題,特別是提高了高并發(fā)環(huán)境下的數(shù)據(jù)查詢效率。其中,redis是一個(gè)key-value存儲(chǔ)系統(tǒng),它支持存儲(chǔ)的value類(lèi)型包括string (字符串)、list (鏈表)、set (集合)、sortedset (有序集合)和hash (哈希)類(lèi)型。這些數(shù)據(jù)類(lèi)型都支持push/pop、add/remove及取交集、并集和差集及等操作,而且這些操作都是原子性的。
[0066]以下對(duì)上述數(shù)據(jù)查詢系統(tǒng)中的數(shù)據(jù)存儲(chǔ)系統(tǒng)200的具體構(gòu)成和工作原理進(jìn)行詳細(xì)描述。
[0067]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。該數(shù)據(jù)存儲(chǔ)系統(tǒng)200可以駐留在數(shù)據(jù)發(fā)布服務(wù)器20中,所述數(shù)據(jù)發(fā)布服務(wù)器20分別與第一數(shù)據(jù)存儲(chǔ)器100和第二數(shù)據(jù)存儲(chǔ)器300通信連接,通過(guò)所述數(shù)據(jù)存儲(chǔ)系統(tǒng)200,能夠?qū)?lái)自第一數(shù)據(jù)存儲(chǔ)器100的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中,從而完成數(shù)據(jù)的發(fā)布。其中,第一數(shù)據(jù)存儲(chǔ)器100可以是關(guān)系型數(shù)據(jù)庫(kù),例如Oracle、DB2、Microsoft SQL Server和MySQL等;第二數(shù)據(jù)存儲(chǔ)器200可以是鍵-值方式的no sql數(shù)據(jù)庫(kù),例如redis數(shù)據(jù)庫(kù)。
[0068]參照?qǐng)D2,本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)200可以包括:索引列表構(gòu)造單元210、索引存儲(chǔ)單元220、數(shù)據(jù)條目存儲(chǔ)單元230和關(guān)聯(lián)單元240。
[0069]考慮到對(duì)業(yè)務(wù)數(shù)據(jù)的使用實(shí)際情況,在現(xiàn)實(shí)中使用的數(shù)據(jù)查詢方式是有限的,因此,索引列表構(gòu)造單元210可以根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器100中的數(shù)據(jù)條目的各種查詢方式構(gòu)造索引列表,也就是說(shuō),索引列表中包括多個(gè)索引,每個(gè)索引對(duì)應(yīng)一種查詢方式。
[0070]對(duì)數(shù)據(jù)條目的查詢方式一般包括排序查詢方式(order by)和分組查詢方式(group by),以及二者的組合。order by和group by的數(shù)量是有限的,而且大部分的orderby和group by是一起使用的,因此,索引列表構(gòu)造單元210可以先根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表,然后,根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,來(lái)構(gòu)造所述索引列表。當(dāng)然,對(duì)數(shù)據(jù)條目的查詢方式也可以是現(xiàn)有技術(shù)中的其他查詢方式,甚至是將來(lái)有可能出現(xiàn)的其他查詢方式,本發(fā)明實(shí)施例對(duì)此不做限制。
[0071]索引列表構(gòu)造單元210構(gòu)造完成索引列表后,索引存儲(chǔ)單元220可以在第二數(shù)據(jù)存儲(chǔ)器300中存儲(chǔ)該索引列表中的每個(gè)索引,其中每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng)以及與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表。在具體實(shí)現(xiàn)時(shí),索引存儲(chǔ)單元220可以先將索引名稱(chēng)作為鍵(key)存儲(chǔ)到第二存儲(chǔ)器300中,對(duì)應(yīng)的值(vlaue)暫時(shí)為空。后續(xù),通過(guò)關(guān)聯(lián)單元240確定索引名稱(chēng)對(duì)應(yīng)的數(shù)據(jù)條目標(biāo)識(shí)列表后,再將該數(shù)據(jù)條目標(biāo)識(shí)列表作為值與對(duì)應(yīng)的索引名稱(chēng)相關(guān)聯(lián)的存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中。例如,對(duì)于redis數(shù)據(jù)庫(kù),對(duì)應(yīng)的值的類(lèi)型可以采用有序集(sorted set),即所存儲(chǔ)的數(shù)據(jù)條目標(biāo)識(shí)列表中的數(shù)據(jù)條目標(biāo)識(shí)是有序的,其順序由索引對(duì)應(yīng)的查詢方式所確定。
[0072]在一種實(shí)現(xiàn)方式中,所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)(orderID)和分組查詢方式標(biāo)識(shí)(groupID)。在另一種實(shí)現(xiàn)方式中,所述索引名稱(chēng)包括數(shù)據(jù)鍵值類(lèi)型、排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)。其中,所述數(shù)據(jù)鍵值類(lèi)型用于標(biāo)識(shí)鍵值信息,所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng)。在具體實(shí)現(xiàn)時(shí),所述數(shù)據(jù)鍵值類(lèi)型可以直接采用所述鍵值,也可以是對(duì)鍵值進(jìn)行編碼后的值,且本發(fā)明實(shí)施例對(duì)具體的編碼方式不做限制。[0073]例如,假設(shè)數(shù)據(jù)條目有4個(gè)字段,字段名稱(chēng)分別為A、B、C、D,用戶查詢的鍵值為{A、C},則所述數(shù)據(jù)鍵值類(lèi)型可以是{A、C},也可以是對(duì){A、C}進(jìn)行編碼后的值例如2。
[0074]數(shù)據(jù)條目存儲(chǔ)單元230適于從第一數(shù)據(jù)存儲(chǔ)器100中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中,其中在第二數(shù)據(jù)存儲(chǔ)器300中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容。例如對(duì)于redis數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)條目是以數(shù)據(jù)條目的唯一標(biāo)識(shí)作為鍵,以相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容作為值進(jìn)行存儲(chǔ)。
[0075]當(dāng)所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)時(shí),則在第二數(shù)據(jù)存儲(chǔ)器300中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器100中的唯一標(biāo)識(shí),相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。例如,當(dāng)?shù)谝粩?shù)據(jù)存儲(chǔ)器100為關(guān)系型數(shù)據(jù)庫(kù)時(shí),該唯一標(biāo)識(shí)可以為數(shù)據(jù)條目的主鍵。
[0076]其中,對(duì)數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化是指:依次取出該數(shù)據(jù)條目的各個(gè)字段的值,將每個(gè)字段的值作為一個(gè)序列項(xiàng)來(lái)組合成一個(gè)序列,且各序列項(xiàng)之間用分隔符例如逗號(hào)進(jìn)行分割;或者,依次取出該數(shù)據(jù)條目的各個(gè)字段的值,將每個(gè)字段的名稱(chēng)和字段的值作為一個(gè)序列項(xiàng)來(lái)組合成一個(gè)序列,且字段的名稱(chēng)和字段的值之間用分割符例如冒號(hào)分害I],各序列項(xiàng)之間用分隔符例如逗號(hào)進(jìn)行分割。
[0077]例如,假設(shè)數(shù)據(jù)條目有4個(gè)字段,字段名稱(chēng)分別為A、B、C、D,對(duì)應(yīng)的字段值分別為a, b, c, d,則進(jìn)行序列化后得到的內(nèi)容為{a, b, c, d},或者為{A:a, B:b, C:c, D:d}。
[0078]當(dāng)所述索引名稱(chēng)包括數(shù)據(jù)鍵值類(lèi)型、排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)時(shí),則在第二數(shù)據(jù)存儲(chǔ)器300中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器100中的唯一標(biāo)識(shí),相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的與數(shù)據(jù)鍵值類(lèi)型對(duì)應(yīng)的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。例如,當(dāng)?shù)谝粩?shù)據(jù)存儲(chǔ)器100為關(guān)系型數(shù)據(jù)庫(kù)時(shí),該唯一標(biāo)識(shí)可以為數(shù)據(jù)條目的主鍵。
[0079]例如,假設(shè)數(shù)據(jù)條目有4個(gè)字段,字段名稱(chēng)分別為A、B、C、D,對(duì)應(yīng)的字段值分別為
a,b,c,d,數(shù)據(jù)鍵值類(lèi)型為{A、C},則進(jìn)行序列化后得到的內(nèi)容為{a,c},或者為{A:a,C:c}。
[0080]關(guān)聯(lián)單元240適于根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器300中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表。
[0081]每個(gè)索引對(duì)應(yīng)一種查詢方式,對(duì)于每種查詢方式,關(guān)聯(lián)單元240可以構(gòu)造相應(yīng)的查詢語(yǔ)句來(lái)從第一數(shù)據(jù)存儲(chǔ)器100中獲取相對(duì)應(yīng)的數(shù)據(jù)條目。例如,當(dāng)所述第一數(shù)據(jù)存儲(chǔ)器100為關(guān)系型數(shù)據(jù)庫(kù)時(shí),關(guān)聯(lián)單元240可以根據(jù)查詢方式構(gòu)造SQL語(yǔ)句,根據(jù)構(gòu)造的SQL語(yǔ)句對(duì)所述第一數(shù)據(jù)存儲(chǔ)器100進(jìn)行操作,從而獲得與該查詢方式對(duì)應(yīng)的數(shù)據(jù)條目。SQL語(yǔ)句示例如下:
[0082]select*from 表名 sort by A group by B。
[0083]關(guān)聯(lián)單元240獲取到與該索引相關(guān)聯(lián)的一個(gè)或多個(gè)數(shù)據(jù)條目后,確定每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí),例如為數(shù)據(jù)條目的主鍵,從而得到與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,然后,索引存儲(chǔ)單元220可以將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器300中。如此,就將第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)的索引與該索引對(duì)應(yīng)的數(shù)據(jù)條目集合關(guān)聯(lián)起來(lái)了。[0084]根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)200,通過(guò)采用離線計(jì)算代替同步計(jì)算,有效的提高了數(shù)據(jù)的查詢效率。例如,可以在所述第二數(shù)據(jù)存儲(chǔ)器300中配置查詢接口,應(yīng)用服務(wù)器400不需要訪問(wèn)第一數(shù)據(jù)存儲(chǔ)器100進(jìn)行實(shí)時(shí)計(jì)算,而是直接從查詢接口來(lái)獲取與查詢請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)條目,如此,避免了對(duì)第一數(shù)據(jù)存儲(chǔ)器100中數(shù)據(jù)條目的復(fù)雜的查詢運(yùn)算,提高了查詢速度。
[0085]如前所述,在一種實(shí)現(xiàn)方式中,第二數(shù)據(jù)存儲(chǔ)器中300存儲(chǔ)的索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí);在另一種實(shí)現(xiàn)方式中,所述索引名稱(chēng)包括數(shù)據(jù)鍵值類(lèi)型、排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)。
[0086]對(duì)應(yīng)于上述的兩種實(shí)現(xiàn)方式,所述查詢接口獲取查詢數(shù)據(jù)的方式也有兩種。在一種實(shí)現(xiàn)方式中,查詢接口獲取數(shù)據(jù)的過(guò)程為:
[0087]獲取來(lái)自應(yīng)用服務(wù)器400的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值;
[0088]根據(jù)查詢方式確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器300中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器300中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0089]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,并從去序列化后的內(nèi)容中獲取與鍵值對(duì)應(yīng)的內(nèi)容返回給應(yīng)用服務(wù)器400。
[0090]其中,去序列化是序列化的逆過(guò)程,其具體實(shí)現(xiàn)過(guò)程本領(lǐng)域技術(shù)人員容易根據(jù)前述的序列化過(guò)程確定。
[0091]在另一種實(shí)現(xiàn)方式中,查詢接口獲取數(shù)據(jù)的過(guò)程為:
[0092]獲取來(lái)自應(yīng)用服務(wù)器400的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值;
[0093]根據(jù)查詢方式和鍵值確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器300中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器300中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0094]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,將去序列化后的內(nèi)容返回給應(yīng)用服務(wù)器400。
[0095]兩種實(shí)現(xiàn)方式的一個(gè)差別在于:在第一種實(shí)現(xiàn)方式中,去序列化后的內(nèi)容是整個(gè)數(shù)據(jù)條目的內(nèi)容,還需要從中獲取與鍵值對(duì)應(yīng)的內(nèi)容后再返回給應(yīng)用服務(wù)器;在第二種實(shí)現(xiàn)方式中,去序列化后的內(nèi)容是數(shù)據(jù)條目中與鍵值對(duì)應(yīng)的內(nèi)容,可以直接返回給應(yīng)用服務(wù)器。
[0096]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)方法的流程示意圖,該數(shù)據(jù)存儲(chǔ)方法適于將來(lái)自第一數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中第一數(shù)據(jù)存儲(chǔ)器可以是關(guān)系型數(shù)據(jù)庫(kù),例如0racle、DB2、Microsoft SQL Server和MySQL等,第二數(shù)據(jù)存儲(chǔ)器可以是鍵-值方式的no sql數(shù)據(jù)庫(kù),例如redis數(shù)據(jù)庫(kù)。
[0097]參照?qǐng)D3,所述數(shù)據(jù)存儲(chǔ)器方法可以包括:
[0098]步驟S310,根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式;
[0099]對(duì)數(shù)據(jù)條目的查詢方式一般包括排序查詢方式(order by)和分組查詢方式(group by),以及二者的組合。order by和group by的數(shù)量是有限的,而且大部分的orderby和group by是一起使用的,因此,可以先根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表;然后,根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,構(gòu)造所述索引列表。當(dāng)然,對(duì)數(shù)據(jù)條目的查詢方式也可以是現(xiàn)有技術(shù)中的其他查詢方式,甚至是將來(lái)有可能出現(xiàn)的其他查詢方式,本發(fā)明實(shí)施例對(duì)此不做限制。
[0100]步驟S320,在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引;
[0101]在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng)以及與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表。在本步驟中,可以先將索引名稱(chēng)作為鍵(key)存儲(chǔ)到第二存儲(chǔ)器中,對(duì)應(yīng)的值(vlaue)暫時(shí)為空。在后續(xù)的步驟中確定了索引名稱(chēng)對(duì)應(yīng)的數(shù)據(jù)條目標(biāo)識(shí)列表后,再將該數(shù)據(jù)條目標(biāo)識(shí)列表作為值與對(duì)應(yīng)的索引名稱(chēng)相關(guān)聯(lián)的存儲(chǔ)到第二存儲(chǔ)器中。例如,對(duì)于redis數(shù)據(jù)庫(kù),對(duì)應(yīng)的值的類(lèi)型可以采用有序集(sorted set),即所存儲(chǔ)的數(shù)據(jù)條目標(biāo)識(shí)列表中的數(shù)據(jù)條目標(biāo)識(shí)是有序的,其順序由索引對(duì)應(yīng)的查詢方式所確定。
[0102]在一種實(shí)現(xiàn)方式中,所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)(orderID)和分組查詢方式標(biāo)識(shí)(groupID)。在另一種實(shí)現(xiàn)方式中,所述索引名稱(chēng)包括數(shù)據(jù)鍵值類(lèi)型、排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)。其中,所述數(shù)據(jù)鍵值類(lèi)型用于標(biāo)識(shí)鍵值信息,所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng)。在具體實(shí)現(xiàn)時(shí),所述數(shù)據(jù)鍵值類(lèi)型可以直接采用所述鍵值,也可以是對(duì)鍵值進(jìn)行編碼后的值,且本發(fā)明實(shí)施例對(duì)具體的編碼方式不做限制。
[0103]步驟S330,從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中;
[0104]在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容。例如對(duì)于redis數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)條目是以數(shù)據(jù)條目的唯一標(biāo)識(shí)作為鍵,以相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容作為值進(jìn)行存儲(chǔ)。
[0105]當(dāng)所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)時(shí),則在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。例如,當(dāng)?shù)谝粩?shù)據(jù)存儲(chǔ)器為關(guān)系型數(shù)據(jù)庫(kù)時(shí),該唯一標(biāo)識(shí)可以為數(shù)據(jù)條目的主鍵。
[0106]當(dāng)所述索引名稱(chēng)包括數(shù)據(jù)鍵值類(lèi)型、排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí)時(shí),則在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的與數(shù)據(jù)鍵值類(lèi)型對(duì)應(yīng)的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。例如,當(dāng)?shù)谝粩?shù)據(jù)存儲(chǔ)器為關(guān)系型數(shù)據(jù)庫(kù)時(shí),該唯一標(biāo)識(shí)可以為數(shù)據(jù)條目的主鍵。
[0107]步驟S340,根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表;
[0108]每個(gè)索引對(duì)應(yīng)一種查詢方式,對(duì)于每種查詢方式,可以構(gòu)造相應(yīng)的查詢語(yǔ)句來(lái)從第一數(shù)據(jù)存儲(chǔ)器中獲取相對(duì)應(yīng)的數(shù)據(jù)條目。例如,當(dāng)所述第一數(shù)據(jù)存儲(chǔ)器為關(guān)系型數(shù)據(jù)庫(kù)時(shí),可以根據(jù)查詢方式構(gòu)造SQL語(yǔ)句,根據(jù)構(gòu)造的SQL語(yǔ)句對(duì)所述第一數(shù)據(jù)存儲(chǔ)器進(jìn)行操作,從而獲得與該查詢方式對(duì)應(yīng)的數(shù)據(jù)條目。
[0109]獲取到與該索引相關(guān)聯(lián)的一個(gè)或多個(gè)數(shù)據(jù)條目后,再進(jìn)一步確定每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí),例如為數(shù)據(jù)條目的主鍵,從而得到與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表。
[0110]步驟S350,將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,如此,就將第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)的索引與該索引對(duì)應(yīng)的數(shù)據(jù)條目集合關(guān)聯(lián)起來(lái)了。
[0111]根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法,通過(guò)采用離線計(jì)算代替同步計(jì)算,有效的提高了數(shù)據(jù)的查詢效率。例如,可以在所述第二數(shù)據(jù)存儲(chǔ)器中配置查詢接口,應(yīng)用服務(wù)器不需要訪問(wèn)第一數(shù)據(jù)存儲(chǔ)器進(jìn)行實(shí)時(shí)計(jì)算,而是直接從查詢接口來(lái)獲取與查詢請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)條目,如此,避免了對(duì)第一數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)條目的復(fù)雜的查詢運(yùn)算,提高了查詢速度。
[0112]也就是說(shuō),本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法還可以包括如下步驟:
[0113]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值,其中所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng);
[0114]根據(jù)查詢方式確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0115]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,并從去序列化后的內(nèi)容中獲取與鍵值對(duì)應(yīng)的內(nèi)容返回給應(yīng)用服務(wù)器。
[0116]或者,本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法還可以包括如下步驟:
[0117]獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值;
[0118]根據(jù)查詢方式和鍵值確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;
[0119]對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,將去序列化后的內(nèi)容返回給應(yīng)用服務(wù)器。
[0120]以下給出本發(fā)明的一個(gè)應(yīng)用實(shí)例。
[0121]在該應(yīng)用實(shí)例中,汽車(chē)經(jīng)銷(xiāo)商降價(jià)排行榜數(shù)據(jù)存儲(chǔ)在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,在該關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)的汽車(chē)數(shù)據(jù)條目包括如下字段名稱(chēng):
[0122]DealerId SpecId SpecName SpecImage SeriesId SeriesName BrandIdFactoryId
[0123]NewsId NewsType NewsTitle StartDate EndDate DTime Price OriginalPrice
[0124]PriceOffPercent OrdersLastMonth OrdersLastQuarter CreateTimeModifyTime
[0125]PID CID SID KindId NewsTemplateId serieslevel InventoryState
[0126]PriceScope EquipCarId PackageName PackagePrice IsRecommend PriceW
[0127]IsLastWeek
[0128]以下列舉該關(guān)系型數(shù)據(jù)庫(kù)中的3個(gè)數(shù)據(jù)條目:
[0129]數(shù)據(jù)條目1:1104632012 款 S53.0T Sportback ?/upload/2013/7/19/1_201307191945189324136.jpg2734 奧迪 S5337982664710 奧迪 S5 現(xiàn)車(chē)充足最高優(yōu)惠
9.46 萬(wàn)元 2013-12-3100:00:00.0002014-01-0500:00:00.0002013-12-3110:35:33.7236334007280001319512013-12-3110:55:002013-12-3110:55:00110000110100110105126713904070000641
[0130]數(shù)據(jù)條目2:1107712013 款 S64.0TFSI ?/upload/2013/4/19/1_201304191833167634435.jpg2736 奧迪 S6337982665410 奧迪 S6 現(xiàn)車(chē)充足最高優(yōu)惠
6.93 萬(wàn)元 2013-12-3100:00:00.0002014-01-0500:00:00.0002013-12-3110:37:12.510988700105800079712013-12-3110:55:002013-12-3110:55:001100001101001101051267142
950100000991
[0131]數(shù)據(jù)條目3:1122032012 款 30FSI 技術(shù)型~/upload/spec/12203/1_201207041848360214178.jpgl8 奧迪 A6L33982664130 奧迪 A6L 現(xiàn)車(chē)充足最高優(yōu)惠 11.13萬(wàn)元 2013-12-3100:00:00.0002014-01-0500:00:00.0002013-12-3110:34:25.46738090043280012170052013-12-2418:55:002013-12-3110:55:00110000110100110105126713595050000391
[0132]對(duì)上述降價(jià)排行榜數(shù)據(jù)進(jìn)行發(fā)布的過(guò)程如下:
[0133](I)根據(jù)對(duì)該降價(jià)排行榜數(shù)據(jù)中數(shù)據(jù)條目的查詢方式,構(gòu)造排序列表(Order by)
如下:
[0134]
【權(quán)利要求】
1.一種數(shù)據(jù)存儲(chǔ)方法,適于將來(lái)自第一數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,該方法包括: 根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式; 在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引,其中每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng); 從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容; 根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表;以及 將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中。
2.如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其中,所述根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,包括: 根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表; 根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,構(gòu)造所述索引列表。
3.如權(quán)利要求2所述的數(shù)據(jù)存儲(chǔ)方法,其中,所述索引名稱(chēng)包括排序查詢方式標(biāo)識(shí)和分組查詢方式標(biāo)識(shí); 在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)為該數(shù)據(jù)條目在第一數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容。
4.如權(quán)利要求3所述的數(shù)據(jù)存儲(chǔ)方法,其中,所述索引名稱(chēng)還包括數(shù)據(jù)鍵值類(lèi)型; 在所述第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目的唯一標(biāo)識(shí)還包括數(shù)據(jù)鍵值類(lèi)型,以及數(shù)據(jù)內(nèi)容為將數(shù)據(jù)條目的與數(shù)據(jù)鍵值類(lèi)型對(duì)應(yīng)的各個(gè)字段進(jìn)行序列化后得到的內(nèi)容; 其中,所述數(shù)據(jù)鍵值類(lèi)型用于標(biāo)識(shí)鍵值信息,所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng)。
5.如權(quán)利要求3所述的數(shù)據(jù)存儲(chǔ)方法,其中,還包括: 獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值,其中所述鍵值為數(shù)據(jù)條目的一個(gè)或多個(gè)字段名稱(chēng); 根據(jù)查詢方式確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容; 對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,并從去序列化后的內(nèi)容中獲取與鍵值對(duì)應(yīng)的內(nèi)容返回給應(yīng)用服務(wù)器。
6.如權(quán)利要求4所述的數(shù)據(jù)存儲(chǔ)方法,其中,還包括: 獲取來(lái)自應(yīng)用服務(wù)器的查詢請(qǐng)求,所述查詢請(qǐng)求包括查詢方式和鍵值; 根據(jù)查詢方式和鍵值確定索引名稱(chēng),從第二數(shù)據(jù)存儲(chǔ)器中查找與索引名稱(chēng)相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表,并根據(jù)查找到的數(shù)據(jù)條目標(biāo)識(shí)列表從第二數(shù)據(jù)存儲(chǔ)器中獲取相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容; 對(duì)獲取到的數(shù)據(jù)內(nèi)容進(jìn)行去序列化,將去序列化后的內(nèi)容返回給應(yīng)用服務(wù)器。
7.如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其中,第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目以關(guān)系型數(shù)據(jù)庫(kù)方式進(jìn)行存儲(chǔ);以及 第二數(shù)據(jù)存儲(chǔ)器中的索引以索引名稱(chēng)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表為值的鍵-值方式進(jìn)行存儲(chǔ),以及數(shù)據(jù)條目以數(shù)據(jù)條目的唯一標(biāo)識(shí)為鍵、以相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容為值的鍵-值方式進(jìn)行存儲(chǔ)。
8.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),適于將來(lái)自第一數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,該系統(tǒng)包括: 索引列表構(gòu)造單元,適于根據(jù)對(duì)第一數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)條目的查詢方式構(gòu)造索引列表,索引列表中的每個(gè)索引對(duì)應(yīng)一種查詢方式; 索引存儲(chǔ)單元,適于在第二數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)該索引列表中的每個(gè)索引,其中每個(gè)索引包括標(biāo)識(shí)該索引的索引名稱(chēng); 數(shù)據(jù)條目存儲(chǔ)單元,適于從第一數(shù)據(jù)存儲(chǔ)器中獲取各個(gè)數(shù)據(jù)條目,將所獲取的數(shù)據(jù)條目存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中,其中在第二數(shù)據(jù)存儲(chǔ)器中,每個(gè)數(shù)據(jù)條目包括數(shù)據(jù)條目的唯一標(biāo)識(shí)以及相關(guān)聯(lián)的數(shù)據(jù)內(nèi)容;以及 關(guān)聯(lián)單元,適于根據(jù)與每個(gè)索引相對(duì)應(yīng)的查詢方式確定相關(guān)聯(lián)的一個(gè)或者多個(gè)數(shù)據(jù)條目,并確定各數(shù)據(jù)條目在第二數(shù)據(jù)存儲(chǔ)器中的唯一標(biāo)識(shí),獲取與該索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表; 其中,所述索引存儲(chǔ)單元被配置成將與每個(gè)索引相關(guān)聯(lián)的數(shù)據(jù)條目標(biāo)識(shí)列表與每個(gè)索引的索引名稱(chēng)相關(guān)聯(lián)地存儲(chǔ)到第二數(shù)據(jù)存儲(chǔ)器中。
9.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其中,所述索引列表構(gòu)造單元被配置成: 根據(jù)對(duì)數(shù)據(jù)條目的排序查詢方式建立排序列表,并根據(jù)對(duì)數(shù)據(jù)條目的分組查詢方式建立分組列表; 根據(jù)排序列表和分組列表進(jìn)行笛卡爾乘積,構(gòu)造所述索引列表。
10.一種數(shù)據(jù)查詢系統(tǒng),包括第一數(shù)據(jù)存儲(chǔ)器、數(shù)據(jù)發(fā)布服務(wù)器和第二數(shù)據(jù)存儲(chǔ)器,其中,所述數(shù)據(jù)發(fā)布服務(wù)器包括如權(quán)利要求8或9所述的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
【文檔編號(hào)】G06F17/30GK103902701SQ201410126062
【公開(kāi)日】2014年7月2日 申請(qǐng)日期:2014年3月31日 優(yōu)先權(quán)日:2014年3月31日
【發(fā)明者】韓明 申請(qǐng)人:北京車(chē)商匯軟件有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1