IBM Informix 為處理時間序列數據提供了本機支持。IBM Informix 中提供的 TimeSeries 數據類型有助于減少存儲的成本,以及在您選擇和加載大量時間序列數據時改善性能。在本文中,您將學習如何開始創建和加載時間序列數據。
另外,virtual table interface 讓時間序列看起來像正常的表。本文還將描述 ibm informix 時間序列組件的一般架構、創建和加載一個時間序列的步驟,以及使用 open admin 工具管理一個時間序列。
IBM Informix TimeSeries 解決方案改進了功能,擴展了對時間序列數據進行存儲、操作和訪問的支持。它使您能夠通過選擇時間序列間隔和指定時間序列的存儲位置,自由地管理時間序列數據。
時間序列數據是一組數據,其中每一項都具有時間戳并按時間順序訪問,可以按時序進行處理和分析。Informix TimeSeries 解決方案的主要優勢包括以下方面。
- 相比傳統的關系方法,節省了高達 80% 的存儲空間。
- 相比傳統的關系方法,在處理時態數據方面的性能改進了幾個數量級。
- 通過內置的例程減少了應用程序開發成本。
- 通過 Open Admin 工具簡化了管理。
本文將介紹處理時間序列數據的步驟。創建和加載一個 TimeSeries 的步驟涉及到處理以下組件。
- 日歷
- 日歷模式
- TimeSeries 列
- TimeSeries 容器
本文還會向您展示如何執行以下活動。
- 創建一個 TimeSeries
- 加載數據
要開始使用 TimeSeries,您需要首先創建一個緩沖的日志數據庫。
TimeSeries 架構
TimeSeries 子類型是一個 ROW 集合。一個 ROW 數據類型是由具有相同數據類型或不同數據類型的列組成。在定義一個 TimeSeries 時,Informix 可使用其自身的日歷和 TimeSeries 開始日期。
TimeSeries 的總體架構和不同組件如下所述。這兩個主要組件是 TimeSeries 數據類型和 TimeSeries 子類型(Row 數據類型)。TimeSeries 數據類型充當 TimeSeries 子類型(一個 ROW 集合)的一個類型構造函數。ROW 數據類型包含由一組命名列所組成的單一數據庫列,這些列具有您定義的相同或不同的數據類型。
時間戳列必需是第一列并具有 DATETIME YEAR TO FRACTION(5) 類型。在圖 1 中所示的示例中,該表包含 meter_id 列(包含儀表編號)和 meter_data 列(包含 TimeSeries)。每個表行包含不同的 TimeSeries。在此示例中,表中的 3 行擁有一個子類型 meter_data 的 TimeSeries。元素的結構是由 TimeSeries 行子類型進行定義。
圖 1. TimeSeries 架構
日歷和日歷模式數據類型
日歷定義何時需要 TimeSeries 數據。在開始定義包含 TimeSeries 列的表之前,您需要依據想要的 TimeSeries 數據頻率來創建日歷。有一些內置的日歷可供快速使用。
要設置日歷,您必需創建日歷模式并創建日歷。
創建日歷模式
要創建日歷模式,必需在 CalendarPatterns 表中插入值。
清單 1 中的示例展示了如何創建一個名為 sm_15min 的日歷模式。該模式以分鐘為單位,每 15 分鐘就有一個有效的輸入。
清單 1. 創建日歷模式
INSERT INTO CalendarPatterns values ( 'sm_15min', '{1 on , 14 off}, minute');
創建日歷
要創建日歷,您必需在 CalendarTable 表中插入值。清單 2 展示了如何將一個名為 cal_15min 的日歷插入到 CalendarTable 表中。
清單 2. 創建日歷
insert into CalendarTable(c_name, c_calendar) values ('cal_15min', 'startdate(2012-01-01 00:00:00), pattstart(2012-01-01 00:00:00), pattname(sm_15min)');
這個日歷從 2012 年 1 月 1 日開始。其模式也從 2012 年 1 月 1 日 00:00:00 開始,它使用上一步中創建的模式 sm_15min。