[Áöµð³ÝÄÚ¸®¾Æ]MS ÇÁ·Î±×·¡¸Ó¶ó¸é À©µµ¿ì NT/SQL ¼¹ö 7 ȯ°æÀ» À©µµ¿ì 2000/SQL ¼¹ö 2000À¸·Î ¸¶À̱׷¹À̼ÇÇϴµ¥ ¸¹Àº ½Ã°£ÀÌ ÅõÀÚÇßÀ» °ÍÀÌ´Ù. Â÷¼¼´ë ¿î¿µÃ¼Á¦¿Í SQL ¼¹öÀÎ ·ÕÈ¥/À¯ÄÜÀ¸·ÎÀÇ ÀüȯÀº ¾î¶³±î? ÀÌ ¿ª½Ã ºñ½ÁÇÒ °ÍÀ¸·Î º¸ÀδÙ. À¯ÄÜÀº ¸®Æ÷ÆÃ ¼ºñ½º¿Í XML/XSL ó¸® ´É·ÂÀ» Çâ»ó½ÃÄ×À¸¸ç, ¹«¾ùº¸´Ù ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿Í ÅëÇÕµÈ Á¡ÀÌ °¡Àå Å« Ư¡ÀÌ´Ù. ÀÌ ¶§¹®¿¡ ¸¹Àº »ç¶÷µéÀº À¯ÄÜÀ» ¡®SQL ¼¹ö ´å³Ý¡¯À¸·Î º¸±âµµ ÇÑ´Ù.
À¯ÄÜ °³¹ß½Ã °¡Àå ½Å°æ ¾´ Á¡ÀÌ ´å³Ý Äڵ带 SQL¿¡ ³»ÀåÇÑ °ÍÀÌ´Ù. SQLÀº ÀÌ¹Ì ¸ðµç Á¾·ùÀÇ ÇÁ·Î½ÃÀý ÄÚµå(procedural code)¸¦ Áö¿øÇϰí Àִµ¥, ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿Í ÅëÇÕµÇ¸é¼ ÀÌ ±â´ÉÀÌ ´õ¿í °·ÂÇØ Á³´Ù. ÁÖ¿ä °³¼±Á¡Àº ´ÙÀ½°ú °°´Ù.
- TCP/IP¿Í UDP Æ÷Æ®¸¦ ÅëÇØ ¿°í ´Ý°í Åë½ÅÇÏ´Â ±â´É
- ¾ÏÈ£¿Í OS ÅëÇÕ Å¬·¡½º¿¡ Á¢±ÙÇÏ´Â ±â´É
- ´å³Ý ·¡ÆÛ(wrappers)¸¦ ÀÌ¿ëÇÑ COM °´Ã¼¿ÍÀÇ »óÈ£ÀÛ¿ë.
- ±×¹Û¿¡ ´å³ÝÀ¸·Î °¡´ÉÇÑ Ãß°¡ ±â´É
´å³Ý Äڵ带 ³»ÀåÇØ ÇÁ·Î¸£·¡¹Ö ´õ¿í °£Æí
½ºÅ©¸³Æ®³ª ÄÄÆÄÀÏ ¾ð¾î¸¦ ÀÌ¿ëÇØ, µ¿ÀûÀ¸·Î °³¹ßÇÑ SQL Äڵ带 È£ÃâÇϴµ¥ Àͼ÷ÇÑ ÇÁ·Î±×·¡¸Ó¶ó¸é, ½ºÅ©¸³Æ®³ª ÄÄÆÄÀÏµÈ Äڵ带 Æ÷ÇÔÇÏ´Â SQL ÄÚµå °³³ä¿¡ ´Ù¼Ò ³î¶ö °ÍÀÌ´Ù. °æÇèÀÌ ¸¹Áö ¾ÊÀº OOP ÇÁ·Î±×·¡¸ÓµéÀº ¹®Á¦ ÁÖÀ§¸¦ ¡®¸¶À½À¸·Î °¨½Î´Â °Í¡¯¿¡ ´ëÇØ ÀÚÁÖ À̾߱âÇϴµ¥, ÀÌ¿Í °°Àº ¡®Ä¸½¶È(Encapsulation) ¼ÓÀÇ Ä¸½¶È ¹æ½Ä¡¯Àº ÇÁ·Î±×·¡¹ÖÀ» ¸ðµâÈÇØ Àç»ç¿ëÀÌ °¡´ÉÇÏ´Ù´Â ÀÕÁ¡ÀÌ ÀÖ´Ù.
º¸´Ù ½¬¿î ÀÌÇØ¸¦ À§ÇØ, ½Å¿ëÄ«µå ¹øÈ£, ¸¸·áÀÏÀÚ, ¼¸í µîÀ» ¹Þ¾ÆµéÀ̰í À¯È¿¼ºÀ» °ËÅäÇÏ´Â ÄÄÆ÷³ÍÆ®·Î ±¸ÇöµÈ À¥»çÀÌÆ® ½Å¿ëÄ«µå ÁöºÒ ±â´ÉÀ» °¡Á¤ÇØ º¸ÀÚ. SQL ¼¹ö 2000 ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇØ °Å·¡¸¦ ±â·ÏÇÑ´Ù°í ÇÏ¸é ´ëºÎºÐÀÇ À¥ ÇÁ·Î±×·¡¸ÓµéÀº ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇϱâ Àü¿¡ ¹Ýµå½Ã È®ÀÎ ÇÁ·Î¼¼½º¸¦ ¸ÕÀú ½ÇÇàÇØ¾ß¸¸ ÇÑ´Ù.
±×·¯³ª ´å³Ý Äڵ带 ³»ÀåÇÑ À¯ÄÜ SQLÀº È®ÀÎ ÇÁ·Î¼¼½º ¾øÀÌ ¹Ù·Î ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ÀúÀå ÇÁ·Î½ÃÀúÀÇ ³»ºÎ SQLÀº ´å³Ý Äڵ带 ÀÌ¿ëÇØ È®ÀÎ ¿ä¼Ò¸¦ È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç ±× °á°ú¿¡ µû¶ó ÇÕ°Ý/ºÒÇÕ°Ý ¿©ºÎ¸¦ ¸®ÅÏÇÑ´Ù. ¼¸í ÄÄÆ÷³ÍÆ®¸¦ º¯°æÇÏ´Â °æ¿ì¿¡µµ, À̸¦ ÂüÁ¶ÇÏ´Â À¥ÆäÀÌÁö¸¦ ÀÏÀÏÀÌ ¼öÁ¤ÇÒ ÇÊ¿ä¾øÀÌ ÀúÀå ÇÁ·Î½ÃÀú¸¸ »õ·Î ÄÚµùÇÏ¸é µÈ´Ù.
SQL¿¡ ³»ÀåµÈ ´å³Ý Äڵ带 »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÑ ÀÌÀ¯¸¦ ¾Ë¾Æº¸±â À§ÇØ, ½ÇÁ¦ ¿¹Á¦ Äڵ带 »ìÆì º¸ÀÚ. ´ÙÀ½Àº À¯ÄÜÀÇ ÀúÀå ÇÁ·Î½ÃÀú¿¡ Æ÷ÇÔµÈ C# ÄÚµå´Ù.
CREATE PROCEDURE cmdMyProcedure (
@username NVARCHAR(4000)
)
AS EXTERNAL NAME
YukonCLR:[MyNETNamespace.MyNetCode] :: myfunction
À̰ÍÀº ¡®username¡¯ ÆÄ¶ó¹ÌÅ͸¦ ¹Þ¾ÆµéÀÌ´Â ÀúÀå ÇÁ·Î½ÃÀúÀε¥, ÀúÀå ÇÁ·Î½ÃÀú°¡ È£ÃâµÇ¸é ¡®my¡¯ Äڵ带 ½ÇÇà½ÃÄÑ °á°ú¸¦ ¸®ÅÏÇÏ´Â ¹æ½ÄÀÌ´Ù.
ÀÌ¿Í °°Àº ¼øÈ¯ÀûÀÎ ÂüÁ¶ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ °æ¿ì¿¡´Â ¸Å¿ì Á¶½ÉÇÒ Çʿ䰡 ÀÖ´Ù. ´å³Ý¿¡´Â Ä¡¸íÀûÀÎ Äڵ带 ÀÛ¼ºÇÏÁö ¸øÇϵµ·Ï ´Ù¾çÇÑ °Ë»ç¿Í ¹ë·±½º°¡ ¸¶·ÃµÅ ÀÖÁö¸¸, Ä¡¸íÀûÀÎ Äڵ带 ÀÛ¼ºÇÒ °¡´É¼ºÀº ¿©ÀüÈ÷ Á¸ÀçÇϱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¸é ÃʱâÈ Á÷ÈÄ ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ´Â ¾î¼Àºí¸® Äڵ带 ¸¸µé°í, ÀÌ ÀúÀå ÇÁ·Î½ÃÀú°¡ ¾î¼Àºí¸®ÀÇ ´Ù¸¥ ÀνºÅϽº¸¦ »ý¼ºÇØ À̸¦ ´Ù½Ã ÃʱâÈÇϸé, CPU°¡ °è¼Ó ·çÇÁ¸¦ µµ´Â ¼øÈ¯ÀÌ µÉ °¡´É¼ºÀÌ ÀÖ´Ù.
µû¶ó¼ À¯ÄÜ¿¡¼ »ç¿ëµÉ ¸ðµç Ŭ·¡½º´Â ·çÇÁ »óȲÀ» °æ°íÇÏ´Â Ç÷¡±×·Î °¨½Î¾ß ÇÑ´Ù. º£Å¸¹öÀü±îÁö ¹ßÇ¥µÈ ÇöÀçÀÇ À¯ÄÜ¿¡´Â ÀÌ·± ±â´ÉÀÌ Æ÷ÇԵŠÀÖÁö ¾ÊÁö¸¸, ÃÖÁ¾ ¹öÀü¿¡¼´Â ÀÌ¿Í À¯»çÇÑ ¾ÈÀü ±â´ÉÀÌ Æ÷Ç﵃ °¡´É¼ºÀÌ ÀÖ´Ù.
¿À¶óŬ/JVM VS. À¯ÄÜ/CLR
SQL ¼¹ö À¯ÄÜ¿¡´Â CLR(Common Language Runtime)À» ÅëÇØ ´å³Ý Äڵ带 ½ÇÇàÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ Ãß°¡µÆ´Ù. ÀÌó·³ SQL¿¡¼ ÄÄÆÄÀÏµÈ Äڵ带 È£ÃâÇÏ´Â ±â´ÉÀº ÀÚ¹Ù ÇÁ·Î±×·¡¸ÓµéÀÌ °³¹ßÇÏ´Â ÀÚ¹Ù°¡»ó¸Ó½Å(JVM)°ú µ¿ÀÏÇÑ °ÍÀ¸·Î, È¿À²¼ºÀº ³·Áö¸¸ ¿À¶óŬ/ÀÚ¹Ù °³¹ßÀÚµéÀÌ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÕÁ¡ÀÌ ÀÖ´Ù.
±×·¯³ª ¿À¶óŬ°ú ÀÚ¹Ù¸¦ ÅëÇÕÇÏ´Â °Íº¸´Ù´Â À¯ÄÜ¿¡¼ CLRÀ» ÅëÇÕÇÏ´Â °ÍÀÌ ´õ ¼ö¿ùÇѵ¥, SQL ¼¹ö´Â °³¹ß ´Ü°èºÎÅÍ ºñÁÖ¾ó ½ºÆ©µð¿À IDE¿Í ÅëÇÕÇØ ¼Ò½º ÄÚµå¿Í SQL¿ë ¹ü¿ë µðÀÚÀΠȯ°æÀ» Á¦°øÇϵµ·Ï ¼³°èµÆ±â ¶§¹®ÀÌ´Ù. ¼·Î ´Ù¸¥ ÀÌÇØ¸¦ °¡Áø º°µµÀÇ ±â¾÷ÀÎ ½ã°ú ¿À¶óŬÀÌ ´Ü±â°£¿¡ SQL°ú CLR ¼öÁØÀÇ ÅëÇÕ È¯°æÀ» Á¦°øÇϱâ´Â Èûµé¾î º¸ÀδÙ.
80³â´ë °·ÂÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í 90³â´ë IDE·Î ½Â½ÂÀå±¸ÇØ ¿Â MS´Â(¹Ý¸é ¿î¿µÃ¼Á¦ ºÎ¹®¿¡¼´Â µ·À» ¹úÁö ¸øÇß´Ù), 2000³â´ë ÀÌÈÄ SQLÀÌ Æ÷ÇÔµÈ ºñÁÖ¾ó ½ºÆ©µð¿À ´å³ÝÀ» ¾Õ¼¼¿ö ¸ðµç Á¾·ùÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Æ÷¿ëÇÏ´Â Àü·«À¸·Î ¸ÅÃâÀ» ¿Ã¸®·Á Çϰí ÀÖ´Ù.
ÀÌ¿Í °°Àº Àü·«Àº SQLÀ» ºñÁÖ¾ó ½ºÆ©µð¾î¿¡ Æ÷ÇÔÇϰí, CLRÀ» SQL ¼¹ö¿¡ Ãß°¡ÇÔÀ¸·Î½á ¿Ïº®ÇØÁö´Âµ¥, À̸¦ ÅëÇØ ´å³Ý ¾ÖÇø®ÄÉÀ̼ǵéÀº ¹é¿£µå(back-end) µ¥ÀÌŸº£À̽º ¼¹ö¿Í º¸´Ù È¿À²ÀûÀ¸·Î Åë½ÅÇÒ ¼ö ÀÖ°í, µ¥ÀÌŸº£À̽º ¼¹ö´Â ¿ø°Ý ºñÁî´Ï½º ·ÎÁ÷À» È¿À²ÀûÀ¸·Î °ü¸®ÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌŸº£À̽º¿Í CPU, ¸Þ¸ð¸®ÀÇ ³¶ºñµµ ¸·À» ¼ö ÀÖ´Ù. @