¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â “Àß Á¤ÀÇµÈ ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÅ°ÅØó¿Í À̸¦ ±¸ÇöÇϱâ À§ÇÑ ÄÄÆ÷³ÍÆ®¿Í µµ±¸µéÀÇ ÁýÇÕ”À¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
°á±¹ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ ¶Ç´Â ½ÇÇàÇϱâ À§ÇÑ ‘Ʋ’À» Á¦°øÇÏ´Â °ÍÀε¥, Á» ´õ ±¸Ã¼ÀûÀÎ ÀÌÁ¡¿¡ ´ëÇؼ »ìÆ캸¸é ´ÙÀ½°ú °°´Ù.
‘°³¹ß Ç¥ÁØ ¾ÆÅ°ÅØó Á¦°ø’À» ÅëÇØ °³¹ßÀÚ´Â ¼ø¼ö ¾÷¹«·ÎÁ÷ °³¹ß¿¡¸¸ ÁýÁßÇÒ ¼ö ÀÖ°í, °³¹ßÀÚ ¼öÁØ¿¡ µû¸¥ Ç°Áú Â÷À̸¦ ÃÖ¼ÒÈÇÒ ¼ö ÀÖ´Ù.
‘È¿À²ÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç ¿î¿µ°ü¸® ¹æ¾È Á¦°ø’À» ÅëÇؼ´Â ½Ã½ºÅÛ ¿î¿µ ÆíÀǼºÀ» Á¦°øÇÏ¸ç ‘¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà ȯ°æ Á¦°ø’À» ÅëÇؼ´Â °í¼º´É ¹× ¾ÈÁ¤¼ºÀ» Á¦°øÇÑ´Ù.
ÀÌ°°Àº ÀÌÁ¡ Á¦°øÀÌ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼±ÅÃÇÏ´Â ÀÌÀ¯´Ù.
ÇÁ·¹ÀÓ¿öÅ© ½ÃÀå¿¡´Â ¹«¼öÈ÷ ¸¹Àº ¼Ö·ç¼ÇµéÀÌ ÀÖ´Ù. °¢°¢ÀÇ ¼Ö·ç¼Ç ¸¶´Ù Àå´ÜÁ¡Àº ÀÖÁö¸¸, °øÅëÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÇѰ踦 µå·¯³»°í ÀÖ´Ù.
ù° °í¼º´É ¾ÆÅ°ÅØóÀÇ ÇÑ°èÀÌ´Ù.
ÀÚÁÖ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®¿¡ ¿Ã·ÁµÎ°í ÀÚÁÖ »ç¿ëÇÒ ¼ö Àִ ȯ°æÀÌ ÇÊ¿äÇѵ¥, À̸¦ ÇÁ·¹ÀÓ¿öÅ©¿¡¼´Â ij½Ã ¾ÆÅ°ÅØó¶ó°í À̾߱âÇÑ´Ù.
±âÁ¸ ÀÚ¹Ù ÇÁ·¹ÀÓ¿öÅ©¿¡¼´Â ij½Ã µ¥ÀÌÅÍ È°¿ë·üÀÌ ¶³¾îÁö´Â ÇÑ°èÁ¡À» °®°í ÀÖ´Ù.
µÑ° JVM ¸Þ¸ð¸® »ç¿ë ºñÈ¿À²¼º ÇÑ°èÀÌ´Ù.
ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀº JVM(Java Virtual Machine) »ó¿¡¼ µ¿ÀÛÀ» Çϴµ¥, ±âÁ¸ ÀÚ¹Ù ÇÁ·¹ÀÓ¿öÅ©´Â ºñÈ¿À²ÀûÀÎ °´Ã¼ »ý¼º ±¸Á¶ÀÌ°í, ÀÌ·Î ÀÎÇØ GC(Garbage Collector)°¡ ºó¹øÈ÷ ¹ß»ýÇÒ ¼ö ÀÖ´Â ÇѰ踦 °®°í ÀÖ´Ù.
GC ¼öÇàºóµµ¿Í ¼öÇà½Ã°£Àº ÀÚ¹Ù ±â¹Ý ½Ã½ºÅÛ¿¡ ¾ÆÁÖ ¸¹Àº ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡, ½Ã½ºÅÛ ¾ÈÁ¤¼ºÀ» È®º¸Çϱâ À§Çؼ´Â ÇÁ·¹ÀÓ¿öÅ©¿¡¼ °´Ã¼¸¦ °ü¸®ÇÒ ¼ö Àִ ȯ°æ Á¦°øÀÌ ÇÊ¿äÇÏ´Ù.
¼Â° ¿ÀǼҽº ±â¹Ý ÇÁ·¹ÀÓ¿öÅ© ÇÑ°èÀÌ´Ù.
¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©´Â ¼Ò½º¸¦ ¿ÀÇÂÇϱ⠶§¹®¿¡ º¸¾È¿¡ Ãë¾àÇÒ ¼ö ¹Û¿¡ ¾ø´Â ±¸Á¶À̸ç, ÇÁ·¹ÀÓ¿öÅ©¿¡¼ ¹®Á¦°¡ ¹ß»ýÇÒ °æ¿ì Ã¥ÀÓ ¼ÒÀç°¡ ºÒºÐ¸íÇÑ ÇÑ°èÁ¡À» °®°í ÀÖ´Ù.
ÇÏÁö¸¸, ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÁÁÀº »ç»óµéµµ Àֱ⠶§¹®¿¡ ¿ÀǼҽº ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÁÁÀº »ç»óÀ» ¼ö¿ëÇÏ°í, Ã¥ÀÓ ¼ÒÀç°¡ ºÐ¸íÇÑ ÇÁ·¹ÀÓ¿öÅ©°¡ ÇÊ¿äÇÏ´Ù.
¸¶Áö¸·À¸·Î, ºñÈ¿À²ÀûÀ¸·Î ±¸ÇöµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÇÑ°èÀÌ´Ù.
ºñÈ¿À²ÀûÀ¸·Î ±¸ÇöµÈ ¾ÖÇø®ÄÉÀ̼ÇÀº ¿î¿µ¼¹ö¿¡¼ Àå¾Ö¸¦ ÀÏÀ¸Å³ °¡´É¼ºÀÌ ¾ÆÁÖ ³ô´Ù. ÇØ´ç ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿î¿µ ¼¹ö¿¡ ¹èÆ÷µÇ±â Àü¿¡ ¸ð´ÏÅ͸µ ÇÒ ¼ö Àִ ȯ°æÀÌ ÇÊ¿äÇÑ ÀÌÀ¯ÀÌ´Ù.
Ƽ¸Æ½º¼ÒÇÁÆ®ÀÇ ‘ÇÁ·Î¿ÀºêÁ§Æ®(ProObject)’´Â ÀÌ°°Àº ±âÁ¸ ÀÚ¹Ù ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÇѰ踦 ¶Ù¾î ³Ñ¾î, ÇÁ·¹ÀÓ¿öÅ© Æз¯´ÙÀÓÀ» ÀüȯÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ© ¼Ö·ç¼ÇÀÌ´Ù.
Ƽ¸Æ½º¼ÒÇÁÆ®´Â À̹ø Á¦Ç° ¸®ºä¿¡¼ ‘ÇÁ·Î¿ÀºêÁ§Æ®(ProObject)’ÀÇ ÁÖ¿ä ±â¼úÀû Ư¡¿¡ ´ëÇØ 2ȸ¿¡ °ÉÃÄ ¾Ë¾Æº¸´Â ½Ã°£À» ¸¶·ÃÇß´Ù.
¡ÜÇÁ·Î¿ÀºêÁ§Æ® ÁÖ¿ä Ư¡
|
¡ß °í¼º´É ¾ÆÅ°ÅØó
¡ß ¾ÈÁ¤¼º ±Ø´ëÈ ±¸Á¶
¡ß À¯¿¬¼º °È
¡ß ÅëÁ¦ ¹× °Å¹ö³Í½º |
¡ß °í¼º´É ¾ÆÅ°ÅØó
1. ·ÎÄà ij½Ã Ç÷§Æû ‘Å×À̺í ij½Ã’(Local Cache Platform ‘Table Cache’)
ÇÁ·Î¿ÀºêÁ§Æ®´Â ‘Å×À̺í ij½Ã(Table Cache)’ ±â¼úÀ» ÅëÇØ ‘·ÎÄà ij½Ã Ç÷§Æû(Local Cache Platform)’ ¿ªÇÒÀ» ÇÑ´Ù.
µ¥ÀÌÅͺ£À̽ºÀÇ Å×À̺íÀ» ÇÁ·Î¿ÀºêÁ§Æ®ÀÇ ¸Þ¸ð¸®¿¡ ‘ij½Ì(Caching) ÇØ DB ¾×¼¼½º¸¦ ȹ±âÀûÀ¸·Î ÁÙÀÏ ¼ö ÀÖ´Ù.
±×¿¡ µû¸¥ È¿°ú·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» °í¼ÓÀ¸·Î ó¸® ÇÒ ¼ö ÀÖÀ¸¸ç, DB ¼¹öÀÇ ºÎÇϵµ ÁÙÀÏ ¼ö ÀÖ´Ù.
2. ¾ÖÇø®ÄÉÀÌ¼Ç ½º¸¶Æ® ó¸® ‘DO ¿ÉƼ¸¶ÀÌÀú(Optimizer)’
º¹ÀâÇÑ ¾÷¹« ¼ºñ½º¸¦ °³¹ßÇÏ´Ù º¸¸é ºñÈ¿À²ÀûÀ¸·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÏ´Â °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´Ù.
¿¹¸¦ µé¸é, ºñÁî´Ï½º ·ÎÁ÷ »ó ¹Ýº¹¹®À» »ç¿ëÇÏ°í ºó¹øÈ÷ DB ¼¹ö¿¡ SQLÀ» ¿äûÇÏ´Â °æ¿ì ½Ã½ºÅÛ Åë½Å IO°¡ ¾ÖÇø®ÄÉÀÌ¼Ç Ã³¸® ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡°Ô µÈ´Ù.
ÀÌ·± ºñÈ¿À²ÀûÀ¸·Î ±¸ÇöµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã³¸® ¼Óµµ¸¦ Çâ»ó ½Ãų ¼ö ÀÖ´Â ±â´ÉÀÌ ‘DO ¿ÉƼ¸¶ÀÌÀú(Optimizer)’ÀÌ´Ù.
»ó´ëÀûÀ¸·Î ¿À·¡ °É¸®´Â CUD 󸮴 ¾÷¹« ¼ºñ½º Á¾·á Á÷Àü Çѹø¿¡ ¼öÇàÇÏ°Ô ÇÏ´Â ‘SQL È£Ãâ ½ÃÁ¡ ÃÖÀûÈ’ ±â¼ú°ú ¹Ýº¹¹® ³»¿¡¼ µ¿ÀÏÇÑ SQLÀ» ¹ß»ý ½ÃÅ°´Â °æ¿ì ‘¹Ýº¹ SQL ó¸® ÃÖÀûÈ’ ÇØ ÇѹøÀÇ DB IO¸¦ ÅëÇØ ¿©·¯ SQLÀ» ó¸®ÇÏ°Ô ÇÑ´Ù.
3. Æ®·£Àè¼Ç ÃÖÀûÈ ‘´ÙÀ̳ª¹Í µ¥ÀÌÅͼҽº(Dynamic DataSource)’
µ¥ÀÌÅͼҽº(DataSource)´Â ¹°¸®ÀûÀÎ DB ¼¹öÀÇ ¸ÞŸ(meta) Á¤º¸(¿¹: ¼¹ö IP, Æ÷Æ® µî)¸¦ °®°í ÀÖ´Â ¹Ìµé¿þ¾îÀÇ ¸®¼Ò½º¸¦ ÀǹÌÇÑ´Ù.
Á¾·ù·Î´Â Å©°Ô XA µ¥ÀÌÅͼҽº(DataSource)¿Í NON-XA µ¥ÀÌÅͼҽº(DataSource)°¡ ÀÖ´Ù.
‘XA µ¥ÀÌÅͼҽº’´Â ºÐ»ê Æ®·£Àè¼ÇÀ» Áö¿øÇÏ¸é¼ ¼Óµµ°¡ ´À¸° Ư¡ÀÌ ÀÖÀ¸¸ç, ‘NON-XA µ¥ÀÌÅͼҽº’´Â ·ÎÄà Ʈ·£Àè¼ÇÀ» Áö¿øÇÏ¸ç ¼Óµµ°¡ ºü¸¥ Ư¡ÀÌ ÀÖ´Ù.
‘ÇÁ·Î¿ÀºêÁ§Æ®’ÀÇ ‘´ÙÀ̳ª¹Í µ¥ÀÌÅͼҽº’´Â Æ®·£Àè¼Ç »óȲ¿¡ µû¸¥ ÃÖÀûÀÇ µ¥ÀÌÅͼҽº¸¦ µ¿ÀûÀ¸·Î ÆÇ´ÜÇØ »ç¿ëÇÏ´Â Æ®·£Àè¼Ç ÃÖÀûÈ ±â¼úÀÌ´Ù.
4. ´ë¿ë·® º´·Ä Áö¿ø ETL
ÀϹÝÀûÀ¸·Î ¿Â¶óÀÎ ÇÁ·Î±×·¥Àº Ŭ¶óÀ̾ðÆ®ÀÇ ¿ä±¸¿¡ ºü¸¥ ÀÀ´äÀ» ÇÑ´Ù. ÇÏÁö¸¸ ¹èÄ¡ ÇÁ·Î±×·¥Àº ÀÏ°ý µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥À¸·Î½á »ó´ëÀûÀ¸·Î ¿À·¡ °É¸®´Â Ư¡ÀÌ ÀÖ´Ù.
ÀÌ·± ¹èÄ¡ ÇÁ·Î±×·¥Àº Á¤ÇüÈµÈ ÆÐÅÏÀÌ Á¸ÀçÇϴµ¥, µ¥ÀÌÅ͸¦ ÃßÃâ(Extract)ÇÏ°í, ÃßÃâÇÑ µ¥ÀÌÅ͸¦ °¡°øÇÏ°í(Transform), °¡°øÇÑ µ¥ÀÌÅ͸¦ ÀúÀå(Load)ÇÏ´Â °úÁ¤ÀÌ ÀÖ´Ù.
ÀÌ·± ÆÐÅÏÀ» ÇÁ·Î¿ÀºêÁ§Æ®´Â ETL ±¸Á¶·Î Á¦°øÇϸç, ETLÀ» º´·Ä·Î ó¸®ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.
¡ß¾ÈÁ¤¼º ±Ø´ëÈ ±¸Á¶
1. °´Ã¼ ¶óÀÌÇÁ »çÀÌŬ °ü¸® ‘¿Àºêº¤Æ® Ç®¸µ(Object Pooling)’
¸Þ¸ð¸®´Â ½Ã½ºÅÛ ¾ÈÁ¤¼º°ú ¾ÆÁÖ ¹ÐÁ¢ÇÑ °ü°è°¡ ÀÖ´Ù.
ÇÁ·Î¿ÀºêÁ§Æ®´Â °´Ã¼ ¶óÀÌÇÁ »çÀÌŬÀ» °ü¸®ÇØ ¾ÈÁ¤ÀûÀÎ JVM ¸Þ¸ð¸® »ç¿ë ȯ°æÀ» Á¦°øÇÑ´Ù.
‘Ç®¸µ(Pooling)’À̶ó´Â °ÍÀº ¹Ì¸® ¸¸µé¾î ³õ°í »ç¿ëÇÏ´Â °³³äÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. Áï ¿ÀºêÁ§Æ®(Object)¸¦ ¹Ì¸® ¸¸µé¾î³õ°í »ç¿ëÇÏ´Â ±â´ÉÀÌ ‘¿ÀºêÁ§Æ® Ç®¸µ’ÀÌ´Ù.
ÇÁ·Î¿ÀºêÁ§Æ®ÀÇ ‘¿ÀºêÁ§Æ® Ç®¸µ’Àº ¾÷¹« ¼ºñ½º(Service Object) ´ÜÀ§·Î µ¿ÀÛÇÑ´Ù. Áï ¾÷¹« ¼ºñ½º º° °´Ã¼¸¦ ¹Ì¸® ¸¸µé¾î ³õ°í ¾÷¹« ¼ºñ½º¸¦ ¼öÇàÇϱ⠶§¹®¿¡ ·±Å¸ÀÓ °´Ã¼ »ý¼º ¿À¹öÇìµå°¡ ¾ø¾î ¾÷¹« ¼ºñ½º ó¸® ¼Óµµ¿¡ À¯¸®ÇÏ´Ù.
°´Ã¼¸¦ ÇÁ·¹ÀÓ¿öÅ©¿¡¼ °ü¸®Çϱ⠶§¹®¿¡ ºÒÇÊ¿äÇÑ °´Ã¼ »ý¼ºÀ» Â÷´ÜÇÒ ¼ö ÀÖÀ¸¸ç, ±×¿¡ µû¸¥ È¿°ú·Î JVM GC ÃÖÀûÈ È¯°æÀ» Á¦°øÇÑ´Ù.
2. ¸Þ¸ð¸® Æ®·¡Å·(Memory Tracking)
»ç¿ëÀÚÀÇ ½Ç¼ö ¶Ç´Â ÇÁ·Î±×·¥ÀÇ ¿À·ù·Î ÀÎÇØ Æ¯Á¤ ¼ºñ½º °´Ã¼°¡ °úµµÇÏ°Ô ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°Ô µÇ¸é ½Ã½ºÅÛ ÀüüÀûÀ¸·Î Àå¾Ö°¡ È®»êµÉ ¼ö ÀÖ´Ù.
ÇÁ·Î¿ÀºêÁ§Æ®´Â ¼ºñ½º º° »ç¿ë ¸Þ¸ð¸® ÃÖ´ë(Max) Å©±â¸¦ ¼³Á¤ÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. À̸¦ ÅëÇØ ¸Þ¸ð¸® ¾ÈÁ¤¼ºÀ» È®º¸ÇÒ ¼ö ÀÖ´Ù.
3. ¹«Áß´Ü ½Ã½ºÅÛ ±¸Ãà ±â¹Ý Á¦°ø ‘ÇÖ µðÇ÷ÎÀÌ(Hot Deploy)’
½Ã½ºÅÛÀ» ¿î¿µÇÏ´Ù º¸¸é ¾ÖÇø®ÄÉÀÌ¼Ç ¿À·ù·Î ºÎµæÀÌÇÏ°Ô ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼öÁ¤ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.
ÀÌ·± °æ¿ì ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼öÁ¤ÇØ ¿î¿µ ¼¹ö¿¡ ¹Ý¿µÇØ¾ß Çϴµ¥, ÀϹÝÀûÀ¸·Î ¼¹ö Àç±âµ¿ÀÌ ÇÊ¿äÇÏ´Ù.
ÇÁ·Î¿ÀºêÁ§Æ® ‘ÇÖ µðÇ÷ÎÀÌ(Hot Deploy)’ ±â´ÉÀº ¼¹ö Àç±âµ¿ ¾øÀÌ º¯°æµÈ ÇÁ·Î±×·¥À» ¼¹ö¿¡ ¹Ý¿µÇÏ´Â ±â¼úÀÌ´Ù.
¿î¿µ ¼¹öÀÇ ‘ÇÖ µðÇ÷ÎÀÌ’ Àû¿ëÀº ¾ÈÁ¤¼ºÀÌ ¹Ýµå½Ã µÞ¹Þħ µÅ¾ß ÇÑ´Ù.
ÇÁ·Î¿ÀºêÁ§Æ®ÀÇ ‘ÇÖ µðÇ÷ÎÀÌ(Hot Deploy)’´Â ¾÷¹« ¼ºñ½º ´ÜÀ§ Ŭ·¡½º ·Î´õ(Class Loader) »ç¿ëÀ¸·Î, µ¿Àû Ŭ·¡½º Àû¿ë ±Ô¸ð°¡ ÀÛ´Ù.
ÀÌ°°Àº ¾ÆÅ°ÅØó Àû¿ëÀ¸·Î ¾ÈÁ¤ÀûÀÎ ¹«Áß´Ü ½Ã½ºÅÛ ±¸Ãà ±â¹ÝÀ» Á¦°øÇÑ´Ù.
ÀÌ»óÀ¸·Î ¿¬Àç ùȸ¿¡¼´Â ÇÁ·Î¿ÀºêÁ§Æ®ÀÇ ÁÖ¿ä Ư¡ Áß °í¼º´É ¾ÆÅ°ÅØó¿Í ¾ÈÁ¤¼º ±Ø´ëÈ ±¸Á¶¿¡ ´ëÇؼ ¾Ë¾Æº¸¾Ò´Ù.
´ÙÀ½ ¿¬Àç¿¡¼´Â À¯¿¬¼º °È¿Í ÅëÁ¦ ¹× °Å¹ö³Í½º¿¡ ´ëÇÑ Æ¯Â¡¿¡ ´ëÇØ ÀÚ¼¼È÷ ¾Ë¾Æº¼ ¿¹Á¤ÀÌ´Ù.
<Ƽ¸Æ½º¼ÒÇÁÆ® CS3»ç¾÷ºÎ ±èÇö¿ì ¼ö¼®º¸>hyunwoo_kim@tmax.co.kr < ÀúÀÛ±ÇÀÚ © BI KOREA ¹«´ÜÀüÀç ¹× Àç¹èÆ÷±ÝÁö > |