°ü¸® ¾È³»¼­


»ç¿ëÀÚ Á¤ÀÇ È®Àå »öÀÎ À¯Çü ÀÛ¼º

»ç¿ëÀÚ Á¤ÀÇ »öÀÎ À¯ÇüÀ» Áö¿øÇϱâ À§ÇØ, DB2 Universal Database´Â »öÀÎÀÌ ÀÛ¾÷ÇÏ´Â ¹æ½ÄÀ» ±¸¼ºÇÏ´Â ±âº» ±¸¼º¿ä¼Ò¿¡ ´ëÇØ »ç¿ëÀÚ ÀÚ½ÅÀÇ ³í¸®¸¦ ÀÛ¼ºÇÏ¿© Àû¿ëÇÏ°Ô ÇÕ´Ï´Ù. ´ëüµÉ ¼ö ÀÖ´Â ±¸¼º¿ä¼Ò´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ÁÖ:»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF) Á¤ÀÇ´Â °áÁ¤ÀûÀ̾î¾ß Çϸç ÃÖÀûÈ­ ¾Ë°í¸®ÁòÀ¸·Î °Ë»öµÉ ¼ö ÀÖ´Â ¿ÜºÎ Á¶Ä¡¸¦ Çã¿ëÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù.

¼±ÅÃÀû µ¥ÀÌÅÍ ÇÊÅÍ ±â´Éµµ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. ÃÖÀûÈ­ ¾Ë°í¸®ÁòÀº »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF)°¡ Æò°¡µÇ±â Àü¿¡ ÆäÄ¡µÈ Æ©Çÿ¡ ´ëÇØ ÇÊÅ͸¦ »ç¿ëÇÕ´Ï´Ù.

±¸Á¶È­µÈ À¯ÇüÀ̳ª ±¸º° Ä÷³ À¯Çü¸¸ÀÌ »öÀÎ È®ÀåÀ» »ç¿ëÇÏ¿© ÀÌ ¿ÀºêÁ§Æ®¿¡¼­ »ç¿ëÀÚ Á¤ÀÇ È®Àå »öÀÎ À¯ÇüÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ È®Àå »öÀÎ À¯ÇüÀº ´ÙÀ½ÀÌ ¾Æ´Ï¾î¾ß ÇÕ´Ï´Ù.

»öÀÎ À¯Áöº¸¼öÀÇ ¼¼ºÎ»çÇ×

CREATE INDEX EXTENSION¹®À» ÅëÇØ »öÀÎÀÇ Á¶ÀÛÀ» ±¸¼ºÇÏ´Â µÎ°³ÀÇ ±¸¼º¿ä¼Ò¸¦ Á¤ÀÇÇÕ´Ï´Ù.

»öÀÎ À¯Áöº¸¼ö´Â »öÀÎ Ä÷³ ³»¿ë(¶Ç´Â ¼Ò½º Ű)À» ¸ñÇ¥ »öÀΠŰ·Î º¯È¯ÇÏ´Â ÇÁ·Î¼¼½ºÀÔ´Ï´Ù. º¯È¯ ÇÁ·Î¼¼½º´Â ÀÌÀü¿¡ µ¥ÀÌÅͺ£À̽º¿¡¼­ Á¤ÀÇµÈ Å×À̺í ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Á¤Àǵ˴ϴÙ.

FROM SOURCE KEY ÀýÀº ÀÌ »öÀÎ È®ÀåÀ¸·Î Áö¿øµÇ´Â ¼Ò½º Ű Ä÷³¿¡ ´ëÇÑ ±¸Á¶È­µÈ µ¥ÀÌÅÍ À¯ÇüÀ̳ª ±¸º° À¯ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. ´ÜÀÏ ¸Å°³º¯¼ö À̸§ ¹× µ¥ÀÌÅÍ À¯ÇüÀÌ Á¦°øµÇ¸ç ¼Ò½º Ű Ä÷³°ú ¿¬°üµË´Ï´Ù.

