5.1 Embedded SQL
|
| - SQL ±¸¹®À» »ç¿ëÇØ¼ DB ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¶§, ¾îÇø®ÄÉÀÌ¼Ç ³»¿¡ SQL
±¸¹®ÀÌ Á¤ÀÇ µÇ´Â ¹æ½ÄÀÇ SQL API¸¦ Embedded SQLÀ̶ó Çϸç, Á¤ÀÇ Çü½Ä¿¡ µû¶ó Static Embedded SQL°ú
Dynamic Embedded SQL·Î ±¸ºÐÀÌ µÈ´Ù. |
| (1) Static Embedded SQL |
Á¤ÀÇ: Program³»¿¡ Embed µÈSQL ±¸¹® ¹× SQL ±¸¹®³»ÀÇ DB Object (Ä÷³ À̸§ µî)°¡ ¾îÇø®ÄÉÀÌ
¼Ç ½ÇÇàÀüÀÎ °³¹ß½Ã¿¡ ¹Ì¸® Á¤ÀÇµÈ ÇüÅÂÀÇ SQL ±¸¹® Çü½Ä
SQL ±¸¹®¿¡ ÀÇÇØ¼ ¼öÇàµÇ´Â ÀÛ¾÷ (Á¶È¸ ¹× ¼öÁ¤)½Ã ÇÊ¿äÇÑ data °ª (host variable)
¸¸ÀÌ ¾îÇø® ÄÉÀÌ¼Ç °³¹ß½Ã°¡ ¾Æ´Ñ ½ÇÇà½Ã¿¡ ÁöÁ¤µÇ¾î ±× °ª¿¡ µû¶ó SQL ±¸¹®ÀÌ
¼öÇàµÈ´Ù.
Ư¡
1. ¾îÇø®ÄÉÀ̼ÇÀÇ precompile, bind °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.
bind °úÁ¤Áß¿¡ DB object¿¡ ´ëÇÑ type, syntax, previlege checkingÀÌ ÀÌ·ç¾îÁö¹Ç·Î, SQL
±¸¹®¿¡ Á¤ÀÇµÈ DB Object´Â ¾îÇø®ÄÉÀÌ¼Ç bind½Ã¿¡ ¹Ýµå½Ã DB³»¿¡ Á¸ÀçÇÏ¿©¾ß ÇÑ´Ù.
2. Package¸¦ ¹Ì¸® »ý¼ºÇϸç, ÀÌ´Â DB2¿¡ ÀÇÇØ¼ ÀúÀåµÇ°í °ü¸®µÈ´Ù.
¾îÇø®ÄÉÀÌ¼Ç bindÈÄ DB³»¿¡ Package°¡ »ý¼ºµÇ¸ç, ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã, ¾Õ¼ bind °úÁ¤¿¡
¼ »ý¼ºµÈ PackageÀÇ Á¢±Ù °æ·Î (access plan ¶Ç´Â access path)À» ÀÌ¿ëÇÏ¿© ÇØ´ç SQLÀÇ
ÃÖÀûÈµÈ ¼öÇàÀÌ ÀÌ·ç¾îÁø´Ù.
Dynamic Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÌ ¸Å¹ø ½ÇÇà½Ã¸¶´Ù Package¸¦ ÀÛ¼ºÇؼ SQL±¸¹®À» ó
¸®ÇÏ´Â °Í¿¡ ºñÇØ ¹Ì¸® bind °úÁ¤¿¡¼ ÀÛ¼ºµÈ Package¸¦ ¹Ù·Î »ç¿ëÇÔÀ¸·Î½á, Package ÀÛ¼º
¿¡ ÇÊ¿äÇÑ overhead¸¦ ´ú¼ö ÀÖ´Ù.
3. Bind °úÁ¤Àº ÃÖÃÊ Çѹø¸¸ ÇÊ¿äÇϳª, »óȲ¿¡ µû¶ó Á¤±âÀûÀ¸·Î rebind¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Ù.
4. ¹Ýº¹ÀûÀ̰í Á¤ÇüÈµÈ ¾÷¹« (¿¹¾à, ÀÜ¾× Á¶È¸µî)¿Í °°Àº »çÀü¿¡ Á¤ÀÇµÈ (pre-defined) Æ®·£
Àè¼Ç ÇüÅÂÀÇ ¾îÇø®ÄÉÀÌ¼Ç ±¸Çö¿¡ ÀûÇÕÇÏ´Ù.
ÀåÁ¡
1. »çÀü¿¡ Package¸¦ ÀÛ¼ºÇؼ »ç¿ëÇϹǷÎ, ½ÇÇà ¼Óµµ°¡ ºü¸£´Ù.
2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã°¡ ¾Æ´Ñ, °³¹ß½Ã¿¡ DB object¿¡ ´ëÇÑ »çÀü °Ë»ç°¡ °¡´ÉÇÏ´Ù.
´ÜÁ¡
1. °³¹ß½Ã¿¡ SQL ±¸¹®ÀÌ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù.
2. Precompile, bind °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.
|
| (2) Dynamic Embedded SQL |
Á¤ÀÇ: Program³»¿¡ Embed µÈ SQL ±¸¹®ÀÌ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß½Ã°¡ ¾Æ´Ñ, ½ÇÇà½Ã¿¡ Á¤ÀǵǾî
(¿Ï¼ºµÇ¾î) 󸮵Ǵ SQL ±¸¹® Çü½Ä
Ư¡
1. Bind °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù.
Static Embedded SQLÀÇ °æ¿ìó·³ ¹Ì¸® bind °úÁ¤À» °ÅÃÄ ¹Ì¸® Package¸¦ »ý¼ºÇÏ´Â °ÍÀÌ
¾Æ´Ï¶ó, ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ SQL ±¸¹®ÀÌ ¿Ï¼ºµÇ¾î DB³»¿¡ Package¸¦ ¸¸µé¾î, ÀÌ
Package³»ÀÇ access planÀ» ÀÌ¿ëÇÑ´Ù.
2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ½ÃÁ¡ÀÇ (current) DB2ÀÇ Åë°è Á¤º¸¸¦ ±âÃÊ·ÎÇÑ Package°¡ ÀÛ¼ºµÇ¹Ç·Î,
¸Å¹ø ½ÇÇà½Ã¸¶´Ù ÃÖÀûÈµÈ access planÀÌ Á¦°øµÈ´Ù.
Static SQLÀÇ °æ¿ì, bind °úÁ¤¿¡¼ ¹Ì¸® »ý¼ºµÈ Package´Â bind time½ÃÀÇ DB2 Åë°èÁ¤º¸¸¦
±Ù°Å·Î ÀÛ¼ºµÇ¹Ç·Î ½ÇÁ¦ ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ½ÃÁ¡ÀÇ Åë°èÁ¤º¸¿Í Â÷À̰¡ ³¯ ¼ö ÀÖ´Ù.
µû¶ó¼, ÀÌ·¯ÇÑ »óȲÀ» ¹æÁöÇϱâ À§ÇØ ÁÖ±âÀûÀ¸·Î DB2 Åë°èÁ¤º¸ °»½ÅÀ» À§ÇÑ RUNSTAT ÀÛ¾÷
¹× ¾îÇø®ÄÉÀÌ¼Ç Rebind¸¦ ¼öÇàÇÑ´Ù. (5.3 Application Rebind ÂüÁ¶)
3. ½ÇÇà½Ã »ý¼ºµÈ Package´Â DB2¿¡ ÀÇÇØ¼ °ü¸®µÇÁö ¾Ê´Â´Ù. (dummy Package)
4. Embedded SQLÀ̹ǷΠprecompile °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.
ÀåÁ¡
1. ¾îÇø®ÄÉÀÌ¼Ç ³» °¢ SQL ±¸¹®¿¡ ´ëÇØ °¡Àå ÃÖ±Ù ½ÃÁ¡ÀÇ Åë°èÁ¤º¸¸¦ ±Ù°Å·ÎÇÑ access plan
À» °¡Áú ¼ö ÀÖ´Ù.
2. SQL ±¸¹®Àº °³¹ß½Ã°¡ ¾Æ´Ñ, ½ÇÇà½Ã¿¡ È®Á¤µÇ¹Ç·Î, º¸´Ù ´Ù¾çÇϰí À¯¿¬ÇÑ ¾îÇø®ÄÉÀÌ¼Ç °³
¹ßÀÌ °¡´ÉÇÏ´Ù.
´ÜÁ¡
1. ½ÇÇà½Ã¸¶´Ù Package¸¦ ÀÛ¼ºÇØ¾ß ÇÏ´Â overhead·Î Static¿¡ ºñÇØ ó¸® ¼Óµµ°¡ ´À¸®´Ù.
2. ½ÇÇàÀü¿¡ SQL ±¸¹®ÀÇ type, syntax, previlege checking ÀÌ ºÒ°¡´ÉÇÏ´Ù.
Âü°í) DB2ÀÇ Package´Â ÇØ´ç SQLÀ» DB2ÀÇ ÇØ´ç DB³»¿¡¼ ó¸®Çϱâ À§ÇÑ ÃÖÀûÀÇ ¹æ¹ýÀÎ access
planÀ» °¡Áø´Ù. ÀÌ access planÀº DB2ÀÇ System catalog Á¤º¸¸¦ ±Ù°Å·ÎÇÑ DB2 Åë°èÁ¤º¸
¸¦ ±Ù°Å·Î DB2 Optimzier¿¡ ÀÇÇØ¼ »ý¼ºµÈ´Ù. Static ¹× Dynamic SQLÀÇ °¡Àå Å« Â÷ÀÌÁ¡
Àº ÀÌ Package »ý¼º ½ÃÁ¡ ¹× °ü¸® ¿©ºÎÀÇ Â÷À̰¡ µÈ´Ù.
|
| (3) Embedded SQL ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º Process |
|
| ±×¸². Embedded SQL ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º Process |
¼³¸í
1. Embedded SQL ±¸¹®ÀÌ Æ÷ÇÔµÈ ÇÁ·Î±×·¥ÀÇ Source FileÀ» ÀÛ¼ºÇÑ´Ù.
2. DB¿¡ connect ÇÏ¿©, °¢ Source FileÀ» precompileÇÑ´Ù.
precompiler´Â embedded SQL ±¸¹®À» ¿©¶ó ´Ù¾çÇÑ API request·Î ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» Çϸç,
precompile °úÁ¤À» ÅëÇØ bind fileÀ» »ý¼ºÇϰųª, Á÷Á¢ DB¿¡ Package¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
3. º¯°æµÈ Source FileÀ», ÀÛ¼ºÇÑ language compiler¸¦ ÀÌ¿ëÇÏ¿© compileÇÑ´Ù.
4. Object FileÀ» DB2 ¹× language Library¿¡ linkÇÏ¿© ½ÇÇà ÇÁ·Î±×·¥À» »ý¼ºÇÑ´Ù.
5. DB¿¡ connectÇÑ ÈÄ, 2ÀÇ °úÁ¤¿¡¼ »ý¼ºµÈ bindfileÀ» DB¿¡ bind ½ÃŲ´Ù.
ÀÌ´Â DB¿¡ Package¸¦ »ý¼ºÇϱâ À§ÇؼÀ̸ç, 2 °úÁ¤ÀÇ precompile ¿É¼ÇÀ» ÀÌ¿ëÇØ Á÷Á¢
Package¸¦ »ý¼ºÇÏ¿´À¸¸é ¼öÇàÇÒ Çʿ䰡 ¾ø´Ù. ±×·¯³ª ´Ù¸¥ DB¿¡ °°Àº ³»¿ëÀÇ Package¸¦
»ý¼ºÇϰíÀÚ ÇÒ ¶§, °°Àº bindfileÀ» ÀÌ¿ëÇÑ´Ù.
6. »ý¼ºµÈ ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇÑ´Ù.
ÀÌ ¾îÇø®ÄÉÀ̼ÇÀº ¾Õ¼ »ý¼ºµÈ DBÀÇ Package¸¦ »ç¿ëÇÏ¿© SQL ±¸¹®À» ó¸®ÇÑ´Ù.
|
(4) DB2 Package |
Á¤ÀÇ: DB2ÀÇ Package´Â ÃÖÀûÈµÈ SQL ±¸¹®À» ´ã°í ÀÖ´Â DB objectÀÌ´Ù. ÇϳªÀÇ ÇÁ·Î±×·¥
source´Â ÇϳªÀÇ Package¿¡ ´ëÀÀµÇ°í, Program Source³»ÀÇ SQL ±¸¹®Àº Package³»ÀÇ
Section¿¡ ´ëÀÀµÈ´Ù.
Ư¡
1. ±¸Á¶: Static Embedded SQL ProgramÀº default·Î precompile °úÁ¤À» ÅëÇØ¼ ¿¬°áµÈ DB³»
¿¡ Package¸¦ »ý¼ºÇÑ´Ù. SectionÀº compileµÈ ÇüÅÂÀÇ SQL ±¸¹®À̸ç, Package ³»¿¡
´Â °¢ Embedded SQL ±¸¹®¿¡ ´ëÀÀµÇ´Â ¿©·¯ SectionÀ» °¡Áø´Ù. °¢ Section ³»¿¡´Â
ÇϳªÀÇ SQL ±¸¹®¿¡ ´ëÀÀµÇ¾î, SQL ±¸¹®°ú ÀÌ SQL ±¸¹®¿¡ ´ëÇÑ ÃÖÀûÈµÈ access
planÀÌ section ³»¿¡ ÀúÀåµÈ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ Package´Â Á÷Á¢ DB¿¡ ÀúÀåµÇ°Å³ª,
¶Ç´Â Package »ý¼º ¸ðµâÀÌ bindfile³»¿¡ ÀúÀåµÇ¾î, º°µµÀÇ bind °úÁ¤À» °ÅÃļ DB
¿¡ Package¸¦ »ý¼ºÇÑ´Ù.
|
|
| ±×¸² . PackageÀÇ ±¸Á¶ ¹× »ý¼º °úÁ¤ |
2. Dynamic Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÇ Package
Dynamic Embedded SQL ±¸¹®ÀÇ °æ¿ì, ¸¶Âù°¡Áö·Î precompile - bind °úÁ¤À» °ÅÃļ
Package¸¦ »ý¼ºÇϳª, Section³»¿¡ access planÀÌ ¾ø´Â°ÍÀÌ Static°úÀÇ Â÷ÀÌÁ¡ÀÌ´Ù.
3. Package ½ÇÇà Æ¯±Ç
»ý¼ºµÈ Package³»ÀÇ SQL ±¸¹®À» ½ÇÇàÇϱâ À§Çؼ´Â »ç¿ëÀÚ°¡ Package¿¡ ´ëÇØ Execute
Ư±ÇÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ´Â SQL ±¸¹®³»ÀÇ DB object¿¡ ´ëÇÑ Á÷Á¢ÀûÀÎ ±ÇÇÑ ¾øÀ̵µ Á÷Á¢
SQL ±¸¹®À» ¼öÇàÇÏ´Â °Í°ú °°Àº µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áø´Ù.
|
Host Language
(Programming Language) |
Precompiler |
File È®ÀåÀÚ
(input - Source) |
File È®ÀåÀÚ
(input - Source) |
| C |
prep OR precompile |
.sqc |
.c |
C++
(AIX - case sensitive) |
prep OR precompile |
.sqC |
.c |
C++
(Windows-case insensitive) |
prep OR precompile |
.sqx |
.cxx |
| Java |
sqlj* |
.sqlj |
.java AND .ser |
|
| Ç¥. Precompiler¿Í Precompile FileÀÇ È®ÀåÀÚ |
Âü°í) 1. sqlj´Â translator·Î bindfile »ý¼ºÀ» ÇÏÁö ¾ÊÀ¸¸ç, bind fileÀº .ser fileÀ» ÀÌ¿ëÇÑ
db2profc
(DB2 Profile Customizer)ÀÇ precompile optionÀ» ÅëÇØ »ý¼ºµÈ´Ù.
2. °¢ Precompiler´Â DB2 SDK (Software Development Kit)¿¡ Æ÷ÇԵǾî ÀÖ´Ù. |
(4) Application Bind |
Á¤ÀÇ : BindfileÀº Static Embedded SQL ±¸¹®¿¡ ´ëÇÑ Package »ý¼º Á¤º¸¸¦ ´ãÀº fileÀ̸ç,
bindfileÀ» ÀÌ¿ëÇÏ¿© DB¿¡ Package¸¦ »ý¼ºÇÏ´Â °úÁ¤
Ư¡
1. DB2 Package »ý¼ºÀº precompile °úÁ¤¿¡¼ Á÷Á¢ DB¿¡ »ý¼ºµÇ°Å³ª (bindfile option),
bindfileÀ» ¸¸µé¾î ³ªÁß¿¡ bind °úÁ¤À» °ÅÃļ DB¿¡ »ý¼ºÇÒ ¼ö ÀÖ´Ù. À̸¦ "deferred
binding"À̶ó ÇÑ´Ù.
2. Static Embedded SQL ¾îÇø®ÄÉÀ̼ǿ¡¸¸ Àû¿ëµÇ´Â °úÁ¤ÀÌ´Ù.
¾îÇø®ÄÉÀ̼ÇÀÌ Á¢¼ÓµÇ´Â DB¿¡ Çѹø¸¸ bindÇÏ¸é µÇ¸ç, ÃßÈÄÀÇ bind ÀÛ¾÷Àº "Application
Rebind" °úÁ¤À» ÅëÇØ ¸¶Âù°¡Áö·Î bind ÇÑ´Ù.
3. Package ¹× Bindfile°ú SQL ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà FileÀº °°Àº ³»¿ëÀÇ Consistency Token
(Timestamp Á¤º¸)¸¦ °¡Áø´Ù.
Bindfile¿¡ ÀÇÇØ¼ Package »ý¼º½Ã, »ý¼º½ÃÁ¡(timestamp)¿¡ ´ëÇÑ Á¤º¸(consistency token)
°¡ Package³»¿¡ ÀúÀåµÈ´Ù. ÀÌ¿Í ¶È°°Àº ³»¿ëÀÇ consistenty tokenÀÌ DBÀÇ system catalog ¹×
¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ¸ðµâ¿¡ ÀúÀåµÇ¾î, SQL ¾îÇø®ÄÉÀ̼ÇÀÌ SQL ±¸¹®À» ¼öÇàÇÒ ¶§, ±×¿¡ ¸Â´Â
Package³»ÀÇ access planÀ» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
4. Bind½Ã ÇÊ¿äÇÑ ±ÇÇÑ ¹× Ư±Ç
Bind ÀÛ¾÷À» ¼öÇàÇÏ´Â »ç¿ëÀÚ´Â ÃÖ¼ÒÇÑ "BINDADD" ±ÇÇÑÀÌ ÀÖ¾î¾ß Çϸç, IMPLICIT_SCHEMA,
CREATEIN" Ư±ÇÀÌ ÀÖ¾î¾ß ÇÑ´Ù. µû¶ó¼ ÀÌ·¯ÇÑ ±ÇÇÑÀ» °¡Áø GroupÀÇ »ç¿ëÀÚ·Î ¾îÇø®ÄÉÀ̼Ç
°³¹ßÀÚ ±ÇÇÑÀ» groupingÇÑ´Ù. ¶ÇÇÑ static SQLÀÌ referenceÇÏ´Â ¸ðµç DB object¿¡ ´ëÇÑ ÀûÀý
ÇÑ Æ¯±ÇÀÌ ÀÖ´Â »ç¿ëÀÚ¿©¾ß ÇϹǷÎ, ÀÌ·¯ÇÑ DB object¿¡ ´ëÇÑ Æ¯±ÇÀº ¸í½ÃÀûÀ¸·Î »ç¿ëÀÚ¿¡°Ô
grant µÇ°Å³ª PUBLICÀ¸·Î ¼±¾ðµÇ¾î¾ß ÇÑ´Ù.
(group¿¡¸¸ grant µÇ¾úÀ» °æ¿ì bind½Ã failÀÌ ³´Ù.)
5. Blocking Factor
Á¤ÀÇ: Record BlockingÀº ´ë¿ë·®ÀÇ µ¥ÀÌŸ¸¦ ó¸®ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ³×Æ®¿÷À» ÅëÇÑ µ¥ÀÌŸ Á¢
±Ù ¼Óµµ¸¦ Çâ»ó½ÃÄÑÁÖ±â À§ÇÑ µ¥ÀÌŸÀÇ ³×Æ®¿÷ À̵¿¿¡¼ÀÇ DB2 µ¥ÀÌŸó¸® ¹æ½ÄÀ̸ç, ÀÌ·¯
ÇÑ Record BlockingÀº ¾îÇø®ÄÉÀÌ¼Ç bind½Ã Blocking Factor (bind option)¿¡ ÀÇÇØ¼ ÁöÁ¤
µÈ´Ù.
Ư¡: Record BlockingÀº Cursor type ¹× Record BlockingÀ» ¼öÇàÇÒ DB2 ServerÀÇ storage ·®¿¡
µû¶ó °áÁ¤µÈ´Ù.
multiple Row·Î ±¸¼ºµÈ Result SetÀÇ Ã³¸®´Â Cursor¸¦ ÅëÇØ ÀÌ·ç¾îÁø´Ù. Cursor type¿¡ ´ë
ÇÑ Blocking Factor´Â UNAMBIG, ALL, NO °¡ ÀÖ´Ù.
UNAMBIG : FOR UPDATE cursor¸¦ Á¦¿ÜÇÑ ¸ðµç cursor´Â blockingµÈ´Ù.
ALL : ¸ðµç cursor°¡ blockingµÈ´Ù.
NO : ¾î¶°ÇÑ cursorµµ blocking 󸮵ÇÁö ¾Ê´Â´Ù.
DBM cfgÀÇ ASLHEAPSZ ÆÄ¶ó¹ÌÅÍ·Î multiple data record¸¦ ¿äûÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ
DB2 Server¿¡¼ÀÇ data buffer¿¡ »ç¿ëµÇ´Â memory ÇÒ´ç·®À» ÁöÁ¤ÇÑ´Ù.
(DB ServerÀÇ memory ÇÒ´ç) ¶ÇÇÑ, ¿ø°Ý SQL ¾îÇø®ÄÉÀ̼ǿ¡¼ÀÇ memory ÇÒ´çÀº DBM cfgÀÇ
RQRIOBLK°ªÀ¸·Î ÁöÁ¤ÇÑ´Ù.
Âü°í) CLI ¾îÇø®ÄÉÀÌ¼Ç ¹× DB2 CLP (Command Line Processor)ÀÇ Blocking FactorÀÇ default
°ªÀº UMAMBIGÀ̸ç, À̸¦ º¯°æÇϰíÀÚ ÇÒ °æ¿ì¿¡´Â °¢°¢ÀÇ bindfile (db2cli.bnd,
db2clp.bnd)¸¦ bind ÇÒ ¶§, bind optionÀ» ÁöÁ¤ÇÏ¿© ¼öÇàÇÏ¸é µÈ´Ù.
|
 |
