Skip to content

Latest commit

Β 

History

History
93 lines (63 loc) Β· 5.69 KB

Transaction.md

File metadata and controls

93 lines (63 loc) Β· 5.69 KB

νŠΈλžœμž­μ…˜(Transaction)

은행 ATMμ΄λ‚˜Β λ°μ΄ν„°λ² μ΄μŠ€ λ“±μ˜ μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 더 이상 μͺΌκ°€ 수 μ—†λŠ” 업무 처리의 μ΅œμ†Œ λ‹¨μœ„

  • ν•˜λ‚˜ μ΄μƒμ˜ CRUD μž‘μ—…λ“€μ„ 마치 ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„μΈ κ²ƒμ²˜λŸΌ λ¬Άμ–΄μ£ΌλŠ” κΈ°λŠ₯이닀.
  • 주둜 ν•˜λ‚˜μ˜ 업무λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬ 개의 CRUD μž‘μ—…μ΄ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•  λ•Œ μ‚¬μš©λ˜λ©°, DBMSκ°€ CRUD λ‹€μŒμœΌλ‘œ μ€‘μš”ν•˜κ²Œ λ‹€λ£¨λŠ” κΈ°λŠ₯이닀.
  • DBMSκ°€ μ œκ³΅ν•˜λŠ” νŠΈλžœμž­μ…˜μ€ μ—°κ΄€λœ μ—¬λŸ¬ 개의 CRUD μž‘μ—…μ„ λ¬Άμ–΄ 단일 μž‘μ—…μ²˜λŸΌ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€.
    β†’ CRUD μž‘μ—…λ“€μ„ νŠΈλžœμž­μ…˜μœΌλ‘œ 묢으면 ν•˜λ‚˜μ˜ CRUDλ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμ²˜λŸΌ μ²˜λ¦¬ν•  수 μžˆμ–΄ 논리적 μž‘μ—… λ‹¨μœ„(LUW, Logical Units of Work)라고 λΆ€λ₯΄κΈ°λ„ ν•œλ‹€.
  • λ‹¨μˆœν•œ νŠΈλžœμž­μ…˜μ˜ 경우 ν•˜λ‚˜μ˜ CRUD μž‘μ—…μœΌλ‘œ κ΅¬μ„±λ˜κΈ°λ„ ν•˜μ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ νŠΈλžœμž­μ…˜μ€ μ—¬λŸ¬ 개의 CRUD μž‘μ—…μœΌλ‘œ 이루어져 μžˆλ‹€.

νŠΈλžœμž­μ…˜μ˜ ν•„μš”μ„±

  • μƒμš© μ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ λ³΅μž‘ν•œ κΈ°λŠ₯μ΄λ‚˜ 업무λ₯Ό μ²˜λ¦¬ν•˜λ‹€ 보면 λ‹¨κ±΄μ˜ CRUDλ§ŒμœΌλ‘œλŠ” μ—…λ¬΄μ˜ 완결성을 갖지 λͺ»ν•˜λŠ” κ²½μš°κ°€ 생긴닀.
    ex) ν•˜λ‚˜μ˜ 데이터λ₯Ό μͺΌκ°œμ–΄ μ—¬λŸ¬ 곳에 μ €μž₯ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬ 번의 CRUD μž‘μ—…μ„ μ‹€ν–‰ν•΄μ•Ό ν•˜λŠ” 경우,
    기쑴에 μž…λ ₯된 데이터λ₯Ό 읽고 κ·Έ λ‚΄μš©μ— 따라 μ €μž₯κ³Ό μˆ˜μ • ν˜Ήμ€ μ‚­μ œ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•΄μ„œ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” 경우
    β‡’ λ”°λΌμ„œ, μ—…λ¬΄μ˜ 완결성을 κ°–κΈ° μœ„ν•΄μ„œλŠ” μ—¬λŸ¬ 개의 μ—°κ΄€λœ CRUD μž‘μ—…μ΄ ν•¨κ»˜ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.

