티스토리 뷰

informix

LOB 타입 데이터 크기 계산

pajama 2018. 12. 17. 15:25
반응형

안녕하세요. 인포믹스 LOB(Large Object) 타입의 데이터 크기를 계산하는 방법을 테스트해봤습니다.

LOB 타입 데이터를 처리할 수 있는 함수가 없는 것으로 알고 있어서, 아래와 같이 blademgr의 번들된 모듈을 설치해서 사용했습니다.


1. 먼저 테스트용 데이터베이스 stores_demo를 아래와 같이 만듭니다.

$ dbaccessdemo -log -dbspace datadbs1


2. blademgr에서 LOB 타입 데이터를 처리하기 위한 모듈을 아래와 같이 설치합니다.

$ blademgr

ol_informix1210_1>show databases

Databases on server:

        stores_demo

        sysadmin

        sysuser


ol_informix1210_1>list stores_demo

DataBlade modules registered in database stores_demo:

         TimeSeries.6.00.FC7          ifxrltree.2.00

            spatial.8.22.FC2


ol_informix1210_1>show modules

16 DataBlade modules installed on server ol_informix1210_1:

                LLD.1.20.FC2                Node.2.0 c

           TSAFuncs.1.00.FC1       TSPIndex.1.00.FC1

           TSPMatch.2.00.FC1     TimeSeries.6.00.FC7

               binaryudt.1.0                bts.3.10

                excompat.1.0         ifxbuiltins.1.1

               ifxregex.1.00          ifxrltree.2.00

                 mqblade.2.0        spatial.8.22.FC2

                sts.2.00.FC1            wfs.1.00.FC1

A 'c' indicates DataBlade module has client files.

If a module does not show up, check the prepare log.

ol_informix1210_1>register excompat.1.0 stores_demo

Register module excompat.1.0 into database stores_demo? [Y/n]y

Registering DataBlade module... (may take a while).

DataBlade excompat.1.0 was successfully registered in database stores_demo.


3. 위와 같은 절차로 설치하고 나면 dbms 관련 함수와 프로시저가 생성된 것을 확인할 수 있습니다.

$ dbschema -d stores_demo -f all | egrep 'create function.*dbms_|create procedure.*dbms'

create function "informix".dbms_lob_getlength (blob)

create function "informix".dbms_lob_getlength (clob)

create function "informix".dbms_lob_compare (blob,blob,integer default 2147483647,integer default 1,integer default 1)

create function "informix".dbms_lob_substr (clob,integer default 32767,integer default 1)

create function "informix".dbms_lob_instr (clob,lvarchar,integer default 1,integer default 1)

create function "informix".dbms_lob_new_clob (lvarchar)

create function "informix".dbms_lob_compare (clob,clob,integer default 2147483647,integer default 1,integer default 1)

create function "informix".dbms_random_jrand48 (inout bigint)

create procedure "informix".dbms_output_enable (integer default 20000)

create procedure "informix".dbms_output_disable ()

create procedure "informix".dbms_output_put (lvarchar)

...


4. 인포믹스 데모 프로그램의 샘플 이미지 파일을 입력하기전에 사이즈를 확인합니다.

$ ls -l demo/esqlc/cn*.gif

-rw-r--r--    1 informix informix      15736 Apr 19 18:08 demo/esqlc/cn_10001.gif

-rw-r--r--    1 informix informix      21454 Apr 19 18:08 demo/esqlc/cn_10027.gif

-rw-r--r--    1 informix informix      11751 Apr 19 18:08 demo/esqlc/cn_10031.gif

-rw-r--r--    1 informix informix      25610 Apr 19 18:08 demo/esqlc/cn_10046.gif

-rw-r--r--    1 informix informix       7937 Apr 19 18:08 demo/esqlc/cn_10049.gif


5. 입력할 테이블을 만들고 LOB 데이터 크기를 계산합니다.

$ dbaccess stores_demo -

> create table test (filename varchar(30), img blob);

> insert into test values ('cn_10001.gif', filetoblob('./demo/esqlc/cn_10001.gif','client'));

> insert into test values ('cn_10027.gif', filetoblob('./demo/esqlc/cn_10027.gif','client'));

> insert into test values ('cn_10031.gif', filetoblob('./demo/esqlc/cn_10031.gif','client'));

> insert into test values ('cn_10046.gif', filetoblob('./demo/esqlc/cn_10046.gif','client'));

> insert into test values ('cn_10049.gif', filetoblob('./demo/esqlc/cn_10049.gif','client'));

> select filename, dbms_lob_getlength (img) from test;



filename                       (expression)


cn_10001.gif                          15736

cn_10027.gif                          21454

cn_10031.gif                          11751

cn_10046.gif                          25610

cn_10049.gif                           7937


5 row(s) retrieved.



Knowledge Center를 보면 DBMS_LOB_LENGTH라고 문서화가 되어있지 않아 혼동이 있을 것 같네요.

참고가 되시기를 바랍니다.




** 참고

http://www-01.ibm.com/support/docview.wss?uid=swg21670983

https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.dbext.doc/ids_r0055123.htm

반응형
댓글