GENERATE KEY USING ÀýÀº »öÀΠ۸¦ »ý¼ºÇϱâ À§ÇØ »ç¿ëµÇ´Â »ç¿ëÀÚ Á¤ÀÇ Å×À̺í ÇÔ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÇÔ¼öÀÇ Ãâ·ÂÀº TARGET KEY Àý ½ºÆå(¾Æ·¡ Ç¥½ÃµÊ)¿¡ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼öÀÇ Ãâ·ÂÀº FILTER USING Àý¿¡¼­ ÁöÁ¤ÇÑ »öÀÎ ÇÊÅ͸µ ÇÔ¼öÀÇ ÀÔ·ÂÀ¸·Î¼­ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

»öÀÎ °Ë»öÀÇ ¼¼ºÎ»çÇ×

»öÀÎ °Ë»öÀº °Ë»ö Àμö¸¦ °Ë»ö ¹üÀ§¿¡ ¸ÊÇÎÇÕ´Ï´Ù.

WITH TARGET KEY ÀýÀº GENERATE KEY USING Àý¿¡ ÁöÁ¤µÈ Ű »ý¼º ÇÔ¼öÀÇ Ãâ·ÂÀÎ ¸ñÇ¥ Ű ¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ´ÜÀÏ ¸Å°³º¯¼ö À̸§ ¹× µ¥ÀÌÅÍ À¯ÇüÀÌ Á¦°øµÇ¸ç ¸ñÇ¥ Ű Ä÷³°ú ¿¬°üµË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö´Â GENERATE KEY USING ÀýÀÇ »ç¿ëÀÚ Á¤ÀÇ Å×À̺í ÇÔ¼öÀÇ RETURNS Å×À̺í Ä÷³¿¡ ´ëÀÀÇÕ´Ï´Ù.

SEARCH METHODS ÀýÀº »öÀοëÀ¸·Î Á¤ÀÇµÈ Çϳª ÀÌ»óÀÇ °Ë»ö ¸Þ¼Òµå¸¦ ¼Ò°³ÇÕ´Ï´Ù. °¢ °Ë»ö ¸Þ¼Òµå´Â ¸Þ¼Òµå À̸§, °Ë»ö Àμö, ÇÔ¼ö »ý¼º ¹üÀ§ ¹× ¼±ÅÃÀû »öÀÎ ÇÊÅÍ ÇÔ¼ö·Î ±¸¼ºµË´Ï´Ù. °¢ °Ë»ö ¸Þ¼Òµå´Â ÁÖ¿ä »ç¿ëÀÚ Á¤ÀÇ »öÀÎÀÇ »öÀÎ °Ë»ö ¹üÀ§°¡ »ç¿ëÀÚ Á¤ÀÇ Å×À̺í ÇÔ¼ö¿¡ ÀÇÇØ »ý¼ºµÇ´Â ¹æ½ÄÀ» Á¤ÀÇÇÕ´Ï´Ù. ´õ¿ì±â, °¢ °Ë»ö ¸Þ¼Òµå´Â ƯÁ¤ °Ë»ö ¹üÀ§¿¡ ÀÖ´Â »öÀÎ Ç׸ñÀÌ »ç¿ëÀÚ Á¤ÀÇ ½ºÄ®¶ó ÇÔ¼ö¿¡ ÀÇÇØ ÀÚ¼¼È÷ ±ÔÁ¤µÉ ¼ö ÀÖ´Â ¹æ½ÄÀ» Á¤ÀÇÇÕ´Ï´Ù.

»öÀÎ °Ë»ö ¼¼ºÎ»çÇ×

»öÀÎ °Ë»öÀº °Ë»ö ¸Þ¼ÒµåÀÇ Æò°¡¿¡¼­ ¹ß»ýÇÕ´Ï´Ù.

