728x90
반응형
샤딩에서 분산 트랜잭션을 관리하는 방법은 여러 가지가 있습니다. 대표적인 방법으로는 다음과 같은 것들이 있다:
- Two-Phase Commit (2PC):
- Prepare Phase: 모든 샤드에 트랜잭션 준비 요청을 보낸다. 모든 샤드가 준비되었다고 응답하면 다음 단계로 진행한다.
- Commit Phase: 모든 샤드에 커밋 요청을 보낸다. 만약 어떤 샤드에서라도 실패하면 롤백 요청을 보낸다.
- Three-Phase Commit (3PC):
- CanCommit Phase: 모든 샤드에 트랜잭션을 커밋할 수 있는지 물어본다.
- PreCommit Phase: 모든 샤드가 커밋 가능하다고 응답하면, 프리커밋 요청을 보낸다.
- DoCommit Phase: 모든 샤드에 커밋 요청을 보낸다.
- Sagas:
- 트랜잭션을 여러 개의 작은 트랜잭션으로 나누고, 각 트랜잭션이 성공하면 다음 트랜잭션을 실행한다.
실패 시에는 보상 트랜잭션을 실행하여 롤백한다.
- 트랜잭션을 여러 개의 작은 트랜잭션으로 나누고, 각 트랜잭션이 성공하면 다음 트랜잭션을 실행한다.
- Distributed Locking:
- 분산 락을 사용하여 트랜잭션이 동시에 실행되지 않도록 한다.
- Eventual Consistency:
- 즉각적인 일관성을 포기하고, 시간이 지나면서 데이터가 일관성을 가지도록 한다.
각 방법은 장단점이 있으며, 시스템의 요구사항에 따라 적절한 방법을 선택해야 한다.
- 끝 -
728x90
반응형
'DB > Postgresql' 카테고리의 다른 글
TOAST(The Oversized-Attribute Storage Technique) 메커니즘 (0) | 2024.08.23 |
---|---|
샤딩에서 데이터 동기화 메커니즘 및 장애조치 (0) | 2024.08.21 |
RDB 정규화 (0) | 2024.08.21 |
샤딩에서의 SAGA 패턴 (0) | 2024.08.21 |
샤딩을 구현할 때 고려해야할 사항 정리 (0) | 2024.08.21 |