|
|
5.2 DB2CLI (Call Level Interface) & ODBC
|
Á¤ÀÇ: DB2CLI´Â C ¹× C++ ¾ð¾î¸¦ ÀÌ¿ëÇÑ DB2 Programming InterfaceÀÇ ÇϳªÀÌ´Ù.
Ư¡
1. DB2CLI´Â MicrosoftÀÇ ODBC ¹× X/Open, ISO Call Level Interface Standard¸¦ ±âÃÊ·Î ±¸¼ºµÇ¾ú
´Ù.
µû¶ó¼, DB Vendor¿Í »ó°ü¾øÀÌ ODBC ¹× X/OpenÀÇ CLI¸¦ Áö¿øÇÏ´Â DBMS ¸ðµÎ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â
portable ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÌ °¡´ÉÇÏ´Ù.
Âü°í) DB2 ODBC Driver´Â MSÀÇ ODBC 2.0ÀÇ Level 2 ¹× ODBC 3.0ÀÇ Level 1ÀÇ ¸ðµç spec, Level
2ÀÇ ´ëºÎºÐÀÇ spec¿¡ µû¶ó °³¹ßµÇ¾ú´Ù.
DB2CLI´Â ODBC¸¦ ±âÃÊ·ÎÇϹǷÎ, »óÈ£ ȣȯÀûÀÎ °ü°è¿¡ ÀÖ´Ù. µû¶ó¼ C³ª C++ ¾ð¾î
(MS Visual C++)¸¦ ÀÌ¿ëÇÑ CLI ¾îÇø®ÄÉÀÌ¼Ç ¶Ç´Â MS Visual Basic ¹× PHP, Python, Perl
°ú °°Àº script Language¸¦ ÀÌ¿ëÇÑ ODBC ¾îÇø®ÄÉÀÌ¼Ç °³¹ß ¹× ½ÇÇàÀº °¢°¢ DB2 CLI
ODBC Driver¿¡ ÀÇÇØ¼ 󸮵Ǹç, °¢ DriverÀÇ ³»¿ë ¹× Driver ¹× DB2 ±â´ÉÀº °ÅÀÇ ºñ½ÁÇÏ
´Ù.
2. DB2CLI´Â Dynamic ¾îÇø®ÄÉÀÌ¼Ç °³¹ß ¹æ½ÄÀÌ´Ù. (bind ¹× Package »ý¼º ºÒÇÊ¿ä)
µû¶ó¼, Dynamic Embedded Application°ú ¸¶Âù°¡Áö·Î º°µµÀÇ bind °úÁ¤ÀÌ ÇÊ¿ä¾øÀ¸¸ç, Packagae
»ý¼ºÀº ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ ÀÌ·ç¾îÁø´Ù. CLI ¾îÇø®ÄÉÀ̼ÇÀº DB2¿¡ ÀÇÇØ¼ Á¦°øµÇ´Â °øÅëÀû
ÀÎ access package¸¦ ÀÌ¿ëÇÏ¿© ½ÇÇàµÇ¹Ç·Î °³º° ¾îÇø®ÄÉÀ̼ÇÀÇ bind °úÁ¤Àº ÇÊ¿ä¾ø´Â ´ë½Å¿¡
°øÅëÀûÀ¸·Î DB2CLI package¸¦ ÇØ´ç DB¿¡ Çѹø bindÇÏ¿© DB2CLI ¶Ç´Â ODBC ¾îÇø®ÄÉÀ̼ÇÀÌ À̸¦
»ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
CLI ¾îÇø®ÄÉÀ̼ÇÀÇ (Embedded) Dynamic SQL ¾îÇø®ÄÉÀ̼ǰúÀÇ Â÷ÀÌÁ¡
• Precompile °úÁ¤ÀÌ ¾ø´Ù. (µû¶ó¼ bind ¹× Package »ý¼ºÀÌ ¾ø´Ù)
¾îÇø®ÄÉÀÌ¼Ç levelÀÇ Package°¡ ¾ø´Â ´ë½Å, ¸ðµç CLI ¾îÇø®ÄÉÀ̼ÇÀÌ °øÅëÀûÀ¸·Î ÀÌ¿ëÇÏ´Â
CLI PackageµéÀ» ÇØ´ç DB¿¡ Çѹø¸¸ bindÇÑ´Ù.
• ¸í½ÃÀûÀÎ cursor Á¤Àǰ¡ ¾ø´Ù.
• Commit/rollback ±¸¹®´ë½Å SQLEndTran() FuctionÀ» »ç¿ëÇÑ´Ù.
• SQLCA / SQLDA ¿Í °°Àº DB¿¡¼ÀÇ Æ¯Á¤ error ó¸® API°¡ ¾ø´Ù.
• Host variable ´ë½Å¿¡ parameter marker¸¦ »ç¿ëÇÑ´Ù. ¶ÇÇÑ, ´ÙÀ½ÀÇ Á¦¾à »çÇ×À» °¡Áø´Ù.
• multiple Row 󸮸¦ Çѹø¿¡ ¼öÇàÇÒ ¼ö ¾ø´Ù. (array fetch/ insert)
• scrollabel cursor°¡ Áö¿øµÇÁö ¾Ê´Â´Ù.
3. CLI ¹× ODBCÀÇ Dynamic SQL ±¸¹®Àº Program¿¡ embedded µÇÁö ¾Ê°í, DB2¿¡ ÀÇÇØ¼ Á¦°øµÇ´Â
C/C++ API¸¦ ÀÌ¿ëÇÏ¿© function argumentÀÇ Çü½ÄÀ¸·Î DB2¿¡ Àü´ÞµÈ´Ù
(direct API call). µû¶ó¼, Program precompile °úÁ¤ÀÌ ºÒÇÊ¿äÇÏ´Ù.
4. Embedded SQL ±¸¹®¿¡¼ SQL ¼öÇà ¼º°ø ¿©ºÎ¸¦ °Ë»çÇϴµ¥ »ç¿ëÇÏ´Â SQLDA ¹× SQLCA¸¦ »ç¿ëÇÏÁö
¾ÊÀ¸¹Ç·Î ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼ºÀÌ ½±´Ù.
ÀåÁ¡
1. Precompile, bind °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù.
2. ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà½Ã¿¡ DB2ÀÇ Åë°èÁ¤º¸¸¦ ±âÃÊ·ÎÇÑ access planÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
3. ´Ù¸¥ DB platform¿¡ ½±°Ô À̽ÄÇÒ ¼ö ÀÖ´Ù.
´ÜÁ¡
Static Embedded SQL°ú ºñ±³ÇÏ¿© ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ¼Óµµ°¡ ´À¸®´Ù.
(Dynamic Embedded SQL°ú °øÅë)
ODBC¿Í CLIÀÇ ºñ±³
• Commit CLI ¾îÇø®ÄÉÀ̼ÇÀº ¾ÆÅ°ÅØÃÄ»ó ODBC Driver Manager¾øÀÌ ¾îÇø®ÄÉÀ̼ÇÀÌ Á÷Á¢ CLI
Driver¿Í Åë½ÅÇÑ´Ù.
• DB2 ODBC Driver ¹× DB2 Data Source´Â ¹Ýµå½Ã ODBC Driver Manager¿¡ µî·ÏµÇ¾î¾ß Çϳª,
CLI Driver´Â DB2 Client¸¸ ¼³Ä¡µÇ¸é, º°µµÀÇ µî·Ï °úÁ¤ÀÌ ÇÊ¿ä¾ø´Ù.
• ODBC´Â Windows ¹× Linux ȯ°æ¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª, CLI´Â UNIX¸¦ Æ÷ÇÔÇÑ º¸´Ù ´Ù¾çÇÑ
ȯ°æ ¹× C/C++, Java¿Í °°Àº °·ÂÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Áö¿øÇÑ´Ù.
|
|
| ±×¸². DB2 UDB¿¡¼ÀÇ ODBC¿Í CLI ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà
ȯ°æ |
| DB2 Host : DB2
for OS/390, DB2 for OS/400, DB2 for VM/VSE, ... |
| • DB2 CLI ȯ°æ ±¸¼º ÀÛ¾÷ |
1. DB2 SDK¸¦ ¼³Ä¡Çϰí, DB2 CLI Library¸¦ È®ÀÎÇÑ´Ù.
Windows ȯ°æ : sqllib \ lib \ db2cli.lib
UNIX ȯ°æ : sqllib / lib / libdb2.a ¶Ç´Â libdb2.so
2. Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB°¡ ¿ø°ÝÀÏ °æ¿ì, ¾îÇø®ÄÉÀÌ¼Ç client¿¡ Node ¹× DB catalogingÀ» ÇÑ´Ù.
3. DB2 CLI bindfileµéÀ» Á¢¼ÓÇÒ DB¿¡ bindÇÑ´Ù.
´ÙÀ½ÀÇ µð·ºÅ丮¿¡¼ Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB2 ¼¹öÀÇ Á¾·ù¿¡ µû¶ó ´ÙÀ½ÀÇ fileµéÀ» bindÇÑ´Ù.
sqllib / bnd / db2cli.lst ( DB2 UDB )
dd csmvs.lst ( DB2 for OS/390 )
ddcs400.lst ( DB2 for OS/400 )
Âü°í) .lst FileÀº bindfileµéÀ» ¸ð¾Æ³õÀº list fileÀ̸ç list fileÀÇ bind´Â ´ÙÀ½ÀÇ ¿¹¿Í °°
ÀÌ file ¾Õ¿¡ "@"¹®ÀÚ¸¦ Ãß°¡ÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù.
¿¹) "db2 bind @db2cli.lst blocking all isolation cs grant public messages db2cli.msg"
"db2 bind @ddcsmvs.lst blocking all sqlerror continue grant public"
4. Çʿ信 µû¶ó, db2cli.ini FileÀÇ ³»¿ëÀ» ÆíÁýÇÏ¿© CLI ȯ°æ ±¸¼ºÀ» ¼öÁ¤ÇÑ´Ù.
°¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â optionÀº ´ÙÀ½°ú °°´Ù.
|
| Ű¿öµå |
ÀÇ¹Ì |
ÁöÁ¤°ª |
| CURSORHOLD |
Cursor
Holdability |
0 : Cursor No
Hold
(Æ®·£Àè¼ÇÀÌ commit µÇ¸é cursor ¼Ò¸ê)
1 : Cursor Hold (default) |
| TXNISOLATION |
Transaction
Isolation
level ¼³Á¤* |
1 : UR (Uncommitted
Read) Æ®·£Àè¼Ç
2 : CS (Cursor Stability) Æ®·£Àè¼Ç (default)
4 : RS (Read Stability) Æ®·£Àè¼Ç
8 : RR (Repeatable Read) Æ®·£Àè¼Ç
32: NO COMMIT (DB2 for OS/400 only) |
| DEFERREDPREPARE |
SQL
Prepare ¿äû
½ÃÁ¡ ¼³Á¤ |
0 : Deferred
Prepare »ç¿ë ¾ÊÇÔ
1 : Deferred Prepare »ç¿ëÇÔ (default) |
| DB2DEGREE |
SQL
±¸¹® ½ÇÇàÀÇ º´·Ä
ó¸® degree ¼³Á¤ |
0 : (default)
1-32767 |
|
|
• ODBC ȯ°æ ±¸¼º ÀÛ¾÷
|
1. DB2 Client¸¦ ¼³Ä¡Çϰí, Á¢¼ÓÇϰíÀÚ ÇÏ´Â DB°¡ ¿ø°ÝÀÏ °æ¿ì, Node ¹× DB cataloging ÀÛ¾÷
À» ¼öÇàÇÑ´Ù.
2. ODBC Driver Manager°¡ ¼³Ä¡µÇ¾ú´ÂÁö Á¦¾îÆÇ¿¡¼ È®ÀÎÇϰí, DB2 Data Source¸¦ System
DSN ¶Ç´Â »ç¿ëÀÚ DSNÀ¸·Î µî·ÏÇÑ´Ù.
Âü°í) DB2 ODBC Driver ("IBM DB2 ODBC Driver")´Â DB2 Server ¶Ç´Â client ¼³Ä¡½Ã¿¡ ÀÚµ¿
À¸·Î ¼³Ä¡ ¹× µî·ÏµÈ´Ù.
3. ODBC ȯ°æ ¼³Á¤Àº DB2 CLI¿Í ¸¶Âù°¡Áö·Î db2cli.ini FileÀ» ÆíÁýÇÏ¿© ÀûÀýÇÒ È¯°æ ±¸¼ºÀ»
¼³Á¤ÇÑ´Ù.
CLI ¹× ODBC¿¡ ´ëÇÑ º¸´Ù ÀÚ¼¼ÇÑ ³»¿ëÀº DB2 ManualÀÎ "DB2 CLI Gude and Reference" ¹× "ODBC
Guide & Reference"¸¦ ÂüÁ¶ÇÑ´Ù.
|
 |
