Informix TimeSeriesデータをDB2からアクセス..

oninit

2012年03月15日 01:03

Informix 上に作成した、Time Seriesデータを含む表(ここではtsdatatable)は、Informix専用のクライアントで検索すると、以下のように見えます。
ーーー
> select first 1 * from tsdatatable;

loc_code 1
mytsdata origin(2012-01-01 00:00:00.00000), calendar(mycalendar), container(cn
_mytsdata), threshold(20), regular, [(0 ,0 ,0
), (10 ,100 ,1000 ), (0 ,0
,0 ), (10 ,100 ,1000 ), (0 ,0
,0 ), (10 ,100 ,1000 ), (0
,0 ,0 ), (10 ,100 ,1000
), (0 ,0 ,0 ), (10 ,100 ,1
000 ), (0 ,0 ,0 ), (10 ,100
,1000 ), (0 ,0 ,0 ), (10
,100 ,1000 ), (0 ,0 ,0 ),


このtsdatatableをDB2から検索すると....
db2 => select first 1 * from tsdatatable;
SQL0969N There is no message text corresponding to SQL error "-999" in the
message file on this workstation. The error was returned from module
"IFX11700" with original tokens "". SQLSTATE=IX000

残念でした。
次に、tsdatatableに対して、VTI ( 仮想表インターフェース)を使って、仮想表を定義してみます。vtsdatatableという名前の仮想表を作ってみました。これを検索すると、こんな感じです。
> select first 5 * from vtsdatatable;


loc_code tstamp val1 val2 val3

1 2012-01-01 00:00:00.00000 0 0 0
1 2012-01-01 00:00:01.00000 10 100 1000
1 2012-01-01 00:00:02.00000 0 0 0
1 2012-01-01 00:00:03.00000 10 100 1000
1 2012-01-01 00:00:04.00000 0 0 0

5 row(s) retrieved.


VTI経由なら大丈夫かな?と、試してみました。
db2 => select first 5 * from vtsdatatable;

loc_code tstamp val1 val2 val3
----------- -------------------------- ----------- ----------- -----------
1 2012-01-01-00.00.00.000000 0 0 0
1 2012-01-01-00.00.01.000000 10 100 1000
1 2012-01-01-00.00.02.000000 0 0 0
1 2012-01-01-00.00.03.000000 10 100 1000
1 2012-01-01-00.00.04.000000 0 0 0

5 record(s) selected.


大丈夫みたいですね。例えば範囲を指定した集計関数(avg,max,minなど)は、Time Seriesネーティブアクセスには負けるものの、普通の表に比べると高速でした。


関連記事