νŠΈλžœμž­μ…˜μ˜ 사둀: κ³„μ’Œμ΄μ²΄

  • κ³„μ’Œμ΄μ²΄λŠ” μ—¬λŸ¬ 개의 CRUDκ°€ λͺ¨μ—¬μ„œ μ΄λ£¨λŠ” ν•˜λ‚˜μ˜ 논리적 μž‘μ—… λ‹¨μœ„, 즉 νŠΈλžœμž­μ…˜μ΄λ‹€.
  • 두 κ³„μ’Œ 간에 백만 원을 μ΄μ²΄ν•˜λŠ” κ³„μ’Œμ΄μ²΄ 거래λ₯Ό μ²˜λ¦¬ν•œλ‹€λ©΄, 은행 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” λ‹€μŒκ³Ό 같은 μˆœμ„œμ— 따라 λ°μ΄ν„°μ˜ CRUD μž‘μ—…μ΄ λ°œμƒν•˜κ²Œ λœλ‹€.
  1. A의 κ³„μ’Œμ— 백만 원 μ΄μƒμ˜ μž”κ³ κ°€ μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.
  2. A의 κ³„μ’Œ μž”μ•‘μ—μ„œ 백만 원을 λΊ€λ‹€.
  3. 차감된 κΈˆμ•‘μ„ A의 κ³„μ’Œμ— κΈ°λ‘ν•œλ‹€.
  4. B의 κ³„μ’Œ μž”μ•‘μ— 백만 원을 λ”ν•œλ‹€.
  5. κ³„μ‚°λœ μž”κ³ λ₯Ό B의 κ³„μ’Œμ— κΈ°λ‘ν•œλ‹€.
  • 이 λ•Œ, 업무 1~5κΉŒμ§€λ₯Ό μͺΌκ°œμ–΄ 보면 κ°œκ°œλ³„λ‘œλŠ” μ•„λ¬΄λŸ° μ˜λ―Έλ„ 없을 λΏλ”λŸ¬, κ°œλ³„λ‘œ 싀행될 경우 였히렀 λ¬Έμ œκ°€ 생길 수 μžˆλ‹€.
  • 1~5λ₯Ό ν•˜λ‚˜μ˜ 업무 λ‹¨μœ„λ‘œ λ¬Άμ–΄ μ²˜λ¦¬ν•΄μ•Όλ§Œ λΉ„λ‘œμ†Œ A의 κ³„μ’Œμ—μ„œ μΈμΆœν•œ 백만 원이 B의 κ³„μ’Œλ‘œ μ΄λ™ν•œλ‹€λŠ” μ „ν›„ 관계가 μ„±λ¦½λ˜κ³ , λ…Όλ¦¬μ μœΌλ‘œ 의미 μžˆλŠ” λ‹¨μœ„μΈ κ³„μ’Œμ΄μ²΄λΌλŠ” 업무가 λ§Œλ“€μ–΄μ§„λ‹€.
  • μ΄λ ‡κ²Œ μ—°κ΄€λœ 업무λ₯Ό λ¬Άμ–΄ 놓은 것이 λ°”λ‘œ νŠΈλžœμž­μ…˜μ΄λ‹€.

νŠΈλžœμž­μ…˜μ˜ 처리 ꡬ쑰

  • νŠΈλžœμž­μ…˜μ€ μ‹€ν–‰ν•΄μ•Ό ν•  μ—¬λŸ¬ 개의 λ‹¨μœ„ μž‘μ—…μ„ ν„°λ„λ‘œ μ—°κ²°ν•˜λ“― ν•˜λ‚˜λ‘œ λ¬Άμ–΄ μ›μžμ„±μ„ λΆ€μ—¬ν•¨μœΌλ‘œμ¨ μ™„μ „ν•œ 성곡 λ˜λŠ” μ™„μ „ν•œ μ‹€νŒ¨λ₯Ό 보μž₯ν•œλ‹€.
  • νŠΈλžœμž­μ…˜ μ‹€ν–‰ 쀑간에 λ‹¨μœ„ μž‘μ—…μ΄ ν•˜λ‚˜λΌλ„ μ‹€νŒ¨ν•˜λ©΄ μ•„μ˜ˆ 아무것도 μ‹€ν–‰λ˜μ§€ μ•Šμ€ 처음 μƒνƒœλ‘œ λ˜λŒλ¦°λ‹€.

νŠΈλžœμž­μ…˜μ˜ μ—°μ‚°

컀밋(commit)

λͺ¨λ“  μž‘μ—…λ“€μ„ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν•˜κ² λ‹€κ³  ν™•μ •ν•˜λŠ” λͺ…λ Ήμ–΄

  • μ²˜λ¦¬κ³Όμ •μ„ λ°μ΄ν„°λ² μ΄μŠ€μ— 영ꡬ적으둜 μ €μž₯ν•˜λŠ” 것이닀.
  • 컀밋을 μˆ˜ν–‰ν•˜λ©΄ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜ 과정을 μ’…λ£Œν•˜λŠ” 것이닀.
  • 컀밋을 μˆ˜ν–‰ν•˜λ©΄ 이전 데이터가 μ™„μ „νžˆ μ—…λ°μ΄νŠΈλœλ‹€.

λ‘€λ°±(rollback)

