存儲(chǔ)時(shí)間序列數(shù)據(jù)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及存儲(chǔ)時(shí)間序列 數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002] 時(shí)間序列數(shù)據(jù)是一系列有序的數(shù)據(jù),是在不同時(shí)間點(diǎn)上收集到的數(shù)據(jù)。這類數(shù)據(jù) 反映了某一事物、現(xiàn)象、指標(biāo)等隨時(shí)間的變化狀態(tài)或程度。由于時(shí)間序列數(shù)據(jù)通常是相等時(shí) 間間隔的采樣數(shù)據(jù),現(xiàn)有的存儲(chǔ)時(shí)間序列數(shù)據(jù)的方法通常為:根據(jù)上述時(shí)間間隔,為每個(gè)固 定的時(shí)間點(diǎn)預(yù)留一個(gè)存儲(chǔ)區(qū)。當(dāng)接收到一個(gè)時(shí)間點(diǎn)的時(shí)間序列數(shù)據(jù)時(shí),將該數(shù)據(jù)填入預(yù)留 給該時(shí)間點(diǎn)的存儲(chǔ)區(qū)中。
[0003] 然而,目前在實(shí)際的情況中,很多時(shí)間序列數(shù)據(jù)不一定在每個(gè)時(shí)間間隔后都會(huì)產(chǎn) 生,甚至?xí)r間間隔有可能會(huì)發(fā)生變化,這導(dǎo)致了有很多的存儲(chǔ)區(qū)中的數(shù)據(jù)為空值狀態(tài),如果 將這些包含空值的數(shù)據(jù)直接寫入磁盤,會(huì)產(chǎn)生較多的存儲(chǔ)空間占用,并增加了后續(xù)讀寫數(shù) 據(jù)時(shí)的IO流量。
【發(fā)明內(nèi)容】
[0004] 本申請(qǐng)的目的在于提出一種存儲(chǔ)時(shí)間序列數(shù)據(jù)的方法和裝置,來(lái)解決以上背景技 術(shù)部分提到的技術(shù)問(wèn)題。
[0005] 第一方面,本申請(qǐng)?zhí)峁┝艘环N存儲(chǔ)時(shí)間序列數(shù)據(jù)的方法,所述方法包括:根據(jù)時(shí)間 序列數(shù)據(jù)的時(shí)間點(diǎn),將所述時(shí)間序列數(shù)據(jù)的指標(biāo)值存入時(shí)間區(qū)間數(shù)據(jù)表中,其中,所述時(shí)間 序列數(shù)據(jù)包括以下信息:時(shí)間點(diǎn)、與所述時(shí)間點(diǎn)關(guān)聯(lián)的指標(biāo)值,所述時(shí)間區(qū)間數(shù)據(jù)表中的 每條數(shù)據(jù)行用于記錄預(yù)定長(zhǎng)度的時(shí)間區(qū)間內(nèi)的至少一個(gè)時(shí)間點(diǎn)所關(guān)聯(lián)的指標(biāo)值,所述至少 一個(gè)時(shí)間點(diǎn)中各個(gè)時(shí)間點(diǎn)之間相隔預(yù)定的時(shí)間長(zhǎng)度,每個(gè)所述時(shí)間點(diǎn)占用內(nèi)存的一個(gè)存儲(chǔ) 區(qū),每個(gè)所述存儲(chǔ)區(qū)包括預(yù)定個(gè)數(shù)的字節(jié),每個(gè)所述時(shí)間點(diǎn)所關(guān)聯(lián)的指標(biāo)值被填入所述時(shí) 間點(diǎn)所占用的存儲(chǔ)區(qū)中;將沒(méi)有填入數(shù)據(jù)的存儲(chǔ)區(qū)進(jìn)行數(shù)據(jù)壓縮處理,得到時(shí)間區(qū)間壓縮 數(shù)據(jù);將所述時(shí)間區(qū)間壓縮數(shù)據(jù)寫入磁盤。
[0006] 在一些實(shí)施例中,所述時(shí)間區(qū)間數(shù)據(jù)表包括主鍵列,所述時(shí)間區(qū)間數(shù)據(jù)表中的每 條數(shù)據(jù)行的主鍵值包括表示所述數(shù)據(jù)行對(duì)應(yīng)的時(shí)間區(qū)間的起點(diǎn)的起始時(shí)間點(diǎn)值。
[0007] 在一些實(shí)施例中,所述根據(jù)所述時(shí)間序列數(shù)據(jù)的時(shí)間,將所述時(shí)間序列數(shù)據(jù)的指 標(biāo)值存入時(shí)間區(qū)間數(shù)據(jù)表中,包括:根據(jù)所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn),在時(shí)間區(qū)間數(shù)據(jù)表中 匹配包含所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間所對(duì)應(yīng)的數(shù)據(jù)行;如果匹配到所述對(duì)應(yīng) 的數(shù)據(jù)行,則將所述時(shí)間序列數(shù)據(jù)的指標(biāo)值填入所述數(shù)據(jù)行中與所述時(shí)間點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū) 中;如果沒(méi)有匹配到所述數(shù)據(jù)行,則新增一條新數(shù)據(jù)行,所述新增的數(shù)據(jù)行的主鍵值包括所 述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn),所述新增的數(shù)據(jù)行的第一個(gè)存儲(chǔ)區(qū)所填入的數(shù)據(jù)為所述時(shí)間序 列數(shù)據(jù)的指標(biāo)值。
[0008] 在一些實(shí)施例中,所述時(shí)間序列數(shù)據(jù)還包括:數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼信息,其中,所 述數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼信息為所述時(shí)間序列數(shù)據(jù)的來(lái)源主體的標(biāo)識(shí)碼。
[0009] 在一些實(shí)施例中,所述每條數(shù)據(jù)行的主鍵值還包括數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼,所述數(shù) 據(jù)來(lái)源主體標(biāo)識(shí)碼為所述數(shù)據(jù)行的指標(biāo)值數(shù)據(jù)的來(lái)源主體的標(biāo)識(shí)碼。
[0010] 在一些實(shí)施例中,所述根據(jù)所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn),在時(shí)間區(qū)間數(shù)據(jù)表中匹 配包含所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間所對(duì)應(yīng)的數(shù)據(jù)行,包括:根據(jù)所述時(shí)間序列 數(shù)據(jù)的時(shí)間點(diǎn)以及數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼,在時(shí)間區(qū)間數(shù)據(jù)表中匹配包含所述時(shí)間序列數(shù)據(jù) 的時(shí)間點(diǎn)的時(shí)間區(qū)間并且主鍵值包括所述時(shí)間序列數(shù)據(jù)的數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼的數(shù)據(jù)行。
[0011] 在一些實(shí)施例中,以及所述新增的數(shù)據(jù)行的主鍵值還包括所述時(shí)間序列數(shù)據(jù)的數(shù) 據(jù)來(lái)源主體標(biāo)識(shí)碼。
[0012] 在一些實(shí)施例中,所述時(shí)間序列數(shù)據(jù)還包括:指標(biāo)標(biāo)識(shí)碼信息,所述指標(biāo)標(biāo)識(shí)碼為 所述時(shí)間序列數(shù)據(jù)的指標(biāo)值所對(duì)應(yīng)的指標(biāo)的標(biāo)識(shí)碼。
[0013] 在一些實(shí)施例中,所述每條數(shù)據(jù)行的主鍵值還包括指標(biāo)標(biāo)識(shí)碼,所述指標(biāo)標(biāo)識(shí)碼 為所述數(shù)據(jù)行記錄的指標(biāo)值所對(duì)應(yīng)的指標(biāo)的標(biāo)識(shí)碼。
[0014] 在一些實(shí)施例中,所述根據(jù)所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn),在時(shí)間區(qū)間數(shù)據(jù)表中匹 配包含所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間所對(duì)應(yīng)的數(shù)據(jù)行,包括:根據(jù)所述時(shí)間序列 數(shù)據(jù)的時(shí)間點(diǎn)、數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼和指標(biāo)標(biāo)識(shí)碼,在時(shí)間區(qū)間數(shù)據(jù)表中匹配包含所述時(shí) 間序列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間并且主鍵值包括所述時(shí)間序列數(shù)據(jù)的數(shù)據(jù)來(lái)源主體標(biāo)識(shí) 碼和指標(biāo)標(biāo)識(shí)碼的數(shù)據(jù)行。
[0015] 在一些實(shí)施例中,所述新增的數(shù)據(jù)行的主鍵值還包括所述時(shí)間序列數(shù)據(jù)的指標(biāo)標(biāo) 識(shí)碼。
[0016] 在一些實(shí)施例中,所述時(shí)間區(qū)間數(shù)據(jù)表還包括指標(biāo)值數(shù)據(jù)集合列,用于記錄所述 至少一個(gè)時(shí)間點(diǎn)的指標(biāo)值。
[0017] 在一些實(shí)施例中,所述指標(biāo)值數(shù)據(jù)集合列還用于記錄存儲(chǔ)區(qū)狀態(tài)信息,所述時(shí)間 區(qū)間數(shù)據(jù)表中的每條數(shù)據(jù)行中的所述存儲(chǔ)區(qū)狀態(tài)信息包括:所述數(shù)據(jù)行中的各存儲(chǔ)區(qū)的空 置狀態(tài),所述空置狀態(tài)表示所述存儲(chǔ)區(qū)是否填有數(shù)據(jù);以及所述將沒(méi)有填入數(shù)據(jù)的存儲(chǔ)區(qū) 進(jìn)行數(shù)據(jù)壓縮處理,包括:將存儲(chǔ)區(qū)狀態(tài)為"空閑"的存儲(chǔ)區(qū)進(jìn)行數(shù)據(jù)壓縮處理。
[0018] 第二方面,本申請(qǐng)?zhí)峁┝艘环N存儲(chǔ)時(shí)間序列數(shù)據(jù)的裝置,所述裝置包括:數(shù)據(jù)存儲(chǔ) 單元,用于根據(jù)時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn),將所述時(shí)間序列數(shù)據(jù)的指標(biāo)值存入時(shí)間區(qū)間數(shù)據(jù) 表中,其中,所述時(shí)間序列數(shù)據(jù)包括以下信息:時(shí)間點(diǎn)、與所述時(shí)間點(diǎn)關(guān)聯(lián)的指標(biāo)值,所述時(shí) 間區(qū)間數(shù)據(jù)表中的每條數(shù)據(jù)行用于記錄預(yù)定長(zhǎng)度的時(shí)間區(qū)間內(nèi)的至少一個(gè)時(shí)間點(diǎn)所關(guān)聯(lián) 的指標(biāo)值,所述至少一個(gè)時(shí)間點(diǎn)中各個(gè)時(shí)間點(diǎn)之間相隔預(yù)定的時(shí)間長(zhǎng)度,每個(gè)所述時(shí)間點(diǎn) 占用內(nèi)存的一個(gè)存儲(chǔ)區(qū),每個(gè)所述存儲(chǔ)區(qū)包括預(yù)定個(gè)數(shù)的字節(jié),每個(gè)所述時(shí)間點(diǎn)所關(guān)聯(lián)的 指標(biāo)值被填入所述時(shí)間點(diǎn)所占用的存儲(chǔ)區(qū)中;數(shù)據(jù)壓縮單元,用于將沒(méi)有填入數(shù)據(jù)的存儲(chǔ) 區(qū)進(jìn)行數(shù)據(jù)壓縮處理,得到時(shí)間區(qū)間壓縮數(shù)據(jù);數(shù)據(jù)寫入單元,用于將所述時(shí)間區(qū)間壓縮數(shù) 據(jù)寫入磁盤。
[0019] 在一些實(shí)施例中,所述時(shí)間區(qū)間數(shù)據(jù)表包括主鍵列,所述時(shí)間區(qū)間數(shù)據(jù)表中的每 條數(shù)據(jù)行的主鍵值包括表示所述數(shù)據(jù)行對(duì)應(yīng)的時(shí)間區(qū)間的起點(diǎn)的起始時(shí)間點(diǎn)值。
[0020] 在一些實(shí)施例中,所述數(shù)據(jù)存儲(chǔ)單元包括:數(shù)據(jù)行匹配子單元,用于根據(jù)所述時(shí)間 序列數(shù)據(jù)的時(shí)間點(diǎn),在時(shí)間區(qū)間數(shù)據(jù)表中匹配包含所述時(shí)間序列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間 所對(duì)應(yīng)的數(shù)據(jù)行;數(shù)據(jù)填入子單元,用于在匹配到所述對(duì)應(yīng)的數(shù)據(jù)行時(shí),將所述時(shí)間序列數(shù) 據(jù)的指標(biāo)值填入所述數(shù)據(jù)行中與所述時(shí)間點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)中;數(shù)據(jù)新增子單元,用于在沒(méi) 有匹配到所述數(shù)據(jù)行時(shí),新增一條新數(shù)據(jù)行,所述新增的數(shù)據(jù)行的主鍵值包括所述時(shí)間序 列數(shù)據(jù)的時(shí)間點(diǎn),所述新增的數(shù)據(jù)行的第一個(gè)存儲(chǔ)區(qū)所填入的數(shù)據(jù)為所述時(shí)間序列數(shù)據(jù)的 指標(biāo)值。
[0021] 在一些實(shí)施例中,所述時(shí)間序列數(shù)據(jù)還包括:數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼信息,其中,所 述數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼信息為所述時(shí)間序列數(shù)據(jù)的來(lái)源主體的標(biāo)識(shí)碼。
[0022] 在一些實(shí)施例中,所述每條數(shù)據(jù)行的主鍵值還包括數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼,所述數(shù) 據(jù)來(lái)源主體標(biāo)識(shí)碼為所述數(shù)據(jù)行的指標(biāo)值數(shù)據(jù)的來(lái)源主體的標(biāo)識(shí)碼。
[0023] 在一些實(shí)施例中,所述數(shù)據(jù)行匹配子單元進(jìn)一步配置用于根據(jù)所述時(shí)間序列數(shù)據(jù) 的時(shí)間點(diǎn)以及數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼,在時(shí)間區(qū)間數(shù)據(jù)表中匹配包含所述時(shí)間序列數(shù)據(jù)的時(shí) 間點(diǎn)的時(shí)間區(qū)間并且主鍵值包括所述時(shí)間序列數(shù)據(jù)的數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼的數(shù)據(jù)行。
[0024] 在一些實(shí)施例中,所述新增的數(shù)據(jù)行的主鍵值還包括所述時(shí)間序列數(shù)據(jù)的數(shù)據(jù)來(lái) 源主體標(biāo)識(shí)碼。
[0025] 在一些實(shí)施例中,所述時(shí)間序列數(shù)據(jù)還包括:指標(biāo)標(biāo)識(shí)碼信息,所述指標(biāo)標(biāo)識(shí)碼為 所述時(shí)間序列數(shù)據(jù)的指標(biāo)值所對(duì)應(yīng)的指標(biāo)的標(biāo)識(shí)碼。
[0026] 在一些實(shí)施例中,所述每條數(shù)據(jù)行的主鍵值還包括指標(biāo)標(biāo)識(shí)碼,所述指標(biāo)標(biāo)識(shí)碼 為所述數(shù)據(jù)行記錄的指標(biāo)值所對(duì)應(yīng)的指標(biāo)的標(biāo)識(shí)碼。
[0027] 在一些實(shí)施例中,所述數(shù)據(jù)行匹配子單元進(jìn)一步配置用于根據(jù)所述時(shí)間序列數(shù)據(jù) 的時(shí)間點(diǎn)、數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼和指標(biāo)標(biāo)識(shí)碼,在時(shí)間區(qū)間數(shù)據(jù)表中匹配包含所述時(shí)間序 列數(shù)據(jù)的時(shí)間點(diǎn)的時(shí)間區(qū)間并且主鍵值包括所述時(shí)間序列數(shù)據(jù)的數(shù)據(jù)來(lái)源主體標(biāo)識(shí)碼和 指標(biāo)標(biāo)識(shí)碼的數(shù)據(jù)行。
[0028] 在一些實(shí)施例中,所述新增的數(shù)據(jù)行的主鍵值還包括所述時(shí)間序列數(shù)據(jù)的指標(biāo)標(biāo) 識(shí)碼。
[0029] 在一些實(shí)