[Database] 데이터베이스 유형, 스케일링, 성능 최적화

원문 : [MEDIUM] System Design Interview: Mastering Databases

이 글은 시스템 디자인 인터뷰를 준비하는 이들을 대상으로 데이터베이스의 기본부터 세부 사항까지 다룹니다. 데이터베이스는 시스템 설계의 핵심으로, 데이터 저장, 검색, 조직화에 중요한 역할을 합니다. 여기서는 데이터베이스의 다양한 유형과 특징, 스케일링 기술, 성능 최적화 방법에 대해 설명합니다.

데이터베이스 유형

  1. 관계형 데이터베이스: PostgreSQL, MySQL, SQLite와 같이 테이블을 기본 데이터 저장 단위로 사용하며, SQL을 쿼리 언어로 사용합니다. 거래 처리, 복잡한 쿼리, 데이터 무결성 확보에 유리합니다.
  2. NoSQL 데이터베이스: MongoDB, Cassandra, Redis와 같이 고정된 스키마 없이 유연하게 사용할 수 있으며, 비구조화된 데이터 처리에 적합합니다.
  3. 인메모리 데이터베이스: Redis, Memcached와 같이 데이터를 메모리에 저장하여 빠른 데이터 접근을 가능하게 합니다. 주로 캐싱 및 세션 관련 데이터 저장에 사용됩니다.

ACID 속성

  • Atomicity(원자성): 모든 거래는 완전히 실행되거나 전혀 실행되지 않습니다.
  • Consistency(일관성): 거래 후 데이터베이스는 일관된 상태를 유지합니다.
  • Isolation(독립성): 각 거래는 독립적으로 작동합니다.
  • Durability(지속성): 데이터가 한 번 커밋되면 영구적으로 저장됩니다.

데이터베이스 스케일링

  • 수직 스케일링(스케일 업): 단일 서버의 성능을 향상시킵니다.
  • 수평 스케일링(스케일 아웃): 여러 대의 서버를 추가하여 리소스 풀을 확장합니다. 데이터 샤딩과 복제를 포함합니다.

데이터베이스 성능 향상

  • 캐싱: 자주 쿼리되는 데이터를 메모리에 저장하여 성능을 향상시킵니다.
  • 인덱싱: 자주 접근하는 컬럼에 대한 데이터베이스 인덱스를 사용하여 검색 시간을 단축합니다.
  • 쿼리 최적화: 쿼리를 간소화하고, 조인을 최소화하며, 일반적인 SELECT * 사용을 피합니다.

데이터베이스 설계에서의 보안 우선순위

  • 데이터는 저장 시와 전송 시 암호화되어야 합니다.
  • SQL 인젝션에 대비하여 준비된 문장을 사용해야 합니다.
  • 역할 기반 접근 제어를 구현하여 보안을 강화해야 합니다.

CAP 이론

  • 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance) 중 두 가지만 동시에 달성할 수 있다는 이론입니다. 애플리케이션의 요구 사항에 따라 선택해야 합니다.

이 글은 데이터베이스에 대한 이해가 시스템 디자인 인터뷰에서 중요한 한 조각임을 강조하며, 계속해서 탐구하고 학습할 것을 권장합니다.

핵심 요약

  • 데이터베이스는 시스템 설계의 핵심으로, 관계형, NoSQL, 인메모리 데이터베이스 등 다양한 유형이 있습니다.
  • ACID 속성은 데이터베이스의 효과적인 기능을 보장합니다.
  • 데이터베이스는 수직 또는 수평으로 스케일링할 수 있으며, 성능 최적화를 위해 캐싱, 인덱싱, 쿼리 최적화가 필요합니다.
  • 데이터베이스 설계에서 보안은 우선시되어야 하며, CAP 이론은 데이터베이스 결정에 있어 중요한 요소입니다.
이 글은 카테고리: Article 정리, Database에 포함되어 있습니다. 고유주소를 북마크하세요.

댓글 남기기