|
|
5.3 Java Interfaces (JDBC / SQLJ)
|
Á¤ÀÇ: JDBC ¹× SQLJ ´Â DB2¿¡¼ Dynamic SQL ¹× Static SQLÀ» ó¸®Çϱâ À§ÇÑ Java Programming
InterfaceÀÌ´Ù.
Ư¡
1. JDBC ¹× SQLJ´Â vendor-independentÇÑ Java LanguageÀÇ SQL interfaceÀÌ´Ù.
2. JDBC´Â DB2CLIÀÇ °æ¿ìó·³, API Call·Î½á SQL ±¸¹®ÀÌ Ã³¸®Çϸç, Dynamic SQL ó¸® ¹æ½ÄÀÇ Æ¯¼º
À» °¡Áø´Ù. SQLJ´Â SQL ±¸¹®ÀÌ ÇÁ·Î±×·¥»ó¿¡ EmbeddedµÇ¾î, Static SQLÀÇ ¹æ½ÄÀ» µû¸¥´Ù.
3. JDBC ¿Í SQLJÀÇ ºñ±³
|
| |
JDBC |
SQLJ |
| SQL ±¸¹® |
API call·Î SQL ±¸¹®
Àü´Þ |
Program³» Embedded |
| SQL ÇüÅ |
Dynamic SQL |
Static SQL |
| SQL ±¸¹® ó¸® |
- Precompile, bind °úÁ¤ ºÒÇÊ¿ä
- ½ÇÇà½Ã Package ÀÛ¼º |
- SQLJ translation °úÁ¤ ÇÊ¿ä
(precompile)
- Java Profile Customization °úÁ¤ ÇÊ¿ä
(Package ¹Ì¸® »ý¼º) |
|
| • DB2 JDBC Driver |
DB2 UDB´Â 2°¡Áö ÇüÅÂÀÇ JDBC Driver¸¦ Á¦°øÇÑ´Ù. (sqllib/java/db2java.zip)
App Driver: COM.ibm.db2.jdbc.app.DB2Driver - DB2 Client°¡ ¾îÇø®ÄÉÀÌ¼Ç Å¬¶óÀÌ¾ðÆ®¿¡ ¼³Ä¡
µÇ¾î ÀÖÀ» °æ¿ì »ç¿ëÇÑ´Ù. (Java Application)
Net Driver: COM.ibm.db2.jdbc.net.DB2Driver - DB2 Client°¡ ¾øÀ» °æ¿ì »ç¿ëÇÑ´Ù.
(Java Applet)
Âü°í) Java ServletÀÇ °æ¿ìµµ DB2 Client ¼³Ä¡ ¿©ºÎ¿¡ µû¶ó Driver¸¦ ¼±ÅÃÇÏ¿© »ç¿ëÇÑ´Ù.
|
|
|
±×¸². App Driver ¹× Net DriverÀÇ ±¸¼º ¾ÆÅ°ÅØÃÄ
|
| • JDBC Programming
|
JDBC API¸¦ ÀÌ¿ëÇÏ¿© ´Ù¸¥ ÀϹÝÀûÀÎ Java Programming°ú ¸¶Âù°¡Áö·Î
ÀÛ¼º, ½ÇÇàÇÑ´Ù. JDBC API¿¡ ´ëÇÑ ³»¿ëÀº ¿©±â¼ ±¸Ã¼ÀûÀ¸·Î ´Ù·çÁö ¾ÊÀ¸¸ç, Sun MicrosystemsÀÇ JDK document
¿¡¼ JDBC API¿¡ ´ëÇÑ ³»¿ëÀ» ÂüÁ¶ÇÑ´Ù.
Âü°í) JDBC ¾îÇø®ÄÉÀ̼ÇÀº DB2¿¡¼ÀÇ Dynamic SQL ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ðµç Ư¡À» °®°í ÀÖ´Ù. |
| • SQLJ Programming
|
| 1. SQLJ Application ÀÛ¼º ¹× ½ÇÇà °úÁ¤
|
|
|
±×¸² SQLJ Application Process
|
sqlj (SQLJ Translator): precompiler¿Í ¸¶Âù°¡Áö·Î Java Source code¿¡¼ Static Embedded SQL
±¸¹®À» precompileÇÏ¿© ¼öÁ¤µÈ java file (.java)°ú Serialized profile (.ser) À» »ý¼ºÇÑ´Ù.
javac (Java Compiler): ¼öÁ¤µÈ java source code¸¦ compileÇÏ¿© ½ÇÇà class¿Í ProfileKey class
¸¦ »ý¼ºÇÑ´Ù.
db2profc (DB2 Profile Customizer): SQLJ Translator¿¡ ÀÇÇØ¼ »ý¼ºµÈ Serialiezed ProfileÀ»
customzationÇÏ¿© DB¿¡ Á÷Á¢ Package¸¦ ¸¸µé°Å³ª ¶Ç´Â bindfileÀ» »ý¼ºÇÑ´Ù.
SJProfileKeys.class File: ½ÇÇà java class¿Í DB2 DB³»ÀÇ Package¸¦ ¿¬µ¿½ÃÄÑÁÖ´Â ¿ªÇÒ
(consistency token)À» ¼öÇàÇÑ´Ù.
Âü°í) 1. SQLJ ¾îÇø®ÄÉÀ̼ÇÀº DB2ÀÇ ÀϹÝÀûÀÎ Static Embedded SQL ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ðµç Ư¡À»
°¡Áø´Ù.
2. SQLJ Translator (sqlj.zip)Àº DB2 SDK¿¡ Æ÷ÇԵǸç, SQLJ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß½Ã¿¡¸¸ ÇÊ
¿äÇÏ´Ù. ÀÛ¼ºµÈ SQLJ ¾îÇø®ÄÉÀÌ¼Ç (Java Application, Applet, Servlet)ÀÇ ½ÇÇàȯ°æ
¿¡¼´Â ÇÊ¿ä¾øÀ¸¸ç, ´ë½Å db2java.zip (DB2 JDBC Driver File) ¹× runtime.zip (SQLJ
¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà ȯ°æ File)¸¸ÀÌ »ç¿ëÀÚ profileÀÇ classpath¿¡ µî·ÏµÇ¾î ÀÖÀ¸¸é µÈ
´Ù.
|
| • Java Program ȯ°æ ±¸¼º ÀÛ¾÷ |
1. ÀûÀýÇÑ JDK¸¦ ½Ã½ºÅÛ¿¡ ¼³Ä¡Çϰí ÀÌÀÇ °ü·Ã class¸¦ »ç¿ëÀÚÀÇ profile¿¡
µî·ÏÇÑ´Ù.
2. sqllib / java µð·ºÅ丮ÀÇ db2java.zip, sqlj.zip, runtime.zip fileÀ» »ç¿ëÀÚ profileÀÇ
classpath¿¡ µî
·ÏÇÑ´Ù.
3. ´ÙÀ½ ¿¹Ã³·³ »ç¿ëÀÚÀÇ profile³» ¶Ç´Â db2profile¿¡ sqllib / lib directory¸¦ LD_LIBRARY_PATH·Î
µî
·ÏÇÑ´Ù. (UNIX ȯ°æ only) ¿¹) LD_LIBRARY_PATH=$HOME/sqllib/lib
4. Java Stored Procedure ¶Ç´Â UDF (User Defined Function)À» »ç¿ëÇÒ ¶§´Â DBM cfgÀÇ
JDK11_PAT
HÀÇ °ªÀ» »ç¿ëÇϰíÀÚÇÏ´Â java class fileÀÌ ÀÖ´Â directory·Î ¼³Á¤ÇÑ´Ù.
|
Java Program °³¹ß¿¡ °üÇÑ º¸´Ù ÀÚ¼¼ÇÑ ³»¿ëÀº DB2 ManualÀÎ "ÀÀ¿ë
ÇÁ·Î±×·¥ °³¹ß ¾È³»¼" ¹×
www.software.ibm.com/data/db/java
¹× www.kr.ibm.com/software/data/db2/techinfo/index.html
±â¼ú Á¤º¸ÀÇ DB2 UDB SQLJ Programming GuideÀÇ ³»¿ëÀ» ÂüÁ¶ÇÑ´Ù. |
 |