CREATE FUNCTION(¿ÜºÎ ½ºÄ®¶ó)¹®Àº »öÀÎ È®Àå¿ëÀ¸·Î Á¤ÀÇµÈ °Ë»ö ¸Þ¼Òµå¿¡¼­ »ç¿ëµÇ´Â »ç¿ëÀÚ Á¤ÀÇ ¼ú¾î¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

PREDICATES ÀýÀº »öÀÎ È®ÀåÀ» °Ë»öÇÒ ¼ö ÀÖ´Â(±×¸®°í ¼ú¾îÀÇ °Ë»ö Á¶°Ç¿¡ ´ëÇØ ¼±ÅÃÀû SELECTIVITY Àý »ç¿ë) ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¼ú¾î¸¦ ½Äº°ÇÕ´Ï´Ù. PREDICATES ÀýÀÌ ÁöÁ¤µÇ¸é, ÇÔ¼ö´Â NO EXTERNAL ACTIONÀ» »ç¿ëÇÑ DETERMINISTICÀ¸·Î¼­ Á¤ÀǵǾî¾ß ÇÕ´Ï´Ù.

»öÀÎ È®ÀåÀ» Á¤ÀÇÇÏ´Â ½Ã³ª¸®¿À

»öÀÎ È®ÀåÀ» Á¤ÀÇÇÏ´Â ½Ã³ª¸®¿À´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  1. ±¸Á¶È­µÈ À¯Çü(ÇüÅÂÀÇ °æ¿ì)À» Á¤ÀÇÇϽʽÿÀ. CREATE TYPE¹®À» »ç¿ëÇÏ¿© ÇüŰ¡ supertype ¹× nullshape, Æ÷ÀÎÆ®, ¶óÀÎÀ̸ç, ´Ù°¢ÇüÀÌ ºÎ¼ÓÀ¯ÇüÀÎ À¯Çü °èÃþ±¸Á¶¸¦ Á¤ÀÇÇϽʽÿÀ. À̰ÍÀº À¯Çü ¸ðµ¨ °ø°£ ¿£ÅÍÆ¼¸¦ ±¸Á¶È­Çß½À´Ï´Ù. ¿¹¸¦ µé¾î, »óÁ¡ÀÇ À§Ä¡´Â Æ÷ÀÎÆ®À̸ç, °­ÀÇ °æ·Î´Â ¶óÀÎÀ̸ç, ºñÁö´Ï½º Á¸ÀÇ °æ°è´Â ´Ù°¢ÇüÀÔ´Ï´Ù. ÃÖ¼Ò °æ°èÀÇ »ç°¢Çü(mbr)Àº ¼Ó¼ºÀÔ´Ï´Ù. gtype ¼Ó¼ºÀº ¿¬°üµÈ ¿£ÅÍÆ¼°¡ Æ÷ÀÎÆ®, ¶óÀÎ ¶Ç´Â ´Ù°¢ÇüÀÎÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Áö¸®ÀûÀÎ °æ°è´Â numpart, numpoint ¹× geometry ¼Ó¼ºÀ¸·Î ¸ðµ¨È­µË´Ï´Ù. ´Ù¸¥ ¸ðµç ¼Ó¼ºÀº ÀÌ ½Ã³ª¸®¿À¿Í °ü·ÃÀÌ ¾øÀ¸¹Ç·Î ¹«½ÃµË´Ï´Ù.
  2. »öÀÎ È®ÀåÀ» ÀÛ¼ºÇϽʽÿÀ.
  3. »öÀÎÀÇ »öÀÎ À¯Áöº¸¼ö ±¸¼º¿ä¼Ò¿¡ ´ëÀÀÇϴ Ű º¯È¯À» ÀÛ¼ºÇϽʽÿÀ.

       CREATE INDEX EXTENSION iename (parm_name datatype, ..).
          FROM SOURCE KEY (parm_name datatype)
          GENERATE KEY USING table_function_invocation
          ...
    

    FROM SOURCE KEY ÀýÀº Ű º¯È¯ÀÇ ¸Å°³º¯¼ö ¹× µ¥ÀÌÅÍ À¯ÇüÀ» ½Äº°ÇÕ´Ï´Ù. GENERATE KEY USING ÀýÀº ÇÔ¼ö¿¡¼­ »ý¼ºµÈ °ªÀ¸·Î ¼Ò½º ۸¦ ¸ÊÇÎÇÏ´Â µ¥ »ç¿ëµÇ´Â ÇÔ¼ö¸¦ ½Äº°ÇÕ´Ï´Ù.

  4. »öÀÎÀÇ »öÀÎ °Ë»ö ±¸¼º¿ä¼Ò¿¡ ´ëÀÀÇÏ´Â ¹üÀ§ »ý¼º ¹× »öÀÎ ÇÊÅÍ ÇÔ¼ö¸¦ Á¤ÀÇÇϽʽÿÀ.

       CREATE INDEX EXTENSION iename (parm_name datatype, ..).
          ...
          WITH TARGET KEY
             WHEN method_name (parm_name datatype, ..).
             RANGE THROUGH range_producing_function_invocation
             FILTER USING index_filtering_function_invocation
    

    WITH TARGET KEY ÀýÀº °Ë»ö ¸Þ¼Òµå Á¤ÀǸ¦ ½Äº°ÇÕ´Ï´Ù. WHEN ÀýÀº ¸Þ¼Òµå À̸§À» ½Äº°ÇÕ´Ï´Ù. RANGE THROUGH ÀýÀº »ç¿ëµÇ´Â »öÀÎÀÇ ¹üÀ§¸¦ Á¦ÇÑÇÏ´Â µ¥ »ç¿ëµÇ´Â ÇÔ¼ö¸¦ ½Äº°ÇÕ´Ï´Ù. FILTER USING ÀýÀº °á°ú »öÀÎ °ª¿¡¼­ ºÒÇÊ¿äÇÑ Ç׸ñÀ» Á¦°ÅÇÏ´Â µ¥ »ç¿ëµÇ´Â ÇÔ¼ö¸¦ ½Äº°ÇÕ´Ï´Ù.
    ÁÖ:FILTER USING ÀýÀº »öÀÎ ÇÊÅ͸µ ÇÔ¼ö ´ë½Å CASE Ç¥Çö½ÄÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  5. »öÀÎ È®ÀåÀ» °Ë»öÇÏ·Á¸é ¼ú¾î¸¦ Á¤ÀÇÇϽʽÿÀ.

       CREATE FUNCTION within (x shape, y shape)
          RETURNS INTEGER
          ...
          PREDICATES
             WHEN = 1
                FILTER USING mbrWithin (x..mbr..xmin, ..).
                SEARCH BY INDEX EXTENSION grid_extension
                WHEN KEY (parm_name) USE method_name(parm_name)
    

    PREDICATES ÀýÀº °¢ WHEN Àý·Î ½ÃÀ۵Ǵ Çϳª ÀÌ»óÀÇ ¼ú¾î¸¦ ¼Ò°³ÇÕ´Ï´Ù. WHEN ÀýÀº »ó¼ö ¶Ç´Â EXPRESSION AS Àý Áß Çϳª°¡ ´ÙÀ½¿¡ ¿À´Â ºñ±³ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¼ú¾î¿¡ ´ëÇÑ ½ºÆåÀ» ½ÃÀÛÇÕ´Ï´Ù. FILTER USING ÀýÀº °á°ú Å×À̺íÀÇ Ãß°¡ ÇÊÅ͸µÀ» ¼öÇàÇϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÊÅÍ ÇÔ¼ö¸¦ ½Äº°ÇÕ´Ï´Ù. À̰ÍÀº ±ÔÁ¤ÇÏ´Â ÇàÀ» ÆÇº°Çϱâ À§ÇØ »ç¿ëÀÚ Á¤ÀÇ ¼ú¾î°¡ ½ÇÇàµÇ¾î¾ß ÇÏ´Â ÇàÀÇ ¼ö¸¦ °¨ÃàÇÏ´Â Á¤ÀÇµÈ ÇÔ¼ö(¼ú¾î¿¡¼­ »ç¿ë)ÀÇ ºñ¿ëÀÌ Àú·ÅÇÑ ¹öÀüÀÔ´Ï´Ù. SEARCH BY INDEX EXTENSION ÀýÀº »öÀÎ °Ë»öÀÌ ¹ß»ýÇÏ´Â °÷À» ÁöÁ¤ÇÕ´Ï´Ù. »öÀÎ °Ë»öÀº »öÀÎÀ» °Ë»öÇϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Â »öÀÎ È®ÀåÀÇ °Ë»ö ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ±ÔÄ¢ ¼¼Æ®¸¦ Á¤ÀÇÇÕ´Ï´Ù. WHEN KEY ÀýÀº °Ë»ö ±ÔÄ¢À» ÁöÁ¤ÇÕ´Ï´Ù. °Ë»ö ±ÔÄ¢Àº °Ë»ö ¸Þ¼Òµå¸¦ ÅëÇØ »öÀÎ °Ë»öÀ» ¼öÇàÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Â ¹æ¹ýÀº ¹°·Ð °Ë»ö ¸ñÇ¥ ¹× °Ë»ö Àμö¸¦ ¼³¸íÇÕ´Ï´Ù.

  6. ÇÊÅÍ ÇÔ¼ö¸¦ Á¤ÀÇÇϽʽÿÀ.

       CREATE FUNCTION mbrWithin (..).
    
    ¿©±â¿¡ Á¤ÀÇµÈ ÇÔ¼ö´Â »öÀÎ È®ÀåÀÇ ¼ú¾î¿¡¼­ »ç¿ëÇϵµ·Ï ÀÛ¼ºµË´Ï´Ù.

