[Áöµð³ÝÄÚ¸®¾Æ]ÀϹÝÀûÀ¸·Î »ç¶÷µéÀÌ ¾Æ´Â °Í°ú´Â ´Þ¸® °ü°èÇü µ¥ÀÌÅͺ£À̽º Ç¥ÁØ ¾ð¾îÀÎ SQLÀº µ¥ÀÌÅÍ ºÐ¼®À» ¸ñÀûÀ¸·Î ¸¸µé¾îÁöÁö ¾Ê¾Ò´Ù. µû¶ó¼ ¾ÆÁÖ °£´ÜÇÑ µ¥ÀÌÅÍ ºÐ¼®À» À§ÇÑ ÁúÀÇ ÀÛ¼ºÀ» ¾î·Æ°Ô ¸¸µé°í ÁúÀÇ ¼öÇà ¼Óµµµµ ´À¸®´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌ·± SQLÀÇ ´ÜÁ¡À» ±Øº¹Çϱâ À§ÇÑ ³ë·ÂµéÀÌ ÃÖ±Ù¿¡ Ȱ¹ßÈ÷ ÀÌ·ïÁö°í ÀÖÀ¸¸ç, ´ëÇ¥ÀûÀÎ ¿¹·Î¼ ÃÖ±Ù¿¡ SQL3 Ç¥ÁØ¿¡ µµÀÔµÈ ºÐ¼® ÇÔ¼ö(Âü°íÀÚ·á : [Andrew Witkowski et al., Spreadsheets in RDBMS for OLAP, Proceedings of SIGMOD, 2003])°¡ ÀÖ´Ù.
ÀÌ·¯ÇÑ ¸Æ¶ô¿¡¼ ÀÌ ±Û¿¡¼´Â ÃÖ±Ù¿¡ ƯÁ¤ °ü°èÇü DBMS º¥´õ¿¡ ÀÇÇØ Á¦¾ÈµÈ SQLÀÇ È®Àå ±â´É¿¡ ´ëÇØ ¼³¸íÇϰíÀÚ ÇÑ´Ù. ÀÌ È®Àå SQLÀº ¿¢¼¿°ú °°Àº ½ºÇÁ·¹µå½ÃÆ® µµ±¸¿¡¼ µ¥ÀÌÅÍ ºÐ¼®À» À§ÇØ Á¦°øµÇ´Â Ư¡µéÀ» DBMS¿¡¼µµ °¡´ÉÇϵµ·Ï Çϴ ȹ±âÀûÀÎ ±â´ÉÀÌ´Ù. Áï, ¿¢¼¿°ú °°Àº ½ºÇÁ·¹µå½ÃÆ® µµ±¸¿¡¼ Á¦°øÇÏ´Â ¡®2Â÷¿ø ¹è¿ µ¥ÀÌÅÍ¿¡ ´ëÇÑ °è»ê ±â´ÉÀ» ÇϳªÀÇ SQL¹®À¸·Î Ç¥Çö °¡´ÉÇϵµ·Ï¡¯ SQLÀ» È®ÀåÇÏ´Â °ÍÀÌ´Ù.
¿¢¼¿°ú SQLÀÇ °øÅëÁ¡°ú Â÷ÀÌÁ¡
¿¢¼¿°ú SQLÀÇ °øÅëÁ¡Àº ¹«¾ùÀϱî? µÑ´Ù 2Â÷¿ø Ç¥¿¡ Æ÷ÇÔµÈ µ¥ÀÌÅÍ-¿¢¼¿ÀÇ °æ¿ì ½ºÇÁ·¹µå½ÃÆ®, SQLÀÇ °æ¿ì ¸±·¹À̼Ç(¶Ç´Â Å×À̺í)-¸¦ ´ë»óÀ¸·Î µ¥ÀÌÅ͸¦ ºÐ¼®ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±×·³ °¡Àå Å« Â÷ÀÌÁ¡Àº ¹«¾ùÀϱî? ¿¢¼¿Àº ´©±¸³ª Á¶±Ý¸¸ ¹è¿ì¸é Á÷°üÀûÀ¸·Î ´Ù¾çÇÏ°í º¹ÀâÇÑ ºÐ¼® ±â´ÉÀ» ¾ÆÁÖ ÈǸ¢ÇÑ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ÇÏ¿¡¼ ¼öÇàÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±×·¯³ª µ¥ÀÌÅÍ Å©±â°¡ ÀÏÁ¤ÇÑ ÀÌ»óÀ» ³Ñ¾î°¡°Ô µÇ¸é ó¸®ÇÒ ¼ö ¾ø´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Â ¹Ý¸é, SQLÀº ÇöÀç Å×¶ó(tera) ÀÌ»óÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù.
µ¶Àڵ鵵 ÁÖÁöÇÏ´Ù½ÃÇÇ ½ºÇÁ·¹µå½ÃÆ®´Â ¸¹Àº »ç¶÷µéÀÌ »ç¿ëÇÏ´Â °¡Àå ¼º°øÀûÀÎ µ¥ÀÌÅÍ ºÐ¼® µµ±¸ÀÌ´Ù. Çà(row)°ú ¿(column)·Î ±¸¼ºµÈ 2Â÷¿ø ¹è¿¿¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏ°í ´ÙÀ½°ú °°Àº ´Ù¾çÇÑ Á¶ÀÛÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
¡ß 2Â÷¿ø µ¥ÀÌÅ͸¦ ´ë»óÀ¸·Î ºÐ¼®¿¡ ÇÊ¿äÇÑ °ø½Ä(formula)À» Á¤ÀÇ
¡ß Àç±ÍÀû ¸ðµ¨(recursive model)À» Áö¿øÇÏ´Â ¼ö½Ä Áö¿ø
¡ß ¼±ÅÃµÈ ¼¿ ¶Ç´Â ¼¿ÀÇ ¹üÀ§¿¡ ´ëÇØ ºÐ¼® ÇÔ¼ö¿Í Áý´Ü ÇÔ¼ö(aggregate function) Á¦°ø
¡ß »ç¿ëÀÚ°¡ »ç¿ëÇÏ±â ÆíÇÑ ÈǸ¢ÇÑ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º
¹Ý¸é, ¿¢¼¿ ÀÌ»óÀ¸·Î ¼º°øÀûÀÎ °ü°èÇü DBMSÀÇ ´ëÇ¥ ¾ð¾î SQLÀº ºÐ¼®ÀûÀÎ ±â´É Ãø¸é¿¡¼ ÃÖ±ÙÀÇ Å¥ºê(cube) °³³ä°ú ºÐ¼® ÇÔ¼ö(analytic functions)ÀÇ µµÀÔ¿¡µµ ºÒ±¸ÇÏ°í ¿¢¼¿°ú °°Àº ½ºÇÁ·¹µå½ÃÆ® µµ±¸ÀÇ ¾Õ°ú °°Àº ±â´É¿¡ ºñ±³ÇÏ¸é ¾ÆÁ÷±îÁö ºÎÁ·ÇÑ ºÎºÐÀÌ ÀÖ´Ù. ºÎÁ·ÇÏ´Ù´Â Ãø¸éÀº 2Â÷¿ø ¹è¿À» ´ë»óÀ¸·Î ÇÑ º¹ÀâÇÑ °è»êÀ» Ç¥ÇöÇϱⰡ (ºÒ°¡´ÉÇÏÁö´Â ¾ÊÁö¸¸) Èûµé°í, À̸¦ ´ë·®ÀÇ µ¥ÀÌÅÍ¿¡ ´ë»óÀ¸·Î ¼öÇàÇÏ°Ô µÇ¸é ºñÈ¿À²ÀûÀ¸·Î 󸮵ȴٴ Á¡ÀÌ´Ù. ±×·¸Áö¸¸ ¿¢¼¿À» Æ÷ÇÔÇÑ ½ºÇÁ·¹µå½ÃÆ® µµ±¸µéµµ ³ª¸§´ë·ÎÀÇ ¹®Á¦Á¡À» ³»Æ÷Çϰí ÀÖ´Ù. ´ëÇ¥ÀûÀ¸·Î ´ÙÀ½°ú °°Àº ¼¼ °¡Áö ¹®Á¦°¡ ÀÖ´Ù.
¡ß ¼¿¿¡ ´ëÇÑ ¹°¸®Àû ÁÖ¼Ò ÁöÁ¤(physical cell addressing) : ¿°ú ÇàÀÇ À妽º °ª¿¡ ÀÌ¿ëÇÑ ¼¿ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. µ¥ÀÌÅÍÀÇ °ª¿¡ ±â¹ÝÇÑ ±âÈ£ ÁÖ¼Ò ÁöÁ¤(symbolic cell addressing)ÀÌ ºÒ°¡´ÉÇÏ´Ù.
¡ß È®À强(scalability) : µ¥ÀÌÅÍÀÇ ¾çÀÌ ¾ÆÁÖ Å©°Å³ª °ø½ÄÀÇ ¼ö°¡ ±²ÀåÈ÷ ¸¹À» ¶§ ºÐ¼®ÀÌ ¿øÈ°ÇÏÁö ¸øÇÏ´Ù.
¡ß ´ÙÁß ½ºÇÁ·¹µå½ÃÆ®¿¡ ´ëÇÑ ÅëÇÕ ºÐ¼®(collaborative analysis) : º°µµ·Î ºÐ¼®µÈ µÎ °³ ÀÌ»óÀÇ ½ºÇÁ·¹µå½ÃÆ®µéÀÇ ÅëÇÕ ºÐ¼®ÀÌ ¿ëÀÌÇÏÁö ¸øÇÏ´Ù.
µÎ ÈǸ¢ÇÑ ¼ÒÇÁÆ®¿þ¾î¸¦ °áÇÕÇÏ´Â ¹æ¾ÈÀº ¨ç ¿¢¼¿ÀÌ ´ë¿ë·® µ¥ÀÌÅͺ£À̽ºÀÇ ±â´ÉÀ» °®°Å³ª ¨è SQL ¾ð¾î¿¡¼ ¿¢¼¿°ú °°Àº ´Ù¾çÇÏ°í º¹ÀâÇÑ ºÐ¼® ±â´ÉÀ» »ç¿ëÀÚ°¡ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Ãß°¡ÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ±Û¿¡¼´Â ¿¢¼¿ÀÇ ¹®Á¦Á¡µéÀ» ±Øº¹ÇÏ¸é¼ µ¿½Ã¿¡ ¾Õ¼ ¼³¸íÇÑ ¿¢¼¿ÀÇ 2Â÷¿ø ¹è¿ ±â¹Ý ºÐ¼®/°è»ê ±â´ÉÀ» °ü°èÇü µ¥ÀÌÅͺ£À̽º Ç¥ÁØÀÎ SQL¿¡ ÀÚ¿¬½º·´°Ô Á¢¸ñÇϱâ À§ÇÑ ÇϳªÀÇ È®Àå ¹æ¾ÈÀ» ¾Ë¾Æº»´Ù(ÀÌ ±Û¿¡¼ ¼³¸íÇÏ´Â ³»¿ëÀº ÃÖ±Ù¿¡ ƯÁ¤ °ü°èÇü DBMS º¥´õ¿¡ ÀÇÇØ Á¦¾ÈµÈ °ÍÀ¸·Î Âü°íÀÚ·á [Andrew Witkowski et al., Spreadsheets in RDBMS for OLAP, Proceedings of SIGMOD, 2003]¸¦ Âü°íÇß´Ù). ¶ÇÇÑ SQLÀÌ ÀÌ·¯ÇÑ ±â´ÉÀ» Ãß°¡ÇÏ°Ô µÇ¸é µ¥ÀÌÅÍ ºÐ¼®ÀÇ ¾ÆÅ°ÅØÃ³°¡ ¾î¶»°Ô ¹Ù²î°í ¾î¶² ÀåÁ¡ÀÌ ÀÖ´ÂÁö¸¦ »ìÆìº¸°Ú´Ù.
SQLÀÌ ¿¢¼¿À» ¸¸³¯ ¶§
SQL¿¡¼ ½ºÇÁ·¹µå½ÃÆ® ±â´ÉÀ» Áö¿øÇÏ°Ô µÇ¸é(Áï, SQL¿¡ ¿¢¼¿ ±â´ÉÀ» Èí¼öÇßÀ» ¶§) ½ºÇÁ·¹µå½ÃÆ® ±â¹ÝÀÇ µ¥ÀÌÅÍ ºÐ¼® ¾ÆÅ°ÅØÃ³¿¡ ¾î¶² º¯È°¡ »ý±ä´Ù. °ü°èÇü µ¥ÀÌÅͺ£À̽º ³»¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅ͸¦ ºÐ¼®ÇÏ´Â ºñÁî´Ï½º µ¥ÀÌÅÍ ºÐ¼®°¡µéÀº ÇöÀç <±×¸² 1>ÀÇ ¾ÆÅ°ÅØÃ³´ë·Î µ¥ÀÌÅÍ ºÐ¼® °úÁ¤À» °ÅÄ£´Ù.
°ü°èÇü µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ Á¤ÀÇÇϰí ÀÌ µ¥ÀÌÅ͸¦ ÆÄÀÏ Àü¼ÛÀ̳ª ¿¢¼¿¿¡¼ Á¦°øÇÏ´Â ODBC ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇØ µ¥ÀÌÅ͸¦ ¿¢¼¿·Î ºÒ·¯µéÀδÙ. ÀÌ·¸°Ô ºÒ·¯¿Â µ¥ÀÌÅ͸¦ ÀÌ¿ëÇØ ¿¢¼¿ÀÇ ´Ù¾çÇÑ ºÐ¼® ±â´ÉÀ» ÀÌ¿ëÇØ ºÐ¼® ½ºÇÁ·¹µå½ÃÆ®¸¦ »ý¼ºÇϰí À̸¦ ÆÄÀÏ ÇüÅ·ΠÀúÀåÇØ µÐ´Ù.

