ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼­

±âŸ ÄÚµù½Ã °í·Á»çÇ×

ÀÌ Àý¿¡¼­´Â UDF¸¦ ±¸ÇöÇÒ ¶§ Ãß°¡ÀûÀ¸·Î °í·ÁÇØ¾ß ÇÒ »çÇ×, ¸í½ÉÇØ¾ß ÇÒ Ç׸ñ ¹× ÇÇÇØ¾ß ÇÒ Ç׸ñ µîÀ» ¼³¸íÇÕ´Ï´Ù.

µµ¿ò¸» ¹× Ãß°¡ Á¤º¸

´ÙÀ½Àº »ç¿ëÀÚÀÇ UDF¸¦ ¼º°øÀûÀ¸·Î ±¸ÃàÇϱâ À§ÇØ °í·ÁÇØ¾ß ÇÏ´Â ±ÇÀå»çÇ×ÀÔ´Ï´Ù.

UDF Á¦ÇÑ»çÇ× ¹× Á¶°Ç

ÀÌ Àý¿¡¼­´Â »ç¿ëÀÚÀÇ UDF¿¡¼­ ÇÇÇØ¾ß ÇÒ Ç׸ñ¿¡ ´ëÇÏ¿© ¼³¸íÇÕ´Ï´Ù.

  1. ÀϹÝÀûÀ¸·Î DB2´Â ¿î¿µ üÁ¦ ±â´É »ç¿ëÀ» Á¦ÇÑÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª ¸î °¡Áö ¿¹¿Ü°¡ Àִµ¥ ´ÙÀ½°ú °°½À´Ï´Ù.
    1. ½ÅÈ£ ¶Ç´Â ¿¹¿Ü Çڵ鷯¸¦ µî·ÏÇÏ´Â °æ¿ì, À̰ÍÀÌ DB2°¡ °°Àº Çڵ鷯¸¦ »ç¿ëÇÏ´Â °ÍÀ» ¹æÇØÇÏ¿© ¿¹»óÄ¡ ¸øÇÑ Àå¾Ö°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
    2. ÇÁ·Î¼¼½º¸¦ Á¾·áÇÏ´Â ½Ã½ºÅÛ È£ÃâÀº DB2ÀÇ ÇÁ·Î¼¼½º Áß Çϳª¸¦ ÀÌ»ó Á¾·á½ÃŰ°í ½Ã½ºÅÛÀ̳ª ÀÀ¿ëÇÁ·Î±×·¥ Àå¾Ö¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù.

      ´Ù¸¥ ½Ã½ºÅÛ È£ÃâÀÇ °æ¿ì, À̵éÀÌ DB2ÀÇ Á¤»óÀûÀÎ Á¶ÀÛÀ» ¹æÇØÇÏ´Â °æ¿ì ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î UDF°¡ µé¾î ÀÖ´Â ¶óÀ̺귯¸®¸¦ ¸Þ¸ð¸®¿¡¼­ ·Îµå ÇØÁ¦ÇÏ·Á´Â UDF´Â ½É°¢ÇÑ ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ö ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ È£ÃâÀÌ µé¾î ÀÖ´Â UDF¸¦ ÄÚµù ¹× Å×½ºÆ®ÇÏ´Â °æ¿ì ÁÖÀÇÇØ ÁֽʽÿÀ.

  2. 'DB2'·Î ½ÃÀÛÇÏ´Â ¸ðµç ȯ°æ º¯¼öÀÇ °ªÀº µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ db2start¸¦ »ç¿ëÇÏ¿© ½ÃÀÛµÉ ¶§ ĸÃĵǸç, FENCED µÇ¾ú´ÂÁö ¿©ºÎ¿¡ °ü°è¾øÀÌ ¸ðµç UDF¿¡¼­ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù. À¯ÀÏÇÑ ¿¹¿Ü´Â DB2CKPTR ȯ°æ º¯¼öÀÔ´Ï´Ù. ȯ°æ º¯¼ö°¡ ĸÃĵȴٴÂÁ¡¿¡ ÁÖÀÇÇϽʽÿÀ. db2start°¡ ¹ßÇàµÈ ÀÌÈÄ¿¡ ȯ°æ º¯¼öÀÇ º¯°æµÈ ³»¿ëÀº UDF¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
  3. ¿ÜºÎ UDF·Î Àü´ÞµÈ LOBÀÇ °æ¿ì, UDF °øÀ¯ ¸Þ¸ð¸® Å©±â¶ó´Â DB2 ½Ã½ºÅÛ ±¸¼º ¸Å°³º¯¼ö¿¡ ÀÇÇØ ÁöÁ¤µÈ ÃÖ´ë Å©±â¿¡ Á¦ÇÑÀ» ¹Þ½À´Ï´Ù. ÀÌ ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ÃÖ´ë °ªÀº 256MÀÔ´Ï´Ù. DB2¿¡¼­ÀÇ ±âº» ¼³Á¤°ªÀº 1MÀÔ´Ï´Ù. ÀÌ ¸Å°³º¯¼ö¿¡ ´ëÇØ¼­´Â °ü¸® ¾È³»¼­¿¡¼­ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
  4. È­¸é°ú Űº¸µå·ÎÀÇ ÀÔ·Â ¹× Ãâ·ÂÀº ±ÇÀåµÇÁö ¾Ê½À´Ï´Ù. DB2ÀÇ ÇÁ·Î¼¼½º ¸ðµ¨¿¡¼­ UDF´Â ¹é±×¶ó¿îµå¿¡¼­ ¼öÇàµÇ¾î È­¸é¿¡¼­ ±â·ÏÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¯³ª ÆÄÀÏ¿¡ ±â·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù.
    ÁÖ:DB2´Â DB2 ÀÚ½ÅÀÇ Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ¿© UDF¿¡ ÀÇÇØ ¼öÇàµÇ´Â ¿ÜºÎ ÀÔ/Ãâ·ÂÀ» µ¿±âÈ­ÇÏ·Á°í ½ÃµµÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, UDF°¡ Æ®·£Àè¼Ç µ¿¾È ÆÄÀÏ¿¡ ±â·ÏÇϰí, ÀÌ Æ®·£Àè¼ÇÀÌ ¾î¶² ÀÌÀ¯¿¡¼­ÀÎÁö ³ªÁß¿¡ ¹é ¾Æ¿ôµÈ °æ¿ì, ÀÌ ÆÄÀÏ¿¡ ´ëÇÑ ±â·ÏÀ» ¹ß°ßÇϰųª ½ÇÇàÃë¼ÒÇÏ·Á´Â ½Ãµµ°¡ ÀÌ·ç¾îÁöÁö ¾Ê½À´Ï´Ù.
  5. UNIX ±â¹Ý ½Ã½ºÅÛ¿¡¼­, »ç¿ëÀÚÀÇ UDF´Â DB2 ¿¡ÀÌÀüÆ® ÇÁ·Î¼¼½º(NOT FENCED)ÀÇ »ç¿ëÀÚ ID³ª db2udf ½ÇÇà°¡´É ÆÄÀÏ(FENCED)À» ¼ÒÀ¯ÇÏ´Â »ç¿ëÀÚ IDÀÇ »ç¿ëÀÚ ID¿¡¼­ ½ÇÇàÇÕ´Ï´Ù. ÀÌ »ç¿ëÀÚ ID´Â UDF¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ ÀÚ¿øÀ» Á¦¾îÇÕ´Ï´Ù. db2udf ½ÇÇà°¡´É ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸´Â »ç¿ëÀÚ Ç÷§ÆûÀÇ ºü¸¥ ½ÃÀÛ Ã¥À» ÂüÁ¶ÇϽʽÿÀ.
  6. UDF ³»¿¡¼­ º¸È£µÈ ÀÚ¿ø Áï, ÇÑ ¹ø¿¡ ÇϳªÀÇ ÇÁ·Î¼¼½º ¾×¼¼½º¸¸À» Çã¿ëÇÏ´Â ÀÚ¿øÀ» »ç¿ëÇÒ ¶§, UDF °£ÀÇ ±³Âø »óŸ¦ ÇÇÇϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. µÑ ¶Ç´Â ±× ÀÌ»óÀÇ UDF°¡ ±³Âø»óÅ¿¡ ºüÁö¸é, DB2´Â ÀÌ Á¶°ÇÀ» ŽÁöÇÏÁö ¸øÇÏ°Ô µË´Ï´Ù.
  7. ¹®ÀÚ µ¥ÀÌÅÍ´Â µ¥ÀÌÅͺ£À̽ºÀÇ ÄÚµå ÆäÀÌÁö·Î ¿ÜºÎ ÇÔ¼ö·Î Àü´ÞµË´Ï´Ù. ¸¶Âù°¡Áö·Î ÀÌ ÇÔ¼öÀÇ Ãâ·ÂÀÎ ¹®ÀÚ¿­Àº µ¥ÀÌÅͺ£À̽ºÀÇ ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î µ¥ÀÌÅͺ£À̽º´Â °£ÁÖÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö°¡ µ¥ÀÌÅͺ£À̽º ÄÚµå ÆäÀÌÁö¿Í ´Ù¸¥ °æ¿ì, SQL¹®¿¡¼­ ´Ù¸¥ °ª¿¡ ´ëÇÏ¿© ±×·¯ÇϵíÀÌ ÄÚµå ÆäÀÌÁö º¯È¯ÀÌ ¹ß»ýÇÕ´Ï´Ù. »ç¿ëÀÚÀÇ CREATE FUNCTION¹®¿¡ ¹®ÀÚ ¸Å°³º¯¼ö³ª °á°ú ¼Ó¼ºÀ¸·Î FOR BIT DATA¸¦ ÄÚµùÇÔÀ¸·Î½á, ÀÌ º¯È¯À» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ¹®ÀÚ ¸Å°³º¯¼ö°¡ FOR BIT DATA ¼Ó¼ºÀ» »ç¿ëÇÏ¿© Á¤ÀǵÇÁö ¾Ê´Â °æ¿ì, »ç¿ëÀÚÀÇ UDF ÄÚµå´Â µ¥ÀÌÅͺ£À̽º ÄÚµå ÆäÀÌÁöÀÇ Àμö¸¦ ¼ö½ÅÇÕ´Ï´Ù.

    CREATE FUNCTION¿¡¼­ DBINFO ¿É¼ÇÀ» »ç¿ëÇϸé, µ¥ÀÌÅͺ£À̽º ÄÚµå ÆäÀÌÁö°¡ UDF·Î Àü´ÞµË´Ï´Ù. ÀÌ Á¤º¸¸¦ »ç¿ëÇÏ¿© ÄÚµå ÆäÀÌÁö¿¡ ¹Î°¨ÇÑ UDF´Â ¸¹Àº ¿©·¯ ÄÚµå ÆäÀÌÁö¿¡¼­ ¿î¿µµÇµµ·Ï ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù.

  8. C++¸¦ »ç¿ëÇÏ¿© UDF¸¦ ÀÛ¼ºÇÒ ¶§, ´ÙÀ½°ú °°ÀÌ ÇÔ¼ö À̸§ ¼±¾ðÀ» °í·ÁÇÒ ¼ö ÀÖ½À´Ï´Ù.
         extern "C" void SQL_API_FN udf( ...arguments... )
    

    extern "C"´Â C++ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¸í¸íµÈ ÇÔ¼ö À̸§ÀÇ À¯Çü Àå½Ä(¶Ç´Â 'Àý´Ü(mangling)')À» Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ ¼±¾ðÀÌ ¾øÀ¸¸é, CREATE FUNCTION¹®À» ¹ßÇàÇÒ¶§ ÇÔ¼ö À̸§¿¡ ´ëÇÑ ¸ðµç À¯Çü Àå½Ä(type decoration)À» Æ÷ÇÔ½ÃÄÑ¾ß ÇÕ´Ï´Ù.


[ ÆäÀÌÁöÀÇ ¸Ç À§ | ÀÌÀü ÆäÀÌÁö | ´ÙÀ½ ÆäÀÌÁö | ¸ñÂ÷ | »öÀÎ ]