μž‘μ—… 쀑 λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬ νŠΈλžœμž­μ…˜μ˜ μ²˜λ¦¬κ³Όμ •μ—μ„œ λ°œμƒν•œ 변경사항을 μ·¨μ†Œν•˜λŠ” λͺ…λ Ήμ–΄

  • νŠΈλžœμž­μ…˜μ˜ 일뢀가 μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ˜λ”λΌλ„ νŠΈλžœμž­μ…˜μ˜ μ›μžμ„±μ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 이 νŠΈλžœμž­μ…˜μ΄ ν–‰ν•œ λͺ¨λ“  연산을 μ·¨μ†Œν•œλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.
  • νŠΈλžœμž­μ…˜μ΄ μ‹œμž‘λ˜κΈ° μ΄μ „μ˜ μƒνƒœλ‘œ λ˜λŒλ¦°λ‹€. 즉, λ§ˆμ§€λ§‰ 컀밋을 μ™„λ£Œν•œ μ‹œμ μœΌλ‘œ λ‹€μ‹œ λŒμ•„κ°„λ‹€.
  • μ»€λ°‹ν•˜μ—¬ μ €μž₯ν•œ κ²ƒλ§Œ λ³΅κ΅¬ν•œλ‹€.
  • λ‘€λ°± μ‹œμ—λŠ” ν•΄λ‹Ή νŠΈλžœμž­μ…˜μ„ μž¬μ‹œμž‘ν•˜κ±°λ‚˜ νκΈ°ν•œλ‹€.

μ„Έμ΄λΈŒν¬μΈνŠΈ(save point)

  • μž„μ‹œ μ €μž₯κ³Ό κ°™λ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€. μžμ„Έν•œ μ„€λͺ…은 μƒλž΅ν•œλ‹€.

νŠΈλžœμž­μ…˜μ˜ 4λŒ€ 원칙(ACID)

  • λ‹€μ–‘ν•œ DBMSμ—μ„œ 각자의 기술둜 κ΅¬ν˜„λœ νŠΈλžœμž­μ…˜μ΄ μ‹ λ’°μ„±μžˆκ²Œ λ™μž‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 4κ°€μ§€μ˜ 곡톡 원칙을 μ€€μˆ˜μ• ν– ν•œλ‹€.

μ›μžμ„±(Atomicity)

ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜ 내에 μ •μ˜λœ μž‘μ—…λ“€μ€ λͺ¨λ‘ μˆ˜ν–‰λ˜λ“ μ§€, μ•„λ‹ˆλ©΄ 아무것도 μˆ˜ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 원칙

  • 4λŒ€ 원칙 μ€‘μ—μ„œλ„ κ°€μž₯ 핡심적인 원칙이닀.

일관성(Consistency)

μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λœ νŠΈλžœμž­μ…˜μ€ μ •λ‹Ήν•œ λ°μ΄ν„°λ§Œμ„ λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•΄μ„œ 무결성을 μœ μ§€ν•΄μ•Όν•œλ‹€λŠ” 원칙

  • λ°μ΄ν„°λ² μ΄μŠ€λŠ” νŠΈλžœμž­μ…˜μ˜ μ „ν›„μ—μ„œ μΌκ΄€μ„±μžˆλŠ” 데이터 μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•œλ‹€.

격리성(Isolution)

각각의 νŠΈλžœμž­μ…˜μ€ 독립성을 지녀야 ν•˜λ©°, ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ νŠΈλžœμž­μ…˜ 내뢀에 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ μ ‘κ·Όν•  수 μ—†μ–΄μ•Ό ν•œλ‹€λŠ” 원칙

  • λ°μ΄ν„°λ² μ΄μŠ€λŠ” 기본적으둜 μ—¬λŸ¬ μ‚¬λžŒμ΄ λ™μ‹œμ— μ‚¬μš©ν•  수 μžˆλŠ” μ‹œμŠ€ν…œμ΄κΈ° λ•Œλ¬Έμ— λ™μ‹œλ‹€λ°œμ μœΌλ‘œ νŠΈλžœμž­μ…˜μ΄ λ°œμƒν•˜λŠ” 상황을 상정해야 ν•œλ‹€.

지속성(Durability)

νŠΈλžœμž­μ…˜μ΄ 일단 μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ–΄ λ°μ΄ν„°λ² μ΄μŠ€μ— μ»€λ°‹λ˜κ³  λ‚˜λ©΄, ν•˜λ“œμ›¨μ–΄λ‚˜ μ†Œν”„νŠΈμ›¨μ–΄μ— 였λ₯˜κ°€ λ°œμƒν–ˆλ”λΌλ„ νŠΈλžœμž­μ…˜μ˜ κ²°κ³Όκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ— 계속 λ³΄μ‘΄λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 원칙

  • 였λ₯˜κ°€ μžˆμ–΄ μž¬μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ 데이터가 λ˜λŒμ•„κ°„λ‹€λ©΄ 신뒰성이 맀우 떨어진닀.