System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及關系型數據庫,具體涉及一種關系型數據庫的數據存儲和查詢方法、裝置、設備及介質。
技術介紹
1、在大數據時代,處理高速、亂序到達的時序型數據是數據庫系統的重要挑戰之一。關系型數據庫(例如postgresql)由于強大的功能、擴展性、優異的性能和可靠性、良好的生態成為實現特定領域數據庫的基礎。
2、例如當前市場上存在的多種分布式數據庫存儲引擎,如開源分布式關系型數據庫tidb、cockroachdb等,它們致力于提供水平擴展和高并發訪問,但在高速、亂序到達的時序型數據場景下仍有優化空間。
3、時序數據庫。針對時序型數據的數據庫(如influxdb、opentsdb)著重于時間序列數據的存儲和查詢,但通常缺乏對復雜查詢的良好支持,而且在處理高速、亂序數據方面仍有性能瓶頸。
4、postgresql及其擴展。postgresql是一種廣泛使用的關系型數據庫系統,其插件和擴展機制為用戶提供了靈活性。它只提供了heap(堆內存)這一種存儲方式,其空間分配和回收策略會導致數據碎片化,io效率低?,F有擴展如時序數據庫timescaledb致力于提高時序數據的查詢性能,但在亂序到達的高速數據處理、減少無用數據過濾等方面尚有改進空間。
5、因此,傳統的關系型數據庫系統在解決高速亂序數據場景下的時序數據問題時往往面臨寫入吞吐瓶頸、復雜查詢延時較高等問題。
技術實現思路
1、有鑒于此,本申請實施例提供一種關系型數據庫的數據存儲和查詢方法、裝置、
2、本申請實施例提供以下技術方案:一種關系型數據庫的數據存儲方法,包括:
3、接收待存儲數據,將所述待存儲數據按照寫入的時間順序劃分至多個設定的時間段內,將該多個設定的時間段內的所述待存儲數據分別存儲為多個文件;
4、分別獲得所述文件中數據列相互之間的關聯度,將所述關聯度滿足設定的關聯度閾值的多個數據列作為一個聚集列,將該聚集列中的多個數據列按照設定的排序規則進行排序,并按照排序將多個數據列的物理地址連續存儲。
5、根據本申請一種實施例,分別獲得所述文件中數據列相互之間的關聯度,包括:
6、在所述文件的數據列表中進行查詢,判斷是否有用戶自定義設置的關聯度值;若有,則根據用戶的自定義設置,分別獲得所述文件中數據列相互之間的關聯度;若無,則根據設定的關聯度計算方法,計算獲得所述文件中數據列相互之間的關聯度。
7、根據本申請一種實施例,根據設定的關聯度計算方法,計算獲得所述文件中數據列相互之間的關聯度,包括:
8、根據歷史訪問數據,分別計算每個數據列在設定的歷史時間段內的歷史訪問次數;將所述歷史訪問次數與設定的次數閾值進行對比,得到所述歷史訪問次數滿足設定的次數閾值的多個數據列,對該多個數據列進行關聯度賦值,使該多個數據列之間的所述關聯度滿足所述設定的關聯度閾值。
9、根據本申請一種實施例,所述方法還包括:
10、將順次寫入的多個所述文件存儲至一個文件集中,當所述文件集中的所述文件數量達到設定的文件閾值時,則凍結該文件集的寫入操作,并將該文件集中的多個所述文件進行合并處理,同時由另一個文件集接受寫入處理,或由另外的多個文件集同時接受寫入處理。
11、根據本申請一種實施例,所述設定的排序規則包括堆排序算法。
12、本申請還提供一種關系型數據庫的數據查詢方法,包括:
13、接收并解析數據查詢請求,所述數據查詢請求包括待查詢數據的鍵和索引;
14、根據所述鍵在關系型數據庫的數據文件中進行查詢,獲得待查詢的文件列表;其中,所述關系型數據庫的數據文件中,將存儲數據按照寫入的時間順序劃分至多個設定的時間段內,將該多個設定的時間段內的數據分別存儲為多個文件,并且,將每個所述文件中數據列相互之間的關聯度滿足設定閾值的多個數據列作為一個聚集列,該聚集列中的多個數據列按照設定的排序規則進行排序,并按照排序將多個數據列的物理地址連續存儲;
15、根據所述索引在所述文件列表中查詢,輸出查詢數據。
16、本申請還提供一種關系型數據庫的數據存儲裝置,包括:
17、文件存儲模塊,用于接收待存儲數據,將所述待存儲數據按照寫入的時間順序劃分至多個設定的時間段內,將該多個設定的時間段內的數據分別存儲為多個文件;
18、聚集存儲模塊,用于分別獲得所述文件中數據列相互之間的關聯度,將所述關聯度滿足設定的關聯度閾值的多個數據列作為一個聚集列,將該聚集列中的多個數據列按照設定的排序規則進行排序,并按照排序將多個數據列的物理地址連續存儲。
19、本申請還提供一種關系型數據庫的數據查詢裝置,包括:
20、查詢請求接收模塊,用于接收并解析數據查詢請求,所述數據查詢請求包括待查詢數據的鍵和索引;
21、第一查詢模塊,用于根據所述鍵在關系型數據庫的數據文件中進行查詢,獲得待查詢的文件列表;其中,所述關系型數據庫的數據文件中,將存儲數據按照寫入的時間順序劃分至多個設定的時間段內,將該多個設定的時間段內的數據分別存儲為多個文件,并且,將每個所述文件中數據列相互之間的關聯度滿足設定閾值的多個數據列作為一個聚集列,該聚集列中的多個數據列按照設定的排序規則進行排序,并按照排序將多個數據列的物理地址連續存儲;
22、第二查詢模塊,用于根據所述索引在所述文件列表中查詢,輸出查詢數據。
23、本申請還提供一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現上述的關系型數據庫的數據存儲方法和/或上述的關系型數據庫的數據查詢方法。
24、本申請還提供一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有執行上述的關系型數據庫的數據存儲方法和/或上述的關系型數據庫的數據查詢方法的計算機程序。
25、與現有技術相比,本說明書實施例采用的上述至少一個技術方案能夠達到的有益效果至少包括:本專利技術實施例面向時序數據,通過實現高吞吐入庫和低延時復雜查詢,針對高速、亂序到達的數據,提供了一種優化的解決方案。將數據以文件為粒度進行存儲,將其存儲為一個文件,而不是一組數據庫的塊,若待訪問的數據集中在一個文件里,可以實現io的順序訪問,避免在多個塊之間進行隨機io,同時節省了塊尋址的存儲和訪問代價,大幅提高了數據訪問效率。并且數據采用了全序存儲的方式,對于較大范圍的數據可以順序性地讀取,從而提高了io效率,以及提高了時間窗口的查詢效率。
本文檔來自技高網...【技術保護點】
1.一種關系型數據庫的數據存儲方法,其特征在于,包括:
2.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,分別獲得所述文件中數據列相互之間的關聯度,包括:
3.根據權利要求2所述的關系型數據庫的數據存儲方法,其特征在于,根據設定的關聯度計算方法,計算獲得所述文件中數據列相互之間的關聯度,包括:
4.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,所述方法還包括:
5.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,所述設定的排序規則包括堆排序算法。
6.一種關系型數據庫的數據查詢方法,其特征在于,包括:
7.一種關系型數據庫的數據存儲裝置,其特征在于,包括:
8.一種關系型數據庫的數據查詢裝置,其特征在于,包括:
9.一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現權利要求1至5中任一項所述的關系型數據庫的數據存儲方法和/或權利要求6所述的關系型數據庫的數據查詢方法。<
...【技術特征摘要】
1.一種關系型數據庫的數據存儲方法,其特征在于,包括:
2.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,分別獲得所述文件中數據列相互之間的關聯度,包括:
3.根據權利要求2所述的關系型數據庫的數據存儲方法,其特征在于,根據設定的關聯度計算方法,計算獲得所述文件中數據列相互之間的關聯度,包括:
4.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,所述方法還包括:
5.根據權利要求1所述的關系型數據庫的數據存儲方法,其特征在于,所述設定的排序規則包括堆排序算法。
6.一種關系型數據庫的數據查詢方法,其特征在于...
【專利技術屬性】
技術研發人員:王勇,唐鵬洲,姚延棟,翁巖青,
申請(專利權)人:北京四維縱橫數據技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。