๐Ÿ›ข๏ธDatabase

XA Datasource์™€ 2 Phase Commit(2PC) ์— ๋Œ€ํ•ด์„œ

DevPoong 2024. 5. 8. 21:48

์ตœ๊ทผ ํ”„๋กœ์ ํŠธ์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ์—ฌ๋Ÿฌ DB์— ๋Œ€ํ•ด 2 Phase Commit์„ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ƒ๊ฒจ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์„ค๋ช…์„ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์–˜๊ธฐํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.
๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์€ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ํ†ตํ•ฉ๋˜์–ด ๊ด€๋ฆฌ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜ ๋ฌถ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
์ด๋•Œ, 1๏ธโƒฃ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์€ ์„œ๋กœ ๋™์ผํ•œ DB์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ , 2๏ธโƒฃ ์„œ๋กœ ๋‹ค๋ฅธ DB์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

XA Datasource์™€ 2 Phase Commit ์ด๋ž€?

XA๋Š” 2 Phase Commit์„ ํ†ตํ•œ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด X/Open์—์„œ ์ •์˜ํ•œ ํ‘œ์ค€์ด๋‹ค.

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ๊ฐ์˜ DB์—๋Š” ํ•˜๋‚˜์˜ XA Datasource๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด XA Datasource๊ฐ€ XA Connection์„ ์ƒ์„ฑํ•œ๋‹ค.

๋˜ํ•œ, ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์€ ๊ฐœ๋ณ„ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€์˜ Transaction Manager๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Java ์ง„์˜์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ฒค๋”์‚ฌ์—์„œ Java Transaction API ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•œ Object๋ฅผ  XA ํ˜ธํ™˜ JTA ๋ชจ๋“ˆ๋กœ ์ œ๊ณตํ•œ๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐฑ์˜คํ”ผ์Šค ์„œ๋น„์Šค์—์„œ ๋ถ„์‚ฐ๋œ ์—ฌ๋Ÿฌ Oracle DB ํ™˜๊ฒฝ์— 2 Phase Commit์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๊ธฐ์— XA Datasource๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

๋‹ค์Œ์œผ๋กœ, 2 Phase Commit์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๋ง ๊ทธ๋Œ€๋กœ 2 ๋‹จ๊ณ„์— ๊ฑธ์นœ ์ปค๋ฐ‹์ด๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

https://ebrary.net/64872/computer_science/introduction_phase_commit

2PC๋Š” ์‹ฑ๊ธ€ ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”, Coordinator(ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•œ๋‹ค.

 

๋จผ์ €, ๊ทธ๋ฆผ์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ 2PC ์ˆœ์„œ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

  1. ๊ฐ ํŠธ๋žœ์žญ์…˜์€ DB ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ Write ํ•˜๊ณ  ์„ฑ๊ณต ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต๋ฐ›๋Š”๋‹ค.
  2. (Phase1) 1๋ฒˆ ๊ณผ์ •์—์„œ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์ด OK ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด, ๊ฐ ํŠธ๋žœ์žญ์…˜์€  DB ๋…ธ๋“œ์— Prepare ์š”์ฒญ์„ ๋ณด๋‚ด์–ด Commit์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ NO ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด, ๋ชจ๋‘ ๋กค๋ฐฑ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
  3. (Phase2) 2๋ฒˆ ๊ณผ์ •์—์„œ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜์ด Commit์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” YES ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด, ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €๋Š” ๊ฐ DB ๋…ธ๋“œ์— Commit ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ˆ˜ํ–‰๋œ๋‹ค.

์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ Uniqueํ•œ ํŠธ๋žœ์žญ์…˜ ID์ด๋‹ค.
Coordinator๊ฐ€ Prepare ์š”์ฒญ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜ ์ฐธ์—ฌ์ž์—๊ฒŒ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜ ID๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๊ณ , ์ด๋Ÿฌํ•œ ์š”์ฒญ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๊ฒŒ ๋˜๋ฉด Coordinator๋Š” ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜ ์ฐธ์—ฌ์ž๋“ค์—๊ฒŒ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜ ID์˜ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด Abort ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. 


์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์ด ์ž์„ธํ•˜๊ฒŒ๋Š” ์ ์šฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. 

 

์ค‘์š” ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•˜์ž๋ฉด, ์‹ฑ๊ธ€ ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” DB๊ฐ€ Atomicity ํ•œ ํŠธ๋žœ์žญ์…˜์„ ํ†ตํ•ด ์ž‘์—…์˜ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ถ„์‚ฐ๋œ ๋ฉ€ํ‹ฐ ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค๋ฅด๋‹ค. 

๋ฉ€ํ‹ฐ๋…ธ๋“œ์ผ ๋•Œ, 2PC์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์€ "๋ชจ๋“  ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ์ „์ฒด TR์ด Commit๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํ•˜๋‚˜๋ผ๋„ Rollback์ด ๋œ๋‹ค๋ฉด ๋ชจ๋“  TR์ด ํ•จ๊ป˜ Rollback ๋˜์–ด์•ผ ํ•œ๋‹ค"๋Š” ๊ฒƒ์ด๋‹ค.

 

2PC์˜ ์ทจ์•ฝ์ 

์œ„์—์„œ ์„ค๋ช…ํ•œ Coordinator ์ฆ‰, ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €๊ฐ€ ๋‹ค์šด๋˜๋Š” ๊ฒฝ์šฐ 2PC์˜ ์ทจ์•ฝ์ ์ด ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ๋œ๋‹ค.

๋งŒ์•ฝ, Prepare ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์ด๋ผ๋ฉด ํŠธ๋žœ์žญ์…˜ ์ฐธ์—ฌ์ž๋“ค์€ ์•ˆ์ „ํ•˜๊ฒŒ Abort๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ, Prepare ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  YES๋ฅผ ๋ฐ›๊ณ ๋‚œ ํ›„๋ผ๋ฉด ์ƒํ™ฉ์ด ๋‹ค๋ฅด๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ํŠธ๋žœ์žญ์…˜ ์ฐธ์—ฌ์ž๊ฐ€ ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €์˜ ๋„์›€ ์—†์ด ์Šค์Šค๋กœ ์ปค๋ฐ‹๋˜์—ˆ๋Š”์ง€ Abort ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. 

 

๊ฒฐ๊ตญ์—๋Š”, Coordinator๊ฐ€ Recovery๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ , Coordinator๊ฐ€ ํšŒ๋ณต๋  ๋•Œ Coordinator๊ฐ€ ๊ธฐ๋กํ•ด๋‘” ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ  ์ฝ์–ด์„œ ์ƒํƒœ๋ฅผ ํšŒ๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.