<±×¸² 1> ¿¢¼¿°ú °ü°èÇü DBMS ¿¬µ¿ : ÇöÀç

<±×¸² 2> ¿¢¼¿°ú °ü°èÇü DBMS ¿¬µ¿ : ¹Ì·¡
±×·¯³ª SQL¿¡¼ ½ºÇÁ·¹µå½ÃÆ® ±â´ÉÀ» Áö¿øÇÏ°Ô µÇ¸é ±Ã±ØÀûÀ¸·Î <±×¸² 2>¿Í °°Àº ¹æ½ÄÀ¸·Î ¿¢¼¿°ú °ü°èÇü µ¥ÀÌÅͺ£À̽º°¡ ¿¬µ¿ÇÏ°Ô µÉ °ÍÀÌ´Ù. °ü°èÇü µ¥ÀÌÅͺ£À̽º ¸±·¹À̼ǿ¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ±â¹ÝÀ¸·Î, »ç¿ëÀÚ°¡ ¿©·¯ °¡Áö ºÐ¼® ±â´ÉÀ» Æ÷ÇÔÇÏ´Â ½ºÇÁ·¹µå½ÃÆ®¸¦ Á¤ÀÇÇϸé(ÀÌ °æ¿ì ÇϳªÀÇ ½ºÇÁ·¹µå½ÃÆ®´Â ÇϳªÀÇ SQL¹®À¸·Î Ç¥ÇöµÊ) ±× ½ºÇÁ·¹µå½ÃÆ®´Â ÀÏ¹Ý µ¥ÀÌÅÍ¿Í ¸¶Âù°¡Áö·Î °ü°èÇü µ¥ÀÌÅͺ£À̽º ³»¿¡ Á¸ÀçÇÏ°Ô µÈ´Ù. ÇØ´ç ½ºÇÁ·¹µå½ÃÆ®ÀÇ µ¥ÀÌÅʹ Ư¼öÇÑ ¸±·¹ÀÌ¼Ç ÇàÅ·Πµ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÇ°í ½ºÇÁ·¹µå½ÃÆ®ÀÇ Á¤ÀÇ´Â °ü°èÇü µ¥ÀÌÅͺ£À̽ºÀÇ ¸ÞŸµ¥ÀÌÅÍ µñ¼Å³Ê¸®¿¡ ÀúÀåµÈ´Ù. ¿¢¼¿ µîÀÇ µµ±¸´Â µ¥ÀÌÅÍ ÀúÀå ¹× ºÐ¼®À» À§ÇÑ °è»ê ±â´ÉÀ» DBMS¿¡°Ô ³Ñ°ÜÁÖ°í ÀÚ½ÅÀº °ÅÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¸ ´ã´çÇÏ´Â ¿ªÇÒÀ» ÇÏ°Ô µÉ °ÍÀÌ´Ù.