Database

mangez_js·2024년 12월 23일

Study

목록 보기
31/47

데이터베이스

데이터베이스를 사용하는 이유?

  1. 데이터 관리 효율성 : 데이터를 체계적으로 저장하고 관리.
  2. 데이터 중복 최소화 : 데이터 일관성을 유지하며 저장공간 절약.
  3. 보안성 : 접근 권한을 통해 데이터 보호
  4. 데이터 통합 : 여러 애플리케이션에서 일관된 데이터 제공
  5. 확장성과 성능 : 대용량 데이터 처리 및 분석에 적합

데이터베이스 성능

  • Query Optimization : 쿼리 실행 계획 최적화
  • Index 사용 : 검색 성능 향상
  • Database Partitioning : 데이터 분할로 병렬 처리 지원
  • Connection Pooling : 연결 효율성 향상

Index

Index란 무엇인가?

  • 데이터 검색 속도를 빠르게 하기 위해 테이블 내 데이터의 위치를 저장한 구조.
  • 책의 목차와 같은 역할 수행

Index의 자료구조

  1. B-Tree : 대부분의 RDBMS에서 사용하는 기본 자료구조
  2. Hash Table : 특정 검색에 적합한 해시 기반 구조
  3. Bitmap Index : 대량의 데이터에서 특정 조건 검색에 유리

Primary Index VS Secondary Index

  • Primary Index : 기본 키(Primary Key)에 기반한 고유 인덱스
  • Secondary Index : 기본 키가 아닌 다른 컬럼에 설정된 인덱스

Composite Index

  • 두 개 이상의 컬럼을 결합하여 만든 인덱스
  • 다중 조건 검색에 효과적

Index의 성능과 고려해야 할 사항

  • 장점 : 데이터 검색 성능 향상
  • 단점 : 추가 저장공간 필요, 쓰기 작업(INSERT/UPDATE/DELETE) 속도 저하
  • 고려 사항 : 자주 사용되는 검색 조건에 적합한 인덱스를 설계

정규화

탄생 배경

  • 데이터 중복 제거와 무결성 확보를 위해 탄생

정규화란 무엇인가?

  • 데이터를 체계적으로 구성하여 중복을 줄이고 데이터 무결성을 유지하는 과정

종류

  1. 제1정규화(1NF) : 모든 컬럼의 값이 원자값이어야 함
  2. 제2정규화(2NF) : 부분 종속성 제거
  3. 제3정규화(3NF) : 이행적 종속성 제거
  4. BCNF : 후보 키에만 종속

장단점

  • 장점 : 데이터 중복 제거, 저장공간 절약, 무결성 유지
  • 단점 : 복잡한 설계, 성능 저하 기능

Transaction

트랜잭션이란 무엇인가?

  • 데이터베이스에서 하나의 논리적 작업 단위를 구성하는 명령어 집합

트랜잭션과 Lock

  • Lock : 트랜잭션 간 데이터 충돌 방지를 위한 메커니즘
  • 종류 : Shared Lock, Exclusive Lock

특성(ACID)

  1. Atomicity : 트랜잭션은 모두 수행되거나 모두 취소됨.
  2. Consistency : 트랜잭션 완료 후 데이터 일관성 유지
  3. Isolation : 트랜잭션 간 간섭 방지
  4. Durability : 완료된 트랜잭션의 결과는 영구 저장

트랜잭션을 사용할 때 주의할 점

  • 교착상태 방지, 적절한 Isolation Level 설정

교착상태

교착상태란 무엇인가?

  • 두 개 이상의 트랜잭션이 서로 자원을 대기하며 무한 대기에 빠지는 상태

교착상태의 예(MySQL)

  • 트랜잭션 A가 Row1을 잠그고 Row2를 대기하는 동안, 트랜잭션 B가 Row2를 잠그고 Row1을 대기.

교착 상태의 빈도를 낮추는 방법

  1. 트랜잭션의 순서 정의
  2. 잠금 범위 최소화
  3. 타임아웃 설정

Statement VS PreparedStatement

  • Statement : 단순 쿼리 실행
  • PreparedStatement : 쿼리를 미리 컴파일하여 재사용, SQL Injection 방지 효과

NoSQL

스키마가 고정되지 않고, 관계형 데이터베이스가 아닌 방식으로 데이터를 저장

CAP 이론

  1. 일관성(Consistency) : 모든 노드가 같은 데이터를 조회
  2. 가용성(Availability) : 모든 요청에 응답
  3. 네트워크 분할 허용성(Partition Tolerance) : 네트워크 분할에도 시스템 작동

저장방식에 따른 분류

  1. Key-Value Model : Redis, DynamoDB
  2. Document Model : MongoDB, CouchDB
  3. Column Model : Cassandra, HBase

0개의 댓글