System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本申請(qǐng)涉及數(shù)據(jù)處理,更具體地說(shuō),涉及一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法及裝置。
技術(shù)介紹
1、在使用主流的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)(postgresql)作為內(nèi)核的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)時(shí),涉及到對(duì)若干數(shù)據(jù)表進(jìn)行大量的反復(fù)的讀操作、寫(xiě)操作。但是postgresql為了支持?jǐn)?shù)據(jù)的并發(fā)寫(xiě)入與一致性而設(shè)計(jì)的多版本并發(fā)控制(mvcc)機(jī)制在一些情況下會(huì)帶來(lái)存儲(chǔ)膨脹以及索引膨脹的問(wèn)題,帶來(lái)膨脹的原因主要由于舊版本的保留和頻繁的更新和刪除操作導(dǎo)致。
2、由于mvcc機(jī)制使得數(shù)據(jù)庫(kù)在更新或刪除數(shù)據(jù)時(shí),不會(huì)立即刪除舊版本的數(shù)據(jù),而是將其保留一段時(shí)間,以支持并發(fā)讀取和事務(wù)的回滾操作。隨著時(shí)間的推移,大量未被清理的舊版本數(shù)據(jù)會(huì)積累,導(dǎo)致存儲(chǔ)空間的增加。在業(yè)務(wù)中,如果存在大量頻繁的更新和刪除操作,會(huì)產(chǎn)生更多的舊版本數(shù)據(jù),從而加劇存儲(chǔ)膨脹。
3、因此,如何避免由于存儲(chǔ)膨脹以及索引膨脹引起的數(shù)據(jù)文件體積膨脹,提高查詢性能,是本申請(qǐng)亟需解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本申請(qǐng)公開(kāi)了一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法及裝置,旨在避免由于存儲(chǔ)膨脹以及索引膨脹引起的數(shù)據(jù)文件體積膨脹,提高查詢性能。
2、為了實(shí)現(xiàn)上述目的,其公開(kāi)的技術(shù)方案如下:
3、本申請(qǐng)第一方面公開(kāi)了一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法,所述方法包括:
4、在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)查詢的過(guò)程中,當(dāng)接收到查詢指令時(shí),通過(guò)預(yù)設(shè)索引算法從預(yù)先構(gòu)建的預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中獲取查詢指令對(duì)應(yīng)的數(shù)據(jù);
5、其中,所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)通過(guò)
6、優(yōu)選的,所述通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,包括:
7、按照列數(shù)據(jù)劃分方式將壓縮后的數(shù)據(jù)進(jìn)行劃分;所述列數(shù)據(jù)劃分方式為同一列的數(shù)據(jù)被連續(xù)地存儲(chǔ)在一起的劃分方式;
8、對(duì)劃分后的數(shù)據(jù)進(jìn)行數(shù)據(jù)類(lèi)型分析,得到分析結(jié)果;
9、將分析結(jié)果的列中重復(fù)出現(xiàn)的值映射到整數(shù)標(biāo)識(shí)符,以完成重復(fù)值處理;
10、確定重復(fù)值處理后的分析結(jié)果的列類(lèi)型,根據(jù)重復(fù)值處理后的分析結(jié)果的列類(lèi)型執(zhí)行各自對(duì)應(yīng)的存儲(chǔ)操作,以完成將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中;其中,列類(lèi)型至少包括數(shù)值列或字符串列。
11、優(yōu)選的,確定重復(fù)值處理后的分析結(jié)果的列類(lèi)型,根據(jù)重復(fù)值處理后的分析結(jié)果的列類(lèi)型執(zhí)行各自對(duì)應(yīng)的存儲(chǔ)操作,包括:
12、若重復(fù)值處理后的分析結(jié)果的列類(lèi)型為所述數(shù)值列,獲取數(shù)值列的相鄰數(shù)據(jù)之間的差值,并對(duì)所述差值進(jìn)行差值編碼,以完成存儲(chǔ)操作;
13、若重復(fù)值處理后的分析結(jié)果的列類(lèi)型為字符串列,獲取分析結(jié)果中的相似字符串片段,通過(guò)預(yù)設(shè)壓縮算法對(duì)相似字符串片段進(jìn)行壓縮。
14、優(yōu)選的,還包括:
15、若分析結(jié)果的列中存在零值或空值,通過(guò)預(yù)設(shè)編碼方式對(duì)零值或空值進(jìn)行編碼,以避免為零值或空值分配存儲(chǔ)空間。
16、優(yōu)選的,還包括:
17、當(dāng)接收到嵌套格式類(lèi)型的數(shù)據(jù)時(shí),將嵌套格式類(lèi)型的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,以兼容復(fù)雜數(shù)據(jù)結(jié)構(gòu)體的存儲(chǔ)。
18、本申請(qǐng)第二方面公開(kāi)了一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢裝置,所述裝置包括:
19、獲取單元,用于在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)查詢的過(guò)程中,當(dāng)接收到查詢指令時(shí),通過(guò)預(yù)設(shè)索引算法從預(yù)先構(gòu)建的預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中獲取查詢指令對(duì)應(yīng)的數(shù)據(jù);其中,所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)通過(guò)優(yōu)化多版本并發(fā)控制機(jī)制的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)層得到;所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)用于避免多版本控制帶來(lái)的體積膨脹并提高數(shù)據(jù)分析查詢的性能;所述數(shù)據(jù)通過(guò)數(shù)據(jù)壓縮算法進(jìn)行壓縮,并通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中。
20、優(yōu)選的,所述通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中的獲取單元,包括:
21、劃分模塊,用于按照列數(shù)據(jù)劃分方式將壓縮后的數(shù)據(jù)進(jìn)行劃分;所述列數(shù)據(jù)劃分方式為同一列的數(shù)據(jù)被連續(xù)地存儲(chǔ)在一起的劃分方式;
22、分析模塊,用于對(duì)劃分后的數(shù)據(jù)進(jìn)行數(shù)據(jù)類(lèi)型分析,得到分析結(jié)果;
23、處理模塊,用于將分析結(jié)果的列中重復(fù)出現(xiàn)的值映射到整數(shù)標(biāo)識(shí)符,以完成重復(fù)值處理;
24、確定模塊,用于確定重復(fù)值處理后的分析結(jié)果的列類(lèi)型,根據(jù)重復(fù)值處理后的分析結(jié)果的列類(lèi)型執(zhí)行各自對(duì)應(yīng)的存儲(chǔ)操作,以完成將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中;其中,列類(lèi)型至少包括數(shù)值列或字符串列。
25、優(yōu)選的,所述確定模塊,包括:
26、第一獲取子模塊,用于若重復(fù)值處理后的分析結(jié)果的列類(lèi)型為所述數(shù)值列,獲取數(shù)值列的相鄰數(shù)據(jù)之間的差值,并對(duì)所述差值進(jìn)行差值編碼,以完成存儲(chǔ)操作;
27、第二獲取子模塊,用于若重復(fù)值處理后的分析結(jié)果的列類(lèi)型為字符串列,獲取分析結(jié)果中的相似字符串片段,通過(guò)預(yù)設(shè)壓縮算法對(duì)相似字符串片段進(jìn)行壓縮。
28、優(yōu)選的,還包括:
29、編碼單元,用于若分析結(jié)果的列中存在零值或空值,通過(guò)預(yù)設(shè)編碼方式對(duì)零值或空值進(jìn)行編碼,以避免為零值或空值分配存儲(chǔ)空間。
30、優(yōu)選的,還包括:
31、存儲(chǔ)單元,用于當(dāng)接收到嵌套格式類(lèi)型的數(shù)據(jù)時(shí),將嵌套格式類(lèi)型的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,以兼容復(fù)雜數(shù)據(jù)結(jié)構(gòu)體的存儲(chǔ)。
32、經(jīng)由上述技術(shù)方案可知,本申請(qǐng)公開(kāi)了一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法及裝置,在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)查詢的過(guò)程中,當(dāng)接收到查詢指令時(shí),通過(guò)預(yù)設(shè)索引算法從預(yù)先構(gòu)建的預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中獲取查詢指令對(duì)應(yīng)的數(shù)據(jù),其中,預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)通過(guò)優(yōu)化多版本并發(fā)控制機(jī)制的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)層得到,預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)用于避免多版本控制帶來(lái)的體積膨脹并提高數(shù)據(jù)分析查詢的性能,數(shù)據(jù)通過(guò)數(shù)據(jù)壓縮算法進(jìn)行壓縮,并通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中。通過(guò)上述方案,在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行數(shù)據(jù)查詢的過(guò)程中,通過(guò)預(yù)設(shè)索引算法從預(yù)先構(gòu)建的預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中獲取查詢指令對(duì)應(yīng)的數(shù)據(jù),由于預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)是通過(guò)優(yōu)化多版本并發(fā)控制機(jī)制的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)層得到,即在存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)層面摒棄多版本并發(fā)控制這種多版本控制機(jī)制,使得在并發(fā)寫(xiě)入能力上略做縮減,節(jié)省存儲(chǔ)空間和提升聯(lián)機(jī)分析處理(olap)查詢性能。并且獲取到的查詢指令對(duì)應(yīng)的數(shù)據(jù)是通過(guò)數(shù)據(jù)壓縮算法進(jìn)行壓縮,并通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,數(shù)據(jù)壓縮算法通過(guò)減少數(shù)據(jù)的存儲(chǔ)空間需求和提高數(shù)據(jù)傳輸效率,使得在相同的存儲(chǔ)容量下能夠存儲(chǔ)更多的數(shù)據(jù),并為數(shù)據(jù)傳輸提供更高效的性能表現(xiàn)。并且運(yùn)用列式存儲(chǔ)技術(shù)提供更好的壓縮比例,同時(shí)降低查詢命中后的數(shù)據(jù)傳輸量,能夠給予更高的讀取效能和壓縮比率。從而避免由于存儲(chǔ)膨脹以及索引膨脹引起的數(shù)據(jù)文件體積膨脹,提高查詢性能。
本文檔來(lái)自技高網(wǎng)...【技術(shù)保護(hù)點(diǎn)】
1.一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,確定重復(fù)值處理后的分析結(jié)果的列類(lèi)型,根據(jù)重復(fù)值處理后的分析結(jié)果的列類(lèi)型執(zhí)行各自對(duì)應(yīng)的存儲(chǔ)操作,包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
6.一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢裝置,其特征在于,所述裝置包括:
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中的獲取單元,包括:
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述確定模塊,包括:
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括:
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括:
【技術(shù)特征摘要】
1.一種針對(duì)數(shù)據(jù)庫(kù)的分析查詢方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)列式存儲(chǔ)方式將壓縮后的數(shù)據(jù)存儲(chǔ)于所述預(yù)設(shè)存儲(chǔ)結(jié)構(gòu)中,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,確定重復(fù)值處理后的分析結(jié)果的列類(lèi)型,根據(jù)重復(fù)值處理后的分析結(jié)果的列類(lèi)型執(zhí)行各自對(duì)應(yīng)的存儲(chǔ)操作,包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1所述的...
【專(zhuān)利技術(shù)屬性】
技術(shù)研發(fā)人員:蘇浩,劉澤霖,王兵,王宇琪,趙學(xué)義,秦凌冰,仝傳亮,申天奇,李瓊,
申請(qǐng)(專(zhuān)利權(quán))人:新疆聯(lián)海創(chuàng)智信息科技有限公司,
類(lèi)型:發(fā)明
國(guó)別省市:
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。