Computer Science/데이터베이스 4

CQRS 개요

Command and Query Responsibility Segregation : Command(명령)과 Query(쿼리) 책임 분리 직역하여 명령이라는 것과 쿼리라는 것의 책임을 분리한다는 것으로, 가장 핵심이 되는 말이다. CQRS가 등장하기 이전에 많은 아키텍처에서 다음과 같은 문제점을 볼 수 있었다. DB에서 데이터 조회 및 업데이트에 같은 데이터 모델을 사용 : 복잡한 어플리케이션에서는 유지보수가 어렵다. 읽기와 쓰기의 부하가 다름 : 쓰기 작업이 복잡할 경우 응답이 느려짐, 같은 데이터 동시 작업 시 데이터 일관성 문제 정보 조회 시 복잡한 쿼리들이 성능에 부정적 영향을 준다. >> 이에 '읽기'와 '쓰기'를 각기 다른 모델로 분석하는 CQRS를 도입하게 되었다. 명령을 통해 데이터를 쓰고,..

리더-팔로워 구조

* 이 글을 읽기 전에 어느 정도 DCD(데이터 중심 구조)에 대해 이해하고 오길 바람. 복제 : 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유지한다는 의미 복제가 필요한 이유 지리적으로 가깝게 유지해 지연 시간을 줄임 장애가 발생해도 지속적으로 동작하여 가용성 높임 장비의 수를 확충하여 읽기 처리량을 늘림 복제를 위한 알고리즘 Single Leader (단일 리더) 이 알고리즘은 하나의 리더 노드가 전체 복제본의 주도권을 가지고 있다. 리더는 쓰기 작업을 처리하고, 이를 팔로워에게 복제한다. 팔로워는 리더의 상태를 동기화하여 일관성을 유지한다. 읽기 작업은 주로 팔로워에서 처리되며, 리더의 부하를 줄이고 응답 시간을 최적화한다. 주로 일관성과 가용성을 균형있게 제공하며, 복제 관리가 비교적..

Primary Key, Foreign Key 차이

관계형 데이터베이스에서 핵심은 테이블 간 적절히 관계를 맺어주면서 데이터 중복을 최소화하여 구조를 짜임새 있게 만드는 것이다. Primary Key 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별할 수 있다. NULL값이 존재할 수 없다. 레코드의 값은 중복이 불가능하다. 테이블에는 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키) PK 생성 CREATE TABLE user { id int PRIMARY KEY } PK로 사용하기를 원하는 컬럼에 PRIMARY KEY 붙여준다. 단, 이 때 기본키의 값을 가진 컬럼은 중복값과 NULL값이 없어야 한다. 기본키를 설정해두면 해당 컬럼에 중복값을 INSERT하려고 할때 작동..