본문으로 바로가기

BASE vs ACID , Index

category SKALABack-end, DB 6일 전
반응형

BASE 모델의 의미

BASE는 강한 일관성을 보장하는 대신 가용성과 확장성을 우선하는 모델!!

  • Basically Available (기본적 가용성) : 일부 노드에 장애가 발생해도 전체 시스템은 계속 동작함
  • Soft State (소프트 스테이트) : 데이터가 일정 시간 동안 불완전할 수 있음
  • Eventually Consistent(최종적 일관성) : 즉각적으로 데이터 일관성을 보장하지 않지만, 일정 시간이 지나면 모든 노드에 데이터가 동일해짐.
비교 항목 BASE  ACID
일관성 보장 일정 시간 후 즉각적
트랜잭션 지원 약한 트랜잭션 트랜잭션(ACID) 보장
확장성 분산 환경에서 높은 확장성을 가짐 확장이 어려움(일반적으로 수직 확장)
데이터 업데이트 점진적으로 반영 모든 노드에 즉시 반영
적용 대상 수평 확장이 필요한 경우(ex. 글로벌 서비스), 빅데이터 처리, 일관성이 약간 늦어도 문제가 없는 경우
(SNS, 로그 시스템)
전통적인 RDBMS, 금융 시스템, 강한 데이터 무결성이 필요한 시스템,
병원 기록, 회계 시스템 등 데이터 정합성이 중요한 경우

 

 

인덱스

  • 기본 원리
    • 특정 컬럼의 값과 해당 값이 저장된 위치(레코드)를 따로 저장하는 구조
    • 검색 시 해당 인덱스를 먼저 찾은 후 관련 데이터 위치로 이동하여 데이터셋 확인
    • 검색 속도가 빨라지고 성능이 향상됨
  • 사용 대상
    • WHERE 절에서 자주 검색하는 컬럼
    • ORDER BY나 GROUP BY를 자주 사용하는 컬럼
    • JOIN 시 연결되는 컬럼 (기본키-외래키 관계)

Clustered Index

  • 테이블의 실제 데이터가 인덱스 순서대로 정렬되는 형태(즉, 인덱스 자체가 데이터 그 자체)
  • 한 테이블에 하나만 존재 가능
  • 검색 속도 빠름
  • 자동 정렬
  • 삽입 / 삭제 시 속도 저하 가능
  • Primary Key를 선언하면 자동으로 Clustered Index 생성

Non - Clustered Index

  • 실제 데이터와 인덱스가 따로 저장
    • 인덱스를 통해 데이터의 위치(주소)를 먼저 찾고, 그 다음 데이터를 조회
  • 한 테이블에 여러 개 생성 가능
  • 데이터 정렬 불가
  • 검색 속도가 클러스터형보다 느릴 수 있음
  • 데이터 삽입 / 삭제 시 성능 영향이 적음
  • CREATE INDEX idx_name ON students(name);
    • name 필드를 Non-Clustered Index로 설정
반응형