NoSQL

jin·2026년 3월 22일

NoSQL

Not Only SQL - 기존의 RDB가 가진 한계를 깨기 위해 나온 새로운 방식의 데이터베이스들을 통칭한다.

왜 NoSQL티 태어났을까?

RDB는 정해진 틀이 엄격하고 데이터의 무결성을 지키는데 목숨을 건다. 하지만 동시 접속 트래픽이 많은 환경에서는 오히려 RDB의 꼼꼼함이 독이 된다.
한대의 서버를 Scale-up하는 것에 한계가 있고, Scale-out하고 싶어도 RDB는 여러 대 사이에서 락을 걸고 쿼럼을 맞추기가 너무 무겁고 느리다.
정합성과 확장성 사이에서, 확장성을 극대화하기 위해 정합성의 일부를 의식적으로 포기한 시스템이 NoSQL이다.

Apache Cassandra

카산드라는 태어날 때부터 '서버 한 대로는 부족하다. 무조건 여러 대가 팀으로 움직인다'는 전제로 만들어진 데이터베이스이다.

  • 구조: 모든 서버는 동등한 권한을 가진다. master 서버가 따로 없어서 서버 한 두 대가 죽어도 시스템 전체에 아무런 타격이 없다.
  • 쓰기 최적화: WAL과 비슷한 원리로 , 디스크에 직접 쓰지 않고 메모리에 먼저 쓴 뒤 나중에 순차적으로 저장한다. 덕분에 쓰기 속도가 미친듯이 빠르다.
  • 쿼럼의 활용: 저장할 때 '몇 대의 서버에 복제되면 성공으로 칠까?'를 개발자가 직접 설정할 수 있다(ex. LOCAL_QUORUM)

    여러대의 서버가 동등하게 원형으로 모여서, 데이터를 골고루 나눠 갖고, 서로 복제본을 챙겨주며 절대 죽지 않는 시스템을 만드는 DB이다.

<동작 방식>
1. 파티션 키 (Partition Key): 첫 번째 목적지 찾기
데이터(예: user_id = 'merong')가 들어오면, 카산드라는 이 키를 해시 함수(Hash Function)라는 마법 상자에 넣는다.

입력: merong
출력: -152348721 (엄청나게 큰 숫자 중 하나)
역할: 이 숫자가 속한 범위를 관리하는 서버가 첫 번째 저장소(Primary Replica)가 된다. 예를 들어 -2억 ~ 0 사이는 1번 서버 담당이라면, 데이터는 일단 1번 서버로 간다.

2. 복제 (Replication): 옆집으로 복사하기
카산드라는 복제 계수(Replication Factor, RF)라는 설정값을 미리 알고 있다. 만약 RF = 3이라면:
  1단계: 파티션 키로 찾은 1번 서버에 데이터를 저장한다.
  2단계: 링(Ring) 모양의 구조에서 1번 서버의 시계 방향 바로 다음 서버(2번 서버)에 복사본을 보낸다.
  3단계: 또 그 다음 서버인 3번 서버에 마지막 복사본을 보낸다.

결과적으로: 하나의 데이터가 1번(원본), 2번(복제), 3번(복제) 서버에 나란히 저장된다.
AWS DynamoDB

AWS의 완전 관리형 key-value/document 스토어.

  • 구조: Partition Key & Sort Key
    -partition key : 데이터의 어느 물리적 창고에 넣을지 결정(ex. user_id)
    -sort key: 같은 파티션 키 안에서 데이터를 순서대로 정렬하는 키(ex. created_at)

DynamoDB는 데이터가 늘어나면 내부적으로 창고(partition)을 계속 쪼갠다.

1. 처음에는 partition 1개에 데이터를 다 넣는다
2. 데이터가 10GB가 넘거나, 요청량이 설정한 한계를 넘으면 창고를 2개로 쪼개고 파티션 키 범위에 따라 데이터를 나눠 담는다.
3. 이 과정을 무한히 반복한다. 그래서 데이터가 10TB가 되어도 성능이 떨어지지 않는다.
<파티션 분할 과정>
1. 임계치 도달: 1번 파티션이 10GB에 도달하거나, 설정한 RCU/WCU 성능 한계에 부딪힌다.
2. 새 창고 확보: AWS가 뒤에서 몰래 2번 파티션(새 서버)을 준비한다.
3. 데이터 이사 (Split): 1번 파티션에 있던 데이터를 해시 범위(Hash Range)에 따라 절반으로 나눈다.
예: 해시값이 0~50인 데이터는 1번에 남기고, 51~100인 데이터는 2번으로 옮긴다.
4. 완료: 이제 테이블은 2개의 물리적인 서버에 나누어 저장된 상태가 된다.
비교 항목Apache CassandraAWS DynamoDB
서비스 형태오픈소스 (설치형/관리형 선택)완전 관리형 (Serverless)
관리 부담높음 (서버 설치, 패치, 복제 직접 수행)매우 낮음 (AWS 자동 관리)
확장 방식노드(Node) 물리적 추가처리량(RCU/WCU) 수치 조절
복제 방식복제 계수(RF) 직접 설정 (보통 3)3개 가용 영역(AZ) 자동 복제
일관성 제어쿼럼(Quorum) 수치 미세 조정 (0~N)결과적/강한 일관성 중 선택
비용 모델서버 대수당 고정 비용 (24시간 가동)쓴 만큼 지불 (Pay-as-you-go)
특장점특정 클라우드 종속 없음 (어디서든 실행)AWS 생태계(Lambda 등)와 강력한 결합
profile
성장중

0개의 댓글