728x90

# 데이터베이스 원칙

1. data integrity (무결성)
데이터가 전송, 저장, 처리되는 과정에서 변경되거나 손상되지 않아야 함
완전성, 정확성, 일관성을 유지해야 함을 의미

2. data reliability (안전성)
데이터를 보호할 수 있는 방법인증/인가되지 않은 사용자로부터 데이터를 보호할 수 있어야 함
고장이 나지 않아야 하며, 고장이 나더라도 데이터의 변경/유실이 없어야 함

3. scalability (확장성)
데이터 양이나 사용자가 늘어날 때 대처 가능해야 함

# 관계형 데이터베이스의 트랜잭션 4원칙 (ACID)

1. Atomicity (원자성)
all or nothing
하나로 묶인 작업은 전부가 성공하거나 전부가 실패해야함을 의미 (일부만 성공하면 안됨)

2. Consistency (일관성)
DB에 저장된 데이터는 일관성이 있어야 함
트랜잭션 수행 전후로도 항상 일관된 데이터구조 및 제약을 가져야 함을 의미

3. Isolation (독립성)
각 트랜잭션은 독립된 상태여야 함
트랜잭션이 동시에 여러 개 실행되더라도 서로 간에 영향을 주지 않아야 함을 의미

4. Durability (지속성)
DB에 적용된 상태는 계속해서 지속되어야 함
DB가 임의의 사고로 중단되는 경우에도 영구적이어야 함을 의미 (데이터의 유실/변경이 없어야 함)

A가 B에게 송금을 한 경우 A계좌에서는 돈이 빠져나갔는데 B계좌에 입금이 되지 않은 경우가 절대 발생해서 안됨

이처럼 금융권 같이 데이터의 일관성이 반드시 보장되어야 하는 경우에 ACID 원칙을 따름

# 비관계형 데이터베이스의 원칙 (BASE)

1. Basically Available
기본적으로 사용 가능하고, 주서버가 안되더라도 백업서버는 동작해야함

2. Soft-state
데이터를 관리하지 않으면 사라질 수 있음

3. Eventually consistency
점차적으로 데이터가 일관성을 가지게 됨 (항상 일관적이지 않을 수 있음)

페이스북의 경우 내가 게시글을 작성했을 때 다른 사람이 바로 볼 수 있으면 좋지만, 시간이 조금 지난 후에 게시글을 볼 수 있어도 크게 문제가 없음

이처럼 현재 정확한 데이터가 아니더라도 사용자가 원하는 기능을 언제든지 사용할 수 있도록 하는 것이 중요한 경우 BASE 원칙을 따름

# CAP 이론

Consistency : 특정 시점에서 반드시 동일한 데이터가 존재하는 성질
Availability : 항상 이용 가능한 성질 (하나의 서버가 다운되더라도 다른 서버에서 처리)
Partition Tolerance : 서버를 늘려서 확장할 수 있는 성질

1. RDBMS

  • RDBMS에서는 데이터의 일관성과 안정성을 가장 중시함
    • C 최대화
    • C 확보를 위해서 데이터를 한 곳에서 관리하여 P를 달성하기 어려움
    • C를 확보하기 위하여 배타적 제어, 락처리로 인해 병목이 되기도 함

2. NoSQL

  • Availability와 Partition Tolerance를 중시하는 경우가 많음
    • 스케일 아웃을 통한 성능 향상으로 인하여 C를 달성하기 어려움 (많은 서버에 데이터가 흩어져 있으므로)
    • C가 약하기 때문에 어플리케이션에 일관성 및 일치성을 확인하는 로직을 두는 것을 권장함
    • P 확보를 위한 서버 간 데이터 복제가 병목지점이 되기도 함
728x90

'DataBase' 카테고리의 다른 글

데이터베이스의 종류  (0) 2023.02.22

+ Recent posts