本申請涉及金融行業(yè)數(shù)據(jù)處理,具體涉及基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)及存儲和查詢方法。
背景技術(shù):
1、目前在金融證券行業(yè),隨著資本市場的發(fā)展和上市企業(yè)數(shù)量的增加,每日產(chǎn)生的歷史行情數(shù)據(jù)規(guī)模呈現(xiàn)出爆炸式增長,同時投資者群體的壯大也提升了對海量歷史行情數(shù)據(jù)存儲和查詢的需求。單個交易市場中,交易標的數(shù)量通常達數(shù)萬級,以每個標的分鐘級別行情數(shù)據(jù)估算,每年可產(chǎn)生約六萬條記錄,整個市場全年數(shù)據(jù)總量可輕松達數(shù)十億條,如滬深交易所30年的交易歷史已積累超過百億條數(shù)據(jù),且數(shù)據(jù)量將隨市場擴容和投資者需求增長而進一步呈指數(shù)級增長。面對如此龐大的數(shù)據(jù)規(guī)模,如何實現(xiàn)低成本、高效能的存儲,并滿足精準查詢和快速響應(yīng)的需求,成為金融行業(yè)在大數(shù)據(jù)時代急需突破的技術(shù)難題。
2、當前主流存儲方式如共享內(nèi)存、k-v數(shù)據(jù)庫(如redis)和關(guān)系型數(shù)據(jù)庫(如mysql)均存在局限性:共享內(nèi)存存儲規(guī)模受限;k-v數(shù)據(jù)庫在大規(guī)模時序數(shù)據(jù)場景下內(nèi)存存儲成本高且復雜查詢支持不足;關(guān)系型數(shù)據(jù)庫在在高并發(fā)請求下處理百億級時序數(shù)據(jù)時性能表現(xiàn)不佳。
技術(shù)實現(xiàn)思路
1、為了有助于解決上述技術(shù)問題,本申請?zhí)峁┮环N基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)及存儲和查詢方法。
2、第一方面,本申請?zhí)峁┮环N基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),采用如下的技術(shù)方案:
3、一種基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其中,所述系統(tǒng)包括:
4、環(huán)境管理模塊,所述環(huán)境管理模塊用于維護環(huán)境信息與容器信息列表;
5、數(shù)據(jù)預處理模塊,所述數(shù)據(jù)預處理模塊用于將每日股市交易生成的原始行情數(shù)據(jù)規(guī)范化處理為定長的時序數(shù)據(jù);
6、數(shù)據(jù)存儲模塊,所述數(shù)據(jù)存儲模塊用于將所述時序數(shù)據(jù)存儲至磁盤;
7、數(shù)據(jù)查詢模塊,所述數(shù)據(jù)查詢模塊由查詢哈希表和各交易標的歷史數(shù)據(jù)的全局索引組成,以供快速查詢和高并發(fā)訪問。
8、優(yōu)選的,所述環(huán)境管理模塊用于創(chuàng)建環(huán)境管理文件,并用于以二進制方式存儲文件頭、容器名稱和容器信息列表。
9、優(yōu)選的,數(shù)據(jù)預處理模塊用于按交易標的id號遞增和交易時間遞增的順序?qū)?shù)據(jù)進行規(guī)范化整理。
10、優(yōu)選的,所述數(shù)據(jù)存儲模塊以二進制塊形式存儲數(shù)據(jù)文件,首個數(shù)據(jù)文件用于保存文件頭、字段列表,并用于維護交易標的歷史數(shù)據(jù)的全局索引表,剩余數(shù)據(jù)文件用于存儲數(shù)據(jù)塊,以減少冗余數(shù)據(jù)。
11、優(yōu)選的,所述數(shù)據(jù)查詢模塊包括所述查詢哈希表和各交易標的歷史數(shù)據(jù)的全局索引,所述查詢哈希表存儲于物理內(nèi)存中,按交易標的?id?組織,所述id對應(yīng)的value?中記錄有首個數(shù)據(jù)文件地址、數(shù)據(jù)更新時間和熱點數(shù)據(jù)表;全局索引位于每個交易標的首個數(shù)據(jù)文件,為稀疏索引結(jié)構(gòu)。
12、第二方面,本申請?zhí)峁┮环N基于文件索引的歷史行情數(shù)據(jù)存儲方法,采用如下的技術(shù)方案:
13、一種基于文件索引的歷史行情數(shù)據(jù)存儲方法,其中,所述數(shù)據(jù)存儲方法由第一方面所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)執(zhí)行,所述數(shù)據(jù)存儲方法包括:
14、步驟a1:通過所述數(shù)據(jù)預處理模塊將待存儲數(shù)據(jù)轉(zhuǎn)換成定長的規(guī)范化數(shù)據(jù);
15、步驟a2:基于所述規(guī)范化數(shù)據(jù),創(chuàng)建用于存放環(huán)境信息和容器信息列表的環(huán)境管理文件;
16、步驟a3:創(chuàng)建存儲數(shù)據(jù)的數(shù)據(jù)文件,并更新環(huán)境文件中容器信息列表;
17、步驟a4:初始化查詢模塊;
18、步驟a5:加載交易標的的歷史行情數(shù)據(jù);
19、步驟?a6:重復步驟a4至a5,完成所有交易標的的歷史行情數(shù)據(jù)加載。
20、優(yōu)選的,所述加載交易標的的歷史行情數(shù)據(jù)包括:
21、步驟a51:確認要加載的交易標的數(shù)據(jù);
22、步驟a52:遵循讀寫一致算法寫入數(shù)據(jù)。
23、優(yōu)選的,所述遵循讀寫一致算法寫入數(shù)據(jù)包括:
24、步驟a521:修改數(shù)據(jù)文件的讀寫標志,在數(shù)據(jù)寫入前,先將開始更新標識值加?1;
25、步驟a522:更新數(shù)據(jù),按字段列表信息填充數(shù)據(jù)塊,以使數(shù)據(jù)按時間戳遞增存儲;
26、步驟a523:根據(jù)修改時間和數(shù)據(jù)地址更新數(shù)據(jù)文件文件頭、全局索引表、容器信息列表、和熱點數(shù)據(jù)表;
27、步驟a524:數(shù)據(jù)更新完成后,將更新結(jié)束標識值加?1;
28、步驟a525:更新完成。
29、第三方面,本申請?zhí)峁┮环N基于文件索引的歷史行情數(shù)據(jù)查詢方法,采用如下的技術(shù)方案:
30、一種基于文件索引的歷史行情數(shù)據(jù)查詢方法,其中,所述數(shù)據(jù)查詢方法由第一方面所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)執(zhí)行,所述數(shù)據(jù)查詢方法包括:
31、步驟b1:根據(jù)環(huán)境管理文件中的容器信息列表構(gòu)建查詢哈希表;
32、步驟b2:通過查詢哈希表,找到該交易標的對應(yīng)的首個數(shù)據(jù)文件,并進行熱點數(shù)據(jù)偏移位置的快速檢索;
33、步驟b3:若查詢命中熱點數(shù)據(jù)表,在符合讀寫一致算法的情況下,根據(jù)熱點數(shù)據(jù)的偏移位置提取數(shù)據(jù),并通過字段信息列表解析和計算數(shù)據(jù)內(nèi)容;若未命中熱點數(shù)據(jù),則先讀取數(shù)據(jù)文件中存儲的全局索引,根據(jù)查詢需求,在全局索引找到對應(yīng)的數(shù)據(jù)偏移量信息,并取出數(shù)據(jù)和解析。
34、優(yōu)選的,所述讀寫一致算法的讀取流程包括:
35、步驟b31:讀取開始更新標識值和更新結(jié)束標識值并記錄;
36、步驟b32:判斷開始更新標識值是否與更新結(jié)束標識相等:若相等則執(zhí)行步驟b33;如果不相等,則返回步驟b31;
37、步驟b33:若請求的數(shù)據(jù)已在熱點數(shù)據(jù)表中獲取偏移地址,校驗查詢哈希表中記錄的更新時間與數(shù)據(jù)文件頭中的更新時間是否一致:若通過校驗則直接執(zhí)行步驟b35,若未通過校驗則執(zhí)行步驟b34;
38、步驟b34:通過全局索引確認偏移量;
39、步驟b35:讀取所需數(shù)據(jù);
40、步驟b36:再次讀取開始更新標識值和更新結(jié)束標識值;
41、步驟b37:判斷開始更新標識值與更新結(jié)束標識值是否與步驟b31中記錄的值相等,如果相等,轉(zhuǎn)到步驟b38;如果不相等,轉(zhuǎn)到步驟b31;
42、步驟b38:讀取完成。
43、綜上所述,本申請的系統(tǒng)通過高效的文件結(jié)構(gòu)和查詢索引的設(shè)計,結(jié)合數(shù)據(jù)預處理、存儲模塊與查詢模塊的改進優(yōu)化,解決了傳統(tǒng)存儲方案中存在的歷史行情數(shù)據(jù)“存儲難、查詢慢”問題,顯著提升了歷史行情數(shù)據(jù)的存儲效率和查詢響應(yīng)速度,為金融行業(yè)中的數(shù)據(jù)服務(wù)提供了更強大的技術(shù)支持。
1.一種基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其特征在于,所述系統(tǒng)包括:
2.根據(jù)權(quán)利要求1所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其特征在于,所述環(huán)境管理模塊用于創(chuàng)建環(huán)境管理文件,并用于以二進制方式存儲文件頭、容器名稱和容器信息列表。
3.根據(jù)權(quán)利要求2所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其特征在于,數(shù)據(jù)預處理模塊用于按交易標的id號遞增和交易時間遞增的順序?qū)?shù)據(jù)進行規(guī)范化整理。
4.根據(jù)權(quán)利要求3所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)存儲模塊以二進制塊形式存儲數(shù)據(jù)文件,首個數(shù)據(jù)文件用于保存文件頭、字段列表,并用于維護交易標的歷史數(shù)據(jù)的全局索引表,剩余數(shù)據(jù)文件用于存儲數(shù)據(jù)塊,以減少冗余數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)查詢模塊包括所述查詢哈希表和各交易標的歷史數(shù)據(jù)的全局索引,所述查詢哈希表存儲于物理內(nèi)存中,按交易標的?id?組織,所述id對應(yīng)的value?中記錄有首個數(shù)據(jù)文件地址、數(shù)據(jù)更新時間和熱點數(shù)據(jù)表;全局索引位于每個交易標的首個數(shù)據(jù)文件,為稀疏索引結(jié)構(gòu)。
6.一種基于文件索引的歷史行情數(shù)據(jù)存儲方法,其特征在于,所述數(shù)據(jù)存儲方法由權(quán)利要求5所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)執(zhí)行,所述數(shù)據(jù)存儲方法包括:
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)存儲方法,其特征在于,所述加載交易標的的歷史行情數(shù)據(jù)包括:
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)存儲方法,其特征在于,所述遵循讀寫一致算法寫入數(shù)據(jù)包括:
9.一種基于文件索引的歷史行情數(shù)據(jù)查詢方法,其特征在于,所述數(shù)據(jù)查詢方法由權(quán)利要求5所述的基于文件索引的歷史行情數(shù)據(jù)存儲系統(tǒng)執(zhí)行,所述數(shù)據(jù)查詢方法包括:
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)查詢方法,其特征在于,所述讀寫一致算法的讀取流程包括: