728x90
noSQL 과 SQL의 차이
noSQL
RDB가 아닌 다른 형태의 데이터 저장과 처리를 지원하는 데이터베이스 시스템
- 유연성이 높아서 비구조적인 데이터, 다양한 형태의 데이터를 처리하기 용이하다.
- 대량의 데이터를 처리하는 데 뛰어난 성능을 가진다.
- ACID (원자성, 일관성, 고립성, 지속성) 특성을 보장하지 않을 수 있어 데이터 무결성이 보장되지 않을 수 있다.
- 복잡한 쿼리 작성이 어렵다.
- 데이터 모델링에 유연성이 있기 때문에 비교적 데이터 일관성 유지가 어렵다.
SQL
- 관계를 통해 데이터를 구조화하기 때문에 복잡한 쿼리 작성을 간단하게 할 수 있다.
- 스키마가 고정되어 있어 데이터 구조 변경이 어렵다.
- 대량의 데이터를 처리할 때 성능이 저하될 수 있다.
- 비구조적인 데이터를 다루는 데 적합하지 않다.
- SQL 기반의 관계형 데이터베이스를 사용하는 케이스
- 쇼핑몰: 상품 및 이용자 정보 등을 테이블 형태로 저장
- 은행: 이용자의 정보 및 잔액 등을 저장하여 관리
NoSQL 기반의 비관계형 데이터베이스를 사용하는 케이스
- SNS의 실시간 피드, 센서 데이터 등 대량의 실시간 데이터 처리시 사용
- 분산된 서버 환경에서 확장성을 중요시 하는 경우
트랜잭션의 4가지 특징
- Atomicity: 원자성
- 트랜잭션을 구성하는 연산 전체가 모두 정상 실행되거나 모두 취소되어야 한다
- Consistency: 일관성
- 시스템이 가진 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 한다
- Isolation: 격리성, 고립성
- 동시에 실행되는 트랜잭션은 서로 영향을 미치지 않아야 한다
- Durability: 영속성
- 성공된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 한다
정규화와 반정규화
- 정규화: 잘못 설계된 관계형 스키마를 쪼개어 바람직한 스키마로 만들어 가는 과정
- 반정규화: 성능 상승을 위해 고의로 정규화를 위배하는 방법(테이블 통합, 중복 테이블 추가 등)
데드락 (교착상태)
- 교착상태는 임계영역에 있는 공유자원 접근 시도 시, 접근 권한을 가질 수 없어서 무한정 대기하는 상태이다.
- 상호 배제, 점유와 대기, 환형 대기, 비선점 중 하나만 만족하지 않더라도 교착상태는 발생하지 않는다.
데이터 베이스 분산 전략 ( 복제, 페더레이션, 파티셔닝, 샤딩)
데이터베이스 분산 전략은 대규모의 데이터를 효율적으로 관리하고 처리하기 위한 방법들을 의미한다.
- 복제 (Replication): DB를 여러 개의 노드로 복사하는 전략이다.
- 동기식 복제와 비동기식 복제 두 가지 방법이 있다.
- 쓰기 작업의 경우 모든 복제본에 기록해야 하므로 쓰기 성능은 떨어진다.
- 페더레이션 (Federation): 데이터를 여러 개의 독립적인 데이터베이스에 분산하여 저장하고 처리하는 전략
- 각 DB는 독립적으로 운영되며 필요할 때마다 쿼리를 전달하고 결과를 통합한다.
- 데이터의 일관성은 어플리케이션에서 관리해야 한다.
- 파티셔닝 (Partitioning): 데이터를 논리적 또는 물리적으로 분할하여 여러 저장소에 나눠 저장하는 전략
- 파티셔닝은 데이터를 분산하여 병렬 처리를 가능케 하며, 성능 향상과 확장성을 제공한다.
- 샤딩 (Sharding): 데이터를 특정 기준에 따라 분할하고 각각을 별도의 물리적 저장소에 저장하는 전략
- 대규모 시스템에서 확장성을 확보하기 위한 방법으로 사용된다.
'CS' 카테고리의 다른 글
[Spring] Filter와 Interceptor (0) | 2023.11.20 |
---|---|
[Spring]Front Controller, Dispatcher Servlet (0) | 2023.11.16 |
[Network] websocket & stomp, 실시간 통신 (0) | 2023.11.07 |
[JPA] N+1 (0) | 2023.10.30 |
[JPA] ORM, JPA (1) | 2023.10.30 |