|
|
5.4 MS Data Objects (DAO, RDO, ADO, OLE-DB)
|
MicroSoftÀÇ Visual BasicÀ̳ª Visual C++À» ÀÌ¿ëÇÑ DAO (Data
Access Object), RDO (Remote Data Object)ÀÇ specÀ» µû¸£´Â DB2 ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ÇÀº DB2ÀÇ ODBC(CLI) Driver InterfaceÀÇ spec¿¡ µû¶ó ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç, ADO (ActiveX
Data Object) ¾îÇø®ÄÉÀÌ¼Ç ¿ª½Ã DB2ÀÇ OLE DB Driver ¶Ç´Â OLE:ODBC Bridge Driver¸¦ ÀÌ¿ëÇÏ¿©
ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
ADO (ActiveX Data Object): ADO¸¦ »ç¿ëÇÏ¿© OLE DB ProviderÀÇ data¿¡ Á¢±ÙÇϰųª À̸¦ ó¸®ÇÒ
¼ö ÀÖ´Ù. OLE DB API´Â MS¿¡ ÀÇÇØ µðÀÚÀεǾî ODBC¸¦ ÀÌ¿ëÇÏ¿© accessÇÒ ¼ö ÀÖ´Â Data Sourceº¸´Ù ´õ¿í
´Ù¾çÇÑ DataÀÇ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ ADOÀÇ ÀåÁ¡À¸·Î ºü¸¥ Data access ¹× ó¸® ¼Óµµ, ³·Àº ¸Þ¸ð¸® ¹× diskÀÇ
overhead, »ç¿ëÀÇ ÆíÀǼºÀ» µé ¼ö ÀÖ´Ù.
RDO (Remote Data Object): RDO´Â ODBC Driver¸¦ ÀÌ¿ëÇÑ remote Data SourceÀÇ Á¢±Ù¿¡
´ëÇÑ ¸ðµ¨ÀÌ´Ù. remoteÀÇ ODBC °ü°èÇü Data Source¿¡ Á¢±ÙÇÏ¿© Á¶È¸ ¹× Data ó¸®, Stored Procedure
½ÇÇà, Æ®·£Àè¼Ç commit°ú °°Àº ´Ù¾çÇÑ ±â´ÉÀ» º¹ÀâÇÑ ¾îÇø®ÄÉÀÌ¼Ç ÄÚµå ¾øÀÌ ODBC functionÀ» ÀÌ¿ëÇÏ¿© local DB¿¡¼¿Í
¸¶Âù°¡Áö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀåÁ¡ : Data Source¿Í´Â ¹«°üÇÏ°Ô Ç¥ÁØÈµÈ ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» Á¦°øÇÑ´Ù.
´ÜÁ¡ : Àû¿ëÇÒ ¼ö Àִ ȯ°æÀº MicrosoftÀÇ Windows ȯ°æÀ¸·Î Á¦ÇѵȴÙ. |
 |
