ÀÀ¿ëÇÁ·Î±×·¥°ú DB2 µ¥ÀÌÅͺ£À̽º °£¿¡ À̹ÌÁö, ¿Àµð¿À Ŭ¸³ ¹× ºñµð¿À Ŭ¸³°ú °°Àº ´ëÇü ¿ÀºêÁ§Æ®¸¦ ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¹æ¹ýÀº ¿ÀºêÁ§Æ®°¡ ÆÄÀÏ ¶Ç´Â ¸Þ¸ð¸® ¹öÆÛ·Î/·ÎºÎÅÍ Àü¼ÛµÇ´ÂÁö¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ¶ÇÇÑ ÆÄÀÏÀÌ Å¬¶óÀÌ¾ðÆ® ¸Ó½Å¿¡ ÀÖ´ÂÁö ¶Ç´Â µ¥ÀÌÅͺ£À̽º ¼¹ö ¸Ó½Å¿¡ ÀÖ´ÂÁö¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
µ¥ÀÌÅͺ£À̽º Å×À̺í°ú ¼¹ö ÆÄÀÏ °£¿¡ ¿ÀºêÁ§Æ® Àü¼Û½Ã, ÀûÀýÇÑ Extender UDF ¿äû¿¡ ÆÄÀÏ °æ·Î¸¦ ÁöÁ¤ÇϽʽÿÀ. Extender UDF¿Í ÆÄÀÏÀÌ ¸ðµÎ ¼¹ö¿¡ Àֱ⠶§¹®¿¡ Extender´Â ÆÄÀÏÀ» ãÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ SQL¹®¿¡¼ ¼¹ö ÆÄÀÏ¿¡ ÀÖ´Â ³»¿ëÀÇ À̹ÌÁö´Â µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', 'ASIS', :hvStorageType, 'Anita''s picture') );
Extender´Â ¸Þ¸ð¸® ¹öÆÛ¿¡ Á÷Á¢ ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® ÄÄÇ»ÅÍÀÇ ¹öÆÛ »ó¿¡¼ ¿ÀºêÁ§Æ®¸¦ Àü¼ÛÇÏ·Á¸é, ¹öÆÛ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â °Í°ú´Â ´Ù¸¥ ¼öÇà ¹æ¹ýÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¿ÀºêÁ§Æ®¸¦ ¹öÆÛ·Î(¿¡¼) Àü¼ÛÇÏ´Â ÇѰ¡Áö ¹æ¹ýÀº È£½ºÆ® º¯¼ö¸¦ ÅëÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº ÀϹÝÀûÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥°ú DB2 µ¥ÀÌÅͺ£À̽º °£¿¡ ¿ÀºêÁ§Æ®¸¦ Àü¼ÛÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
»ç¿ëÀÚ´Â ÀüÅëÀûÀÎ ¹®ÀÚ ¹× ¼ýÀÚ ¿ÀºêÁ§Æ®¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ´ëÇü ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ È£½ºÆ® º¯¼ö¸¦ Á¤ÀÇÇÏ°í »ç¿ëÇÕ´Ï´Ù. DECLARE ¼½¼Ç¿¡ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇϰí, ±×°Í¿¡ Àü¼ÛÇÒ °ªÀ» ÇÒ´çÇϰųª ¶Ç´Â ±×°Í¿¡ Àü¼ÛµÇ´Â °ªÀ» ¾×¼¼½ºÇÕ´Ï´Ù.
À̹ÌÁö, ¿Àµð¿À ¶Ç´Â ºñµð¿À µ¥ÀÌÅÍ¿ë È£½ºÆ® º¯¼öÀÇ ¼±¾ð½Ã BLOB µ¥ÀÌÅÍ À¯ÇüÀ» ÁöÁ¤ÇϽʽÿÀ. ¿ÀºêÁ§Æ® ÀúÀå, °Ë»ö ¶Ç´Â °»½ÅÇϱâ À§ÇØ UDF¸¦ »ç¿ëÇÒ ¶§ »ç¿ëÀÚ´Â UDF ¿äû¿¡ ´ëÇÑ Àμö·Î¼ ÀûÀýÇÑ È£½ºÆ® º¯¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. SQL¹®¿¡ ÁöÁ¤ÇÏ´Â ´Ù¸¥ È£½ºÆ® º¯¼ö¿¡ ´ëÇØ¼¿Í µ¿ÀÏÇÑ Çü½ÄÀ» »ç¿ëÇϽʽÿÀ.
¿¹¸¦ µé¾î, ´ÙÀ½ SQL¹®Àº hvaudio¶ó´Â È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇϰí À̸¦ »ç¿ëÇÏ¿© ¿Àµð¿À Ŭ¸³À» µ¥ÀÌÅͺ£À̽º¿¡ Àü¼ÛÇÕ´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (2M) hvaudio; EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2Audio( CURRENT SERVER, :hvaudio, 'WAVE', CAST(NULL as LONG VARCHAR), 'Anita''s voice') );
¿Àµð¿À ¹× ºñµð¿À Ŭ¸³°ú °°Àº ´ëÇü ¿ÀºêÁ§Æ®´Â ¾ÆÁÖ Ä¿Áú ¼ö ÀÖ°í, È£½ºÆ® º¯¼öÀÇ »ç¿ëÀº ±×°ÍµéÀ» Á¶ÀÛÇÏ´Â °¡Àå È¿°úÀûÀÎ ¹æ¹ýÀÌ ¾Æ´Ò ¼ö ÀÖ½À´Ï´Ù. LOB À§Ä¡ ÁöÁ¤ÀÚ°¡ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ LOBÀ» Á¶ÀÛÇÏ´Â ´õ ³ªÀº ¹æ¹ýÀÏ ¼ö ÀÖ½À´Ï´Ù.
LOB À§Ä¡ ÁöÁ¤ÀÚ´Â ÇÁ·Î±×·¥ÀÌ DB2 µ¥ÀÌÅͺ£À̽º¿¡¼ ´õ Å« LOBÀ» ÂüÁ¶ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö Àִ ȣ½ºÆ® º¯¼ö¿¡ ÀúÀåµÈ ÀÛÀº(4¹ÙÀÌÆ®) °ªÀÔ´Ï´Ù. LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÏ¿©, ÇÁ·Î±×·¥Àº LOBÀÌ ÀÏ¹Ý È£½ºÆ® º¯¼ö¿¡ ÀúÀåµÈ °Íó·³ LOBÀ» Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. Â÷ÀÌÁ¡Àº Ŭ¶óÀÌ¾ðÆ® ÄÄÇ»ÅÍ »óÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö¿Í ÀÀ¿ëÇÁ·Î±×·¥ »çÀÌ¿¡ LOBÀ» Àü¼ÛÇÒ Çʿ䰡 ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡¼ LOB ¼±ÅýÃ, LOBÀº ¼¹ö¿¡ ³²°í LOB À§Ä¡ ÁöÁ¤Àڴ Ŭ¶óÀÌ¾ðÆ®·Î À̵¿ÇÕ´Ï´Ù.
»ç¿ëÀÚ´Â DECLARE ¼½¼Ç¿¡ LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ ¼±¾ðÇÏ°í ±×°ÍÀ» È£½ºÆ® º¯¼ö¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÇÕ´Ï´Ù. À̹ÌÁö, ¿Àµð¿À ¶Ç´Â ºñµð¿À µ¥ÀÌÅÍ¿¡ ´ëÇÑ LOB À§Ä¡ ÁöÁ¤ÀÚ ¼±¾ð½Ã BLOB_LOCATORÀÇ µ¥ÀÌÅÍ À¯ÇüÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¾î, ´ÙÀ½ SQL¹®Àº video_loc·Î À̸§ ÁöÁ¤µÈ LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ ¼±¾ðÇÏ°í »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡¼ ºñµð¿À Ŭ¸³À» °Ë»öÇÕ´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR video_loc; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT CONTENT(VIDEO) INTO :video_loc FROM EMPLOYEE WHERE NAME='Anita Jones';
UDF´Â LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. À̹ÌÁö, ¿Àµð¿À ¹× ºñµð¿À ¿ÀºêÁ§Æ®¸¦ ÀúÀåÇÏ°í °Ë»öÇÏ¸ç °»½ÅÇÏ´Â DB2 Extender UDF´Â LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. DB2 Extender V1¿¡¼ ÀÌ·¯ÇÑ UDF´Â LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò°í, ÀÌ ¶§¹®¿¡ À̰ÍÀº 2MB¸¦ ³Ñ´Â ¿ÀºêÁ§Æ®¸¦ ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ Á¦ÇÑ»çÇ×Àº 2MB¸¦ ³Ñ´Â ¿ÀºêÁ§Æ®¸¦ ¼¼±×¸ÕÆ® ´ÜÀ§·Î Àü¼ÛÇÏ°Ô ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ UDF°¡ LOB À§Ä¡ ÁöÁ¤ÀÚ¸¦ »ç¿ëÇϱ⠶§¹®¿¡ 2MB Á¦ÇÑ»çÇ×Àº Á¦°ÅµË´Ï´Ù.
Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÖ´Â ÆÄÀÏ·Î(¿¡¼) ¿ÀºêÁ§Æ®¸¦ Àü¼ÛÇÏ·Á¸é ÆÄÀÏ ÂüÁ¶ º¯¼ö¸¦ »ç¿ëÇϽʽÿÀ. ÆÄÀÏ ÂüÁ¶ º¯¼öÀÇ »ç¿ëÀ¸·Î, ÀÀ¿ëÇÁ·Î±×·¥¿¡ ´ëÇü ¿ÀºêÁ§Æ®¿ë ¹öÆÛ °ø°£À» ÇÒ´çÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. UDF¿¡ ÆÄÀÏ ÂüÁ¶ º¯¼ö »ç¿ë½Ã, DB2´Â BLOB ³»¿ëÀ» ÆÄÀϰú UDF »çÀÌ¿¡ Á÷Á¢ Àü´ÞÇÕ´Ï´Ù.
»ç¿ëÀÚ´Â DECLARE ¼½¼Ç¿¡ ÆÄÀÏ ÂüÁ¶ º¯¼ö¸¦ ¼±¾ðÇÏ°í ±×°ÍÀ» È£½ºÆ® º¯¼ö¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÇÕ´Ï´Ù. À̹ÌÁö, ¿Àµð¿À ¶Ç´Â ºñµð¿À µ¥ÀÌÅÍ¿ë ÆÄÀÏ ÂüÁ¶ º¯¼ö ¼±¾ð½Ã, BLOB_FILEÀÇ µ¥ÀÌÅÍ À¯ÇüÀ» ÁöÁ¤ÇϽʽÿÀ. ±×·¯³ª ¿ÀºêÁ§Æ® ³»¿ëÀ» Æ÷ÇÔÇϴ ȣ½ºÆ® º¯¼ö¿Í´Â ´Þ¸®, ÆÄÀÏ ÂüÁ¶ º¯¼ö´Â ÆÄÀÏ À̸§À» Æ÷ÇÔÇÕ´Ï´Ù. ÆÄÀÏ Å©±â´Â UDF¿¡ ´ëÇØ Á¤ÀǵǴ BLOB Å©±â ÀÌÇϰ¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
»ç¿ëÀÚ´Â ÀÔÃâ·Â¿ë ÆÄÀÏ ÂüÁ¶ º¯¼öÀÇ »ç¿ë ¹æ¹ý¿¡ ´ëÇØ ´Ù¾çÇÑ ¿É¼ÇÀ» °®½À´Ï´Ù. »ç¿ëÀÚ´Â ÇÁ·Î±×·¥ÀÇ ÆÄÀÏ ÂüÁ¶ º¯¼ö ±¸Á¶¿¡ FILE_OPTIONS Çʵ带 ¼³Á¤ÇÏ¿©, ¿øÇÏ´Â ¿É¼ÇÀ» ¼±ÅÃÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿É¼Ç¿¡¼ ¼±Åà °¡´ÉÇÕ´Ï´Ù.
ÀÔ·Â¿ë ¿É¼Ç
SQL_FILE_READ. ÀÌ ÆÄÀÏÀ» ¿°í, Àаí, ´ÝÀ» ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏÀÇ µ¥ÀÌÅÍ ±æÀÌ(¹ÙÀÌÆ®)´Â ÆÄÀÏÀ» ¿ ¶§ °áÁ¤µË´Ï´Ù. ÆÄÀÏ ÂüÁ¶ º¯¼ö ±¸Á¶ÀÇ data_length Çʵå´Â ÆÄÀÏ ±æÀÌ(¹ÙÀÌÆ®)¸¦ º¸À¯ÇÕ´Ï´Ù.
Ãâ·Â¿ë ¿É¼Ç
¿¹¸¦ µé¾î, ´ÙÀ½ ¸í·É¹®Àº Img_fileÀ̶ó´Â ÆÄÀÏ ÂüÁ¶ º¯¼ö¸¦ ¼±¾ðÇϰí À̸¦ »ç¿ëÇÏ¿© ³»¿ëÀÌ Å¬¶óÀÌ¾ðÆ® ÆÄÀÏ¿¡ ÀÖ´Â À̹ÌÁö¸¦ µ¥ÀÌÅͺ£À̽º Å×À̺í·Î ÀúÀåÇÕ´Ï´Ù. FILE_OPTIONS ÇʵåÀÇ SQL_FILE_READ ÁöÁ¤À» ÁÖÀÇÇϽʽÿÀ.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Img_file; EXEC SQL END DECLARE SECTION; strcpy (Img_file.name,"/employee/images/ajones.bmp"); Img_file.name_length=strlen(Img_file.name); Img_file.file_options=SQL_FILE_READ; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, :Img_file, 'ASIS', CAST(NULL as LONG VARCHAR), 'Anita''s picture') );
DB2 Extender´Â ¿ÀºêÁ§Æ®ÀÇ ÀúÀå, °Ë»ö ¶Ç´Â °»½Å½Ã ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ À¶Å뼺À» Á¦°øÇÕ´Ï´Ù.
ÀúÀå, °Ë»ö ¹× °»½Å Á¶ÀÛÀ» À§ÇØ ¿ÏÀüÈ÷ ±ÔÁ¤µÈ ÆÄÀÏ À̸§(Áï, ÆÄÀÏ À̸§ÀÌ µÚµû¸£´Â ¿ÏÀüÇÑ °æ·Î)À» ÁöÁ¤ÇÒ ¼öµµ ÀÖÁö¸¸, »ó´ë ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ´Â ÆíÀÌ ´õ¿í ÁÁ½À´Ï´Ù. AIX, HP-UX ¹× Solaris¿¡¼, »ó´ë ÆÄÀÏ À̸§À̶õ ½½·¡½Ã·Î ½ÃÀÛÇÏÁö ¾Ê´Â ÆÄÀÏ À̸§ÀÔ´Ï´Ù. OS/2 ¹× Windows¿¡¼, »ó´ë ÆÄÀÏ À̸§À̶õ µå¶óÀ̺ê¸í ´ÙÀ½¿¡ ÄÝ·Ð ¹× ¹é½½·¡½Ã·Î ½ÃÀÛÇÏÁö ¾Ê´Â ¸ðµç ÆÄÀÏ À̸§ÀÔ´Ï´Ù.
»ó´ë ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ´Â °æ¿ì, Extender´Â ÆÄÀÏ À̸§À» ÇØ°áÇϱâ À§ÇÑ Å½»ö °æ·Î·Î ´Ù¾çÇÑ Å¬¶óÀÌ¾ðÆ®¿Í ¼¹ö ȯ°æ º¯¼öÀÇ µð·ºÅ丮 ½ºÆåÀ» »ç¿ëÇÕ´Ï´Ù. Àüü °æ·Î À̸§Àº ÀϹÝÀûÀ¸·Î ¸¶¿îÆ® ÁöÁ¡°ú °ü·ÃµÈ ¼±µÎ ºÎºÐ°ú ÇÊ¿äÇÑ ÆÄÀÏÀ» °íÀ¯ÇÏ°Ô ½Äº°ÇÏ´Â ÈÄ¹Ì °æ·Î À̸§À¸·Î ÀÌ·ç¾îÁý´Ï´Ù. ÈÄ¹Ì °æ·Î À̸§Àº UDF¿¡ ÁöÁ¤µË´Ï´Ù. ȯ°æ º¯¼ö´Â »ó´ë ÆÄÀÏ À̸§À» ÇØ°áÇÒ ¶§ Ž»öÇÒ ¼±µÎ °æ·Î À̸§ ¸ñ·ÏÀ» Á¦°øÇÕ´Ï´Ù. DB2 Extender°¡ ÆÄÀÏ À̸§À» ÇØ°áÇÏ´Â µ¥ »ç¿ëÇϴ ȯ°æ º¯¼ö¿¡ ´ëÇØ¼´Â ºÎ·Ï A, DB2 ExtenderÀÇ È¯°æ º¯¼ö ¼³Á¤¿¡¼ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ÂüÁ¶ÇϽʽÿÀ.
Extender´Â ÆÄÀÏ À̸§ Çü½Äµµ ÀûÀýÇÏ°Ô º¯È¯ÇÕ´Ï´Ù. ÆÄÀÏ À̸§ÀÇ ¼¹ö Àü´Þ½Ã, À̰ÍÀº ¼¹öÀÇ ¿î¿µ üÁ¦¿¡ ´ëÇØ ÀûÀýÇÑ Çü½ÄÀ¸·Î º¯È¯µË´Ï´Ù. ¿¹¸¦ µé¾î, AIX ¼¹ö·Î Àü´ÞµÉ ¶§¿¡´Â c:\dir1\abc.bmp¿Í °°Àº OS/2 ÆÄÀÏ À̸§ÀÌ /dir1/abc.bmp·Î º¯È¯µË´Ï´Ù.