一種存取海量時間序列數據的方法及裝置的制造方法
【技術領域】
[0001]本發明涉及數據云存儲技術領域,具體涉及一種存取海量時間序列數據的方法及
目.0
【背景技術】
[0002]隨著物聯網、云存儲等方法的廣泛發展和應用,如何存儲和檢索海量與時間相關的數據成為系統應用的難題,時間序列數據是指與時間緊密相關的數據,數據的存取除了與數據本身的關鍵字相關外還與時間密切相關,存儲的結構通常按照時間排序,檢索時通常按照數據關鍵字和時間進行檢索,在特定領域,海量時間數據有其自身的特點:數據與時間高度相關,數據通常按照時間先后順序傳輸與存儲;數據本身小,但數據量巨大,存儲時間長,存儲頻率高;通常每時每刻都有海量數據需要存儲,但檢索數據只有當業務需要才觸發,這就造成檢索數據的操作遠小于存儲數據的操作,時間序列數據一般包括:數據標識、時間和數值,在實際應用中,時間序列數據通常采用數據庫的方式進行存取,有一定的局限性。
【發明內容】
[0003]本發明的目的在于提出一種存取海量時間序列數據的方法及裝置,能夠通過數據文件的方式并結合索引信息對時間序列數據進行存取,提高了存取效率。
[0004]為達此目的,本發明采用以下技術方案:
[0005]一種存取海量時間序列數據的方法,包括:
[0006]S10、接收時間序列數據,所述時間序列數據包括數據源標識、數據時間及數據信息;
[0007]S20、將所述數據源標識通過哈希算法生成若干個字節,建立與所述若干個字節對應的若干層目錄;
[0008]S30、將所述時間序列數據以數據文件的形式存儲到所述目錄中,所述數據文件包括數據段和索引段,所述數據文件的文件名由所述數據時間生成;
[0009]S40、接收查詢請求,所述查詢請求包括數據源標識和數據時間,根據所述查詢請求及索引段從所述目錄中讀取對應的時間序列數據。
[0010]優選地,所述數據段用于記錄所述數據信息,所述索引段用于記錄數據文件的基本信息以及索引信息。
[0011]優選地,所述基本信息包括數據文件開始時間、數據文件結束時間及數據源標識,所述索引信息包括第一索引信息和第二索引信息,所述第一索引信息按順序記錄每個數據段對應的開始時間和數據文件偏移位置,所述第二索引信息包括單條索引數據大小、索引段信息總大小、文件尾位置和文件總長。
[0012]優選地,所述步驟S20具體為:
[0013]將所述數據源標識通過哈希算法生成四個字節的整形數據,由所述四個字節的最后一個字節起,依次向前,建立與所述四個字節一一對應的根目錄、一層目錄、二層目錄和三層目錄。
[0014]優選地,所述步驟S30包括:
[0015]S31、查找目錄中所有以.data結尾的數據文件,并查找文件名最大的數據文件,若不存在以.data結尾的數據文件,則新建數據文件,所述新建數據文件的文件名為:數據時間.data ;
[0016]S32、若找到以.data結尾的數據文件,讀取文件尾信息,所述文件尾信息包含寫入偏移量;
[0017]S33、將所述時間序列數據寫入到所述數據文件中,所述時間序列數據的寫入起始位置為所述寫入偏移量;
[0018]S34、寫入索引信息,將所述第一索引信息寫入到文件尾對應的數據段索引中,將所述第二索引信息寫入到文件尾的二級索引中。
[0019]優選地,所述步驟S34之后還包括:
[0020]步驟S35、若所述數據文件達到數據段最大長度,關閉所述數據文件,建立新的數據文件進行寫入。
[0021 ] 優選地,所述步驟S40包括:
[0022]S41、接收查詢請求,所述查詢請求包括數據源標識和數據時間;
[0023]S42、將所述查詢請求的數據源標識通過哈希算法生成若干個字節,將每個字節轉化為16進制的字符串,并查找相對應的目錄;
[0024]S43、對所述目錄下的文件名按照倒序進行排序,找出第一個比所述查詢請求的數據時間小的文件名;
[0025]S44、打開所述文件名對應的數據文件,并讀取文件末尾的索引信息;
[0026]S55、根據所述索引信息讀取查詢請求的時間序列數據的數據信息。
[0027]作為本發明的另一個方面,提供的一種存取海量時間序列數據的裝置,包括:
[0028]接收模塊,用于接收時間序列數據,所述時間序列數據包括數據源標識、數據時間及數據信息;
[0029]轉換模塊,用于將所述數據源標識通過哈希算法生成若干個字節,建立與所述若干個字節一一對應的若干層目錄;
[0030]存儲模塊,用于將所述時間序列數據以數據文件的形式存儲到所述目錄中,所述數據文件包括數據段和索引段,所述數據文件的文件名由所述數據時間生成;
[0031]讀取模塊,用于接收查詢請求,所述查詢請求包括數據源標識和數據時間,根據所述查詢請求及索引段從所述目錄中讀取對應的時間序列數據。
[0032]優選地,所述存儲模塊包括:
[0033]數據文件建立單元,用于查找目錄中所有以.data結尾的數據文件,并查找文件名最大的數據文件,若不存在以.data結尾的數據文件,則新建數據文件,所述新建數據文件的文件名為:數據時間.data ;
[0034]偏移量寫入單元,用于找到以.data結尾的數據文件后,讀取文件尾信息,所述文件尾信息包含寫入偏移量;
[0035]數據信息寫入單元,用于將所述時間序列數據寫入到所述數據文件中,所述時間序列數據的寫入起始位置為所述寫入偏移量;
[0036]索引信息寫入單元,用于寫入索引信息,將所述第一索引信息寫入到文件尾對應的數據段索引中,將所述第二索引信息寫入到文件尾的二級索引中。
[0037]優選地,所述讀取模塊包括:
[0038]查詢請求接收單元,用于接收查詢請求,所述查詢請求包括數據源標識和數據時間;
[0039]查詢請求轉換單元,用于將所述查詢請求的數據源標識通過哈希算法生成若干個字節,將每個字節轉化為16進制的字符串,并查找相對應的目錄;
[0040]排序單元,用于對所述目錄下的文件名按照倒序進行排序,找出第一個比所述查詢請求的數據時間小的文件名;
[0041]索引信息讀取單元,用于打開所述文件名對應的數據文件,并讀取文件末尾的索引信息;
[0042]數據信息讀取單元,用于根據所述索引信息讀取查詢請求的時間序列數據的數據信息。
[0043]本發明的有益效果為:一種存取海量時間序列數據的方法及裝置,該方法包括:接收時間序列數據,所述時間序列數據包括數據源標識、數據時間及數據信息;將所述數據源標識通過哈希算法生成若干個字節,建立與所述若干個字節一一對應的若干層目錄;將所述時間序列數據以數據文件的形式存儲到所述目錄中,所述數據文件包括數據段和索引段,所述數據文件的文件名由所述數據時間生成;接收查詢請求,所述查詢請求包括數據源標識和數據時間,根據所述查詢請求及索引段從所述目錄中讀取對應的時間序列數據,本發明通過數據文件的方式并結合索引信息對時間序列數據進行存取,提高了存取效率。
【附圖說明】
[0044]圖1是本發明實施例一提供的一種存取海量時間序列數據的方法的流程圖
[0045]圖2是本發明實施例二提供的一種存取海量時間序列數據的方法的流程圖