˙리플리케이션 : Replication
여러 개의 DB를 권한에 따라 수직적인 구조(Mater-Slave 관계)로 구축하는 방식으로, Master는 쓰기 작업만 처리하고, Slave는 읽기 작업만 처리한다. 비동기 방식으로 노드들 간의 데이터를 동기화한다. 순서상으로 즉, Master 노드에 쓰기 Transaction 수행 Master 노드에 데이터를 저장한 후에 Transcation에 대한 Log를 기록 → Slave 노드의 I/O Thread는 Master 노드의 Log(BIN Log*)를 파일(Replay Log*)에 복사 → Slave 노드의 SQL Thread는 파일(Replay Log)을 한 줄씩 읽으면서 데이터를 저장한다.
Replication(리플리케이션)은 Master-Slave 간 데이터 무결성 검사를 하지 않는 비동기 방식으로 데이터 동기화한다. 따라서, 성능을 높일 수 있고, 비동기 방식으로 사용되기 때문에 지연에 대한 부담이 상대적으로 적지만, 노드들 간의 데이터 동기화가 보장되지 않아 일관성이 다소 떨어질 수 있으며, 복구 또는 대처가 어려울 수 있다.
˙클러스터링 : Clustering
여러 개의 DB를 수평적인 구조로 구축하는 방식으로, 분산 환경을 구성하여 Single Point Of Failure*와 같은 문제를 해결할 수 있는 Fail Over 시스템을 구축하기 위해 사용한다. 동기 방식으로 노드들 간의 데이터를 동기화한다.
순서상으로 즉, 1개의 노드에 쓰기 Transaction이 수행된 후에 Commit 실행 → 실제 디스크에 내용을 쓰기 전에 다른 노트로의 데이터 복제를 요청 → 다른 노트에서 복제 요청을 수락한 후 디스크에 쓰기 시작한 후 실제 디스크에 저장
Clustering(클러스터링)은 DB 간 데이터 무결성 검사를 하는 동기 방식으로 데이터 동기화한다. 따라서, 노드들 간의 데이터를 동기화하여 일괄성 있는 데이터를 보유하고, 특정 노드가 다운되어도 다른 노드로 운영 가능하다. 단, 여러 노드들 간의 데이터 동기화에 대한 메모리 작업이 필요하여 쓰기 성능이 떨어지고, 스케일링에 한계가 있다.
* BIN Log : Binary Log로 데이터베이스, 오브젝트 등의 갱신(변화)이 있을 시 그 변화된 이벤트를 기록하는 이진 파일
* Replay Log : 로그 재생으로, Exchange에서 발생하는 모든 이벤트를 기록할 수 있으며, 해당 로그파일을 통하여 반복적으로 사용(재생)
* Single Point Of Failure : 단일 장애점으로, 시스템 구성 요소 중에서 동작하지 않으면 전체 시스템이 중단되는 요소(단일 고장(실패)점)
'끄적대기' 카테고리의 다른 글
[Chapter 1] NodeJS (0) | 2022.03.24 |
---|---|
화이트박스 테스트와 블랙박스 테스트 (0) | 2022.03.24 |
MSA : Micro Service Architecture (0) | 2022.03.24 |
Cookie vs Web Storage (0) | 2022.03.24 |
Python Lambda & Lambda Function (0) | 2022.03.24 |