Á¶È¸ ÃÖÀûÈ­ ¾Ë°í¸®ÁòÀÌ ÀÛ¼ºµÈ »öÀÎÀ» Á¤»óÀûÀ¸·Î °Ë»öÇÏ¿© Á¶È¸ ¼º´ÉÀ» °³¼±½Ã۱â À§ÇØ, SELECTIVITY ¿É¼ÇÀÌ ÇÔ¼ö È£Ãâ¿¡¼­ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ¼ú¾î°¡ ¸®ÅÏÇÒ ¼ö ÀÖ´Â ÇàÀÇ ¹éºÐÀ²¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î°¡ ÀÖ´Â °æ¿ì¿¡, ÇÔ¼ö È£Ãâ¿¡¼­ SELECTIVITY ¿É¼ÇÀ» »ç¿ëÇÏ¿© DB2 ÃÖÀûÈ­ ¾Ë°í¸®ÁòÀÌ ´õ È¿°úÀûÀÎ ¾×¼¼½º °æ·Î¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï µµ¿ï ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ ¿¹¿¡¼­, within »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö´Â Á᫐ ¹× ¹Ý°æ(°¢°¢ ù¹øÂ°¿Í µÎ¹øÂ° ¸Å°³º¯¼ö¿¡ ±Ù°ÅÇÏ¿©)À» °è»êÇϰí ÀûÀýÇÑ ¼±ÅÃÀ¸·Î ¸í·É¹® ¹®ÀÚ¿­À» ºôµåÇÕ´Ï´Ù.

   SELECT * FROM customer
      WHERE within(loc, circle(100, 100, 10) = 1 SELECTIVITY .05

ÀÌ ¿¹¿¡¼­, Ç¥½ÃµÈ ¼ú¾î(SELECTIVITY .05)´Â customer Å×ÀÌºí¿¡¼­ 95ÆÛ¼¾Æ® ÇàÀ» ÇÊ´õ¸µÇÕ´Ï´Ù.


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