|
|
5.5 Data Locking Strategy
|
| (1) Isoations Levels (¾îÇø®ÄÉÀÌ¼Ç Level¿¡¼ÀÇ Data Locking
Strategy) |
- lsolation LevelÀº ¾îÇø®ÄÉÀ̼ÇÀÌ DB³»ÀÇ Æ¯Á¤ TableÀ» AccessÇÏ´Â
µ¿¾È ´Ù°°Àº TableÀ»
accessÇÏ´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ ÂüÁ¶µÇ´Â µ¿ÀÏÇÑ data¸¦ ¾î¶»°Ô LockingÇÒ °ÍÀΰ¡¸¦
°áÁ¤ÇÑ´Ù.
- Application¿¡ ´ëÇÑ lsolation LevelÀº Precompile ¶Ç´Â Bind½Ã ÇØ´ç optionÀ¸·Î ÁöÁ¤µÈ´Ù.
- Isolation LevelÀº Data Á¶È¸ Æ®·£Àè¼Ç (Select SQL)¿¡¸¸ Àû¿ëµÈ´Ù. Áï, ÇÑ ¾îÇø®ÄÉÀ̼ǿ¡¼ ÇØ´ç
dataÀÇ Á¶È¸ ¹× º¯°æ Æ®·£Àè¼Ç (update, insert, delete SQL)ÀÌ ¹ß»ýÇÒ ¶§, ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼
¾î¶°ÇÑ ¹æ½ÄÀ¸·Î µ¿ÀÏÇÑ data¸¦ Á¶È¸ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÑ´Ù. |
| °¡. Cursor Stability(CS) |
(°¡) Cursor°¡ PositionedµÇ°í ÀÖ´Â Row¿¡¸¸ Lock»óÅÂ(S Lock
- Share Lock)¸¦ À¯ÁöÇϸç, Row
°¡ updateµÇÁö ¾Ê°í fetch µÇ¸é¼ cursor°¡
´ÙÀ½ row·Î moveµÉ ¶§ lock »óŸ¦ ÇØÁ¦ÇÑ´Ù.
Âü°í) Row°¡ updateµÉ °æ¿ì¿¡´Â transaction
commit ¶Ç´Â rollback, connect½Ã openµÈ cursor°¡
closeÇϸé¼LockÀ» ÇØÁ¦ÇÑ´Ù.
(³ª) CS·Î bindingÇÑ ¾îÇø®ÄÉÀ̼ÇÀº ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇÑ uncommited changes´Â ÂüÁ¶ÇÒ
¼ö ¾ø´Ù. |
| ³ª. Repeatable Stability (RS) |
(°¡) ÇÑ UOW ³»¿¡¼ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ retriveµÇ´Â Row¿¡ ´ëÇØ Lock»óŸ¦
À¯ÁöÇÑ´Ù. Áï, Á¶
ȸ Á¶°Ç¿¡ ÇØ´çµÇ´Â row¿¡ ´ëÇØ¼¸¸ S LockÀÌ °É¸°´Ù.
(³ª) ÇÑ UOW ³»¿¡¼ µ¿ÀÏ Á¶È¸ Á¶°Ç¿¡ ¸Â´Â data°¡ insertµÈ ÈÄ, °°Àº Á¶È¸°¡ ¹Ýº¹µÇ¸é Phantom
Row°¡ »ý±æ ¼ö ÀÖ´Ù (¾ÆÁ÷ commitµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î). µû¶ó¼
ÀÌÀü Á¶È¸ÀÇ °á°úº¸´Ù ¸¹Àº Á¶È¸
°á°ú°¡ ³ªÅ¸³¯ ¼ö ÀÖ´Ù. ÀÌ Æ®·£Àè¼ÇÀÌ commit µÇ°Å³ª rollback
µÇ¸é phantom Row´Â »ç¶ó
Áö°Ô µÈ´Ù.
(´Ù) Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Rows·ÎºÎÅÍ Çϳª¾¿ fetchÇØ¿À¸é¼ LockÀ» Çϳª¾¿ ÇØÁ¦ÇÑ´Ù. |
| ´Ù. Repeatable Read (RR) |
(°¡) ÇÑ UOW ³»¿¡¼ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¸ðµç Row¿¡ ´ëÇØ Lock
»óŸ¦ À¯Áö ÇÑ´Ù.
(³ª) Áï, Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Row »Ó¸¸ ¾Æ´Ï¶ó (RS), °á°ú Row¸¦ µµÃâÇϱâ À§ÇØ Á¶È¸ Á¶°Ç¿¡
ÀÇÇØ ÂüÁ¶µÇ´Â ¸ðµç Row¿¡ S LockÀÌ °É¸°´Ù. µû¶ó¼ RSÀÇ °æ¿ìó·³, µ¿ÀÏ UOW ³»¿¡¼ Á¶
ȸ Á¶°Ç¿¡ ¸Â´Â data¿¡ ´ëÇÑ º¯°æ Æ®·£Àè¼Ç (insert,
update, delete)Àº ÇØ´ç Row¿¡ S LockÀÌ
°É·ÁÀÖÀ¸¹Ç·Î ¹ß»ýÇÏÁö ¾Ê´Â´Ù. µû¶ó¼ Phantom Row ¶ÇÇÑ
¹ß»ýÇÒ ¼ö ¾ø´Ù.
(´Ù) Á¶È¸ Á¶°Ç¿¡ ´ëÇÑ °á°ú Rows·ÎºÎÅÍ Çϳª¾¿ fetchÇØ¿À¸é¼ °á°ú Row ¹× ÀÌ¿¡ ´ëÇØ ÂüÁ¶µÇ´Â
RowÀÇ LockÀ» Çϳª¾¿
ÇØÁ¦ÇÑ´Ù. |
| ¶ó. Uncommited Read(UR) |
(°¡) ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀÇ º¯°æ Æ®·£Àè¼Ç¿¡ ÀÇÇÑ uncommited changes
data¿¡ ´ëÇØ ¾îÇø® ÄÉÀÌ
¼ÇÀÌ accessÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù.
(³ª) ÇØ´ç Row¿¡ LockÀ» °ÉÁö ¾Ê´Â °ÍÀ̸ç, À̸¦ `dirty read'¶ó°íµµ ÇÑ´Ù. |
|
|
±×¸². °¢ Isolation LevelÀÇ Æ¯¼º
|
 |
|
|
5.6 Application Rebind
|
| DB2 Package¿¡´Â Package »ý¼º½ÃÁ¡ÀÇ DB³»ÀÇ Åë°è Á¤º¸¸¦ ±Ù°Å·Î ±×¿¡ ÃÖÀûÈµÈ access planÀ» °¡Áø´Ù. Åë°è Á¤º¸´Â ½ÃÁ¡¿¡ µû¶ó Á¶±Ý¾¿ ¹Ù²î´Â ¾ç»óÀ» °¡Áö¹Ç·Î, Package »ý¼º ½ÃÁ¡À¸·ÎºÎÅÍ ÀÏÁ¤ ±â°£ÀÌ Áö³ª°Å³ª, DB2 ½Ã½ºÅÛ ¹× DB object¿¡ º¯È°¡ »ý±â¸é ÀÌ¿¡ ´ëÇÑ Åë°è Á¤º¸¸¦ À籸¼ºÇϰí, »õ·Ó°Ô À籸¼ºÇÑ Åë°è Á¤º¸·ÎºÎÅÍ »õ·Î¿î access planÀ» »ý¼ºÇÏ¿©, ¾îÇø®ÄÉÀ̼ÇÀÌ Ç×»ó ÃÖÀûÀÇ access planÀ» ÂüÁ¶Çϵµ·Ï ÇÏ¿© ¾îÇø®ÄÉÀ̼ÇÀÇ ¼º´ÉÀ» ¶ÇÇÑ ÃÖÀûÀÇ »óÅ·ΠÀ¯ÁöÇϵµ·Ï ÇÑ´Ù. |
| (1) ¿ä °Ç |
°¡. Runstats(Åë°è Á¤º¸ À籸¼º ÀÛ¾÷)À» ½ÇÇàÇßÀ» °æ¿ì, ¸ðµç Embedded
SQL ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌÀÇ
Àû¿ëÀ» ¹Þµµ·Ï "db2rbind" ¸í·ÉÀ» ¼öÇàÇÑ´Ù.
³ª. index¸¦ »õ·Ó°Ô »ý¼ºÇϰųª, À籸¼ºÇÏ¿´À» °æ¿ì, À̸¦ ÀÌ¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ¼ rebind
¸¦ ¼öÇàÇÑ´Ù.
´Ù. DataBase Configuration ³»¿ëÁß ´ÙÀ½ÀÇ ³»¿ëÀÌ º¯°æµÇ¾úÀ» °æ¿ì
(°¡) Buffpage
(³ª) Sortheap
(´Ù) Locklist
(¶ó) Maxlocks
(¸¶) Avg_appls
(¹Ù) Seqdetect
´Ù. Bind¸¦ ÇØ¾ßÇÒ °æ¿ì
(°¡) ÇÁ·Î±×·¥³»ÀÇ SQL¹®ÀÌ ¼öÁ¤µÇ¾úÀ» °æ¿ì
(³ª) Bind OptionÀ» º¯°æÇϰíÀÚ ÇÒ °æ¿ì
(´Ù) DB¿¡ Package°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì |
| (2) ¹æ ¹ý |
°¡. db2rbind Command : Rebind all packages in a
database
¢Ñ db2rbind databse -L logfile -U userid -P password
¢Ñ sysadm ¶Ç´Â dbadm±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÔ
³ª. Rebind Command : Bind fileÀÇ ÇÊ¿ä¾øÀÌ DB¾È¿¡ ³»ÀåµÈ package¸¦ ´Ù½Ã ÀÛ¼º
¢Ñ rebind package package-name
¢Ñ sysadm ¶Ç´Â dbadm±ÇÇÑ ¶Ç´Â package¿¡ ´ëÇÑ Bind ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÔ. |
 |
|
|
5.7 DB2 Stored Procedure ÀÛ¼º
|
| DB2 UDB¿¡¼ÀÇ Stored Procedure ÀÛ¼ºÀº Stored Procedure Builder (V6 ÀÌÈÄ)¸¦ »ç¿ëÇÑ´Ù.
|
1. Stored Procedure BuilderÀÇ ÀÛ¼º ¾ð¾î
SQL/PL (Procedural Language) : DB2 UDB V7ÀÌÈĺÎÅÍ °¡´É
Java : DB2 UDB V6ÀÌÈĺÎÅÍ °¡´É
2. ±×¿Ü ÀÏ¹Ý ÇÁ·Î±×·¡¹Ö ¾ð¾î (C/C++, COBOL)·Î Stored Procedure¸¦ ÀÛ¼ºÇÒ °æ¿ì, Á÷Á¢ ÇÁ·Î±×·¡¹Ö
À» ÇØ¾ßÇϳª ¹ø°Å·Ó°í º¹ÀâÇϹǷÎ, Stored Procedure Builder »ç¿ëÀ» ±ÇÀåÇÑ´Ù.
3. Stored Procedure Builder¸¦ ÀÌ¿ëÇÑ Stored Procedure ÀÛ¼ºÀº
www.kr.ibm.com/software/data/db2/techinfo/index.html
±â¼ú Á¤º¸ÀÇ "DB2 UDB Stored
Procedure Builder Guide" ¶Ç´Â ºÎ·ÏB ¸¦ ÂüÁ¶ÇÑ´Ù. |
 |
|
|