๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿช CS

ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฌด๊ฒฐ์„ฑ

ํŠธ๋žœ์žญ์…˜


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฟผ๋ฆฌ๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๋‹จ์œ„

ACID ํŠน์ง•
ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ํŠน์ง•์œผ๋กœ ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๋…๋ฆฝ์„ฑ, ์ง€์†์„ฑ์ด ์žˆ๋‹ค.

1. ์›์ž์„ฑ(atomicity)

"all or nothing"
ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๋ จ๋œ ์ผ์ด ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์—ˆ๊ฑฐ๋‚˜ ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜๋ฅผ ๋ณด์žฅํ•˜๋Š” ํŠน์ง•

์˜ˆ๋ฅผ ๋“ค์–ด ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ–ˆ๋Š”๋ฐ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋กค๋ฐฑํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ์ดํ›„์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ

ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ๋กœ์ง๋“ค์„ ๋ฌถ์„ ๋•Œ ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด ๋กค๋ฐฑ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ๋ฅผ ์‹ ๊ฒฝ ์จ์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์ปค๋ฐ‹๊ณผ ๋กค๋ฐฑ

์ปค๋ฐ‹(commit) : ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ํ™•์ •ํ•˜๋Š” ๋ช…๋ น์–ด

  • ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰
  • ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์ด ๋ชจ๋‘ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.
  • "์ปค๋ฐ‹์ด ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค." == "ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค."
  • update, insert, delete์˜ ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰๋˜๊ณ , ์ดํ›„์— DB์— ์˜๊ตฌ ์ €์žฅ๋œ๋‹ค.

๋กค๋ฐฑ : ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ํ•˜๋‚˜์˜ ๋ฌถ์Œ ๊ณผ์ •์„ ์ผ์–ด๋‚˜๊ธฐ ์ „์œผ๋กœ ๋Œ๋ฆฌ๋Š” ์ผ(์ทจ์†Œ)

  • ์—๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ์ด์Šˆ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜ ์ „์œผ๋กœ ๋Œ๋ ค์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

์ปค๋ฐ‹๊ณผ ๋กค๋ฐฑ ๋•์— ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ „์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด๋‹น ์ž‘์—…์„ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ „ํŒŒ

ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ปค๋„ฅ์…˜ ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ๋งค๋ฒˆ ๋„˜๊ฒจ์ฃผ๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ์ด๋ฅผ ๋„˜๊ฒจ์„œ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ จ ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์„ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์— ๋ฌถ์ด๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.


@Service
@Transactional(readOnly = true)
public class MemberService {
    private final MemberRepository memberRepository;

    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
}
  • @Transactional ์• ๋„ˆํ…Œ์ด์…˜์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ ๊ด€๋ จ๋“ค์„ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ฒ˜๋ฆฌ (Spring ํ”„๋ ˆ์ž„์›Œํฌ)

2. ์ผ๊ด€์„ฑ(cnsistency)


'ํ—ˆ์šฉ๋œ ๋ฐฉ์‹'์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋ก๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์กฐ๊ฑด, ๊ทœ์น™์— ๋”ฐ๋ผ ์œ ํšจํ•จ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™์ฒ ์ด๋Š” 1000๋งŒ ์›์ด ์žˆ๊ณ  ๋ฒ”์„์ด๋Š” 0์›์ด ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ๋ฒ”์„์ด๊ฐ€ ๋‚˜์—๊ฒŒ 500๋งŒ์›์„ ์ž…๊ธˆํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 0์›์œผ๋กœ๋ถ€ํ„ฐ 500๋งŒ์›์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

3. ๊ฒฉ๋ฆฌ์„ฑ(isolation)


ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์‹œ ์„œ๋กœ ๋ผ์–ด๋“ค์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ

  • ๋ณต์ˆ˜์˜ ๋ณ‘๋ ฌ ํŠธ๋žœ์žญ์…˜์€ ์„œ๋กœ ๊ฒฉ๋ฆฌ๋˜์–ด ๋งˆ์น˜ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋˜๊ฒ ์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์ง„๋‹ค.

๊ฒฉ๋ฆฌ์„ฑ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ๋‚˜๋‰˜์–ด ๊ฒฉ๋ฆฌ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
![[Pasted image 20230207110611.png]]

๊ฒฉ๋ฆฌ ์ˆ˜์ค€

  • SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED
  • ์œ„๋กœ ๊ฐˆ์ˆ˜๋ก ๋™์‹œ์„ฑ์ด ๊ฐ•ํ•ด์ง€๊ณ , ๊ฒฉ๋ฆฌ์„ฑ์€ ์•ฝํ•ด์ง„๋‹ค.
  • ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ๋™์‹œ์„ฑ์€ ์•ฝํ•ด์ง€๊ณ , ๊ฒฉ๋ฆฌ์„ฑ์€ ๊ฐ•ํ•ด์ง„๋‹ค.

๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ
REPEATABLE_READ - ํŒฌํ…€ ๋ฆฌ๋“œ
READ_COMMITTED - ํŒฌํ…€ ๋ฆฌ๋“œ, ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ์กฐํšŒ ๋ฐœ์ƒ
READ_UNCOMMITTED - ํŒฌํ…€ ๋ฆฌ๋“œ, ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ์กฐํšŒ, ๋”ํ‹ฐ ๋ฆฌ๋“œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

ํŒฌํ…€ ๋ฆฌ๋“œ(phantom read)

ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๋™์ผํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ ํ•ด๋‹น ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž A๊ฐ€ ํšŒ์› ํ…Œ์ด๋ธ”์—์„œ age๊ฐ€ 12 ์ด์ƒ์ธ ํšŒ์›๋“ค์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ธ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์ด ๊ฒฐ๊ณผ๋กœ ์„ธ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์กฐํšŒ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์‚ฌ์šฉ์ž B๊ฐ€ age๊ฐ€ 15์ธ ํšŒ์› ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋‹ค์Œ ์„ธ ๊ฐœ๊ฐ€ ์•„๋‹Œ ๋„ค ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์กฐํšŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ์กฐํšŒ(non-repeatable read)

ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๊ฐ™์€ ํ–‰์— ๋‘ ๋ฒˆ ์ด์ƒ ์กฐํšŒ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ๊ทธ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž A๊ฐ€ ํฐ๋Œ์˜ ๋ณด์„ ๊ฐœ์ˆ˜๊ฐ€ 100๊ฐœ๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ์˜€๋Š”๋ฐ, ๊ทธ ์ดํ›„ ์‚ฌ์šฉ์ž B๊ฐ€ ๊ทธ ๊ฐ’์„ 1๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์ปค๋ฐ‹ํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด ์‚ฌ์šฉ์ž A๋Š” 100์ด ์•„๋‹Œ 1์„ ์ฝ๊ฒŒ ๋œ๋‹ค.

ํŒฌํ…€ ๋ฆฌ๋“œ์™€์˜ ์ฐจ์ด์  : ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ์กฐํšŒ๋Š” ํ–‰ ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ํŒฌํ…€ ๋ฆฌ๋“œ๋Š” ๋‹ค๋ฅธ ํ–‰์ด ์„ ํƒ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

๋”ํ‹ฐ ๋ฆฌ๋“œ(dirty read)

ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์ง€๋งŒ ์•„์ง '์ปค๋ฐ‹๋˜์ง€ ์•Š์€' ํ–‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž A๊ฐ€ ํฐ๋Œ์˜ ๋ณด์„ ๊ฐœ์ˆ˜ 100์„ 1๋กœ ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ์ด '์ปค๋ฐ‹๋˜์ง€ ์•Š์€' ์ƒํƒœ๋ผ๋„ ๊ทธ ์ดํ›„ ์‚ฌ์šฉ์ž B๊ฐ€ ์กฐํšŒํ•œ ๊ฒฐ๊ณผ๊ฐ€ 1๋กœ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

๊ฒฉ๋ฆฌ ์ˆ˜์ค€

SERIALIZABLE

  • ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰์‹œํ‚ค๋Š” ๊ฒƒ
  • ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๊ฐ™์€ ํ–‰์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋งค์šฐ ์—„๊ฒฉํ•œ ์ˆ˜์ค€์œผ๋กœ ํ•ด๋‹น ํ–‰์— ๋Œ€ํ•ด ๊ฒฉ๋ฆฌ์‹œํ‚ค๊ณ , ์ดํ›„ ํŠธ๋žœ์žญ์…˜์ด ์ด ํ–‰์— ๋Œ€ํ•ด ์ผ์–ด๋‚œ๋‹ค๋ฉด ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚  ํ™•๋ฅ ๋„ ๋งŽ๊ณ  ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€

REPEATABLE_READ

  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•œ ํ–‰์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰์•„์ฃผ์ง€๋งŒ ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ง‰์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ดํ›„์— ์ถ”๊ฐ€๋œ ํ–‰์ด ๋ฐœ๊ฒฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

READ_COMMITTED

  • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€
  • MySQL8.0, PostgreSQL, SQL Server, ์˜ค๋ผํด์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.
  • READ_UNCOMMITTED์™€๋Š” ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์€ ์ •๋ณด๋Š” ์ฝ์„ ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ์ปค๋ฐ‹ ์™„๋ฃŒ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์กฐํšŒ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•œ ํ–‰์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ์ˆ˜์ •ํ•œ ํ–‰์„ ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๊ฐ™์€ ํ–‰์„ ๋‹ค์‹œ ์ฝ์„ ๋•Œ ๋‹ค๋ฅธ ๋‚ด์šฉ์ด ๋ฐœ๊ฒฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

READ_UNCOMMITTED

  • ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€
  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ธฐ ์ด์ „์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ๋…ธ์ถœ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค.
  • ์ด๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•ด ๋˜๋„๋ก์ด๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ด๋‚˜, ๋ช‡๋ช‡ ํ–‰์ด ์ œ๋Œ€๋กœ ์กฐํšŒ๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ดœ์ฐฎ์€ ๊ฑฐ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ '์–ด๋ฆผ์žก์•„' ์ง‘๊ณ„ํ•˜๋Š” ๋ฐ๋Š” ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

4. ์ง€์†์„ฑ(durabilitiy)


์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ ํŠธ๋žœ์žญ์…˜์€ ์˜์›ํžˆ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์›๋ž˜ ์ƒํƒต๋กœ ๋ณต๊ตฌํ•˜๋Š” ํšŒ๋ณต ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ด๋ฅผ ์œ„ํ•ด ์ฒดํฌ์„ฌ, ์ €๋„๋ง, ๋กค๋ฐฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต

  • ์ฒดํฌ์„ฌ : ์ค‘๋ณต ๊ฒ€์‚ฌ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ์˜ค๋ฅ˜ ์ •์ •์„ ํ†ตํ•ด ์†ก์‹ ๋œ ์ž๋ฃŒ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•

  • ์ €๋„๋ง : ํŒŒ์ผ ์‹œ์Šคํ…œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜(commit)ํ•˜๊ธฐ ์ „์— ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ, ํŠธ๋žœ์žญ์…˜ ๋“ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ

๋ฌด๊ฒฐ์„ฑ


๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ, ์œ ํšจ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ
๋ฌด๊ฒฐ์„ฑ์ด ์œ ์ง€๋˜์–ด์•ผ DB์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐ’๊ณผ ๊ทธ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์‹ ๋ขฐ๊ฐ€ ์ƒ๊ธด๋‹ค.

์ข…๋ฅ˜

๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ

  • ๊ธฐ๋ณธํ‚ค๋กœ ์„ ํƒ๋œ ํ•„๋“œ๋Š” ๋นˆ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ*
  • ์„œ๋กœ ์ฐธ์กฐ ๊ด€๊ณ„์— ์žˆ๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ์ผ๊ด€๋œ ๊ฐ’์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ณ ์œ  ๋ฌด๊ฒฐ์„ฑ*
  • ํŠน์ • ์†์„ฑ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์กฐ๊ฑด์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ ๊ทธ ์†์„ฑ ๊ฐ’์€ ๋ชจ๋‘ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
  • NULL ๋ฌด๊ฒฐ์„ฑ*
  • ํŠน์ • ์†์„ฑ ๊ฐ’์— NULL์ด ์˜ฌ ์ˆ˜ ์—†๋‹ค๋Š” ์กฐ๊ฑด์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ ๊ทธ ์†์„ฑ ๊ฐ’์€ NULL์ด ๋  ์ˆ˜ ์—†๋‹ค๋Š” ์ œ์•ฝ ์กฐ๊ฑด์ด๋‹ค.

๋ฐ๋“œ๋ฝ(๊ต์ฐฉ ์ƒํƒœ)
๋ฝ : ํ•˜๋‚˜์˜ ํŠธ๋žœ์ ์…˜์ด ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†๋„๋ก ์ž„์‹œ๋กœ ๋ง‰์•„๋‘๋Š” ๊ฒƒ
๋™์‹œ์— ํŠธ๋žœ์žญ์…˜์ด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ชป ๊ณ ๋ฅด๋‹ค ์•„๋ฌด ์ƒํƒœ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค์ง€ ๋ชปํ•˜๊ณ  ๋ฐ๋“œ๋ฝ์„ ์ดˆ๋ž˜ํ•œ๋‹ค. ์ด๊ฐ€ ์ผ์–ด๋‚  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฉˆ์ถ”๊ฒŒ ๋œ๋‹ค.
ํŠธ๋žœ์žญ์…˜์˜ ์ปค๋ฐ‹ ์ฃผ๊ธฐ๋ฅผ ๋†’์ด๊ฑฐ๋‚˜, ์ ‘๊ทผ ์ˆœ์„œ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋งž์ถฐ์ค€๋‹ค. ๋ฐ๋“œ๋ฝ์˜ ๋นˆ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆœ ์žˆ์ง€๋งŒ ๋™์‹œ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.