데이터베이스 관련 개념 정리

haruceki·2025년 1월 6일
0

키워드 : RDB, NoSQL, 정규화, 인덱스, 트랜잭션, ACID 특성

  1. RDB와 NoSQL DB의 차이점
    RDB란 관계형 데이테베이스로, 데이터를 테이블 형식으로 저장하며 행(레코드)과 열(속성)으로 구성된다. 엄격한 스키마(정해진 구조)를 따라야 하며 SQL을 사용한다.

    • 장점 : 복잡한 쿼리 처리 가능, 데이터 무결성 보장, 오래된 표준으로 광범위한 도구와 자원이 존재
    • 단점 : 확장성 제한, 유연성 부족
    • 사용 : 금융 시스템, ERP, CRM, 전자상거래 등 데이터 일관성이 중요한 경우

    NoSQL이란 not only sql이란 뜻으로 다양한 형식(문서, 키-값, 그래프, 컬럼 기반)으로 데이터를 저장하며 테이블 구조를 따르지 않는다. 스키마의 유연성이 있고 수평적 확장이 쉽다.

    • 장점 : 확장성, 속도, 유연성
    • 단점 : 일관성 부족, 제한된 쿼리 기능, 성숙도 부족
    • 사용 : 소셜 네트워크, IoT, 로그 분석, 채팅, 추천 시스템 등 빠른처리와 유연성이 중요한 경우
  2. 데이터베이스에서 인덱스를 사용하는 이유와 인덱스가 성능에 미치는 영향
    인덱스는 데이터를 빠르게 검색하고 효율적으로 정렬하기 위해 사용된다.

    → 고빈도 검색 컬럼, 대량 데이터 처리, 읽기 중심 시스템일 경우 인덱스를 사용한다.

    • 성능 향상 : 읽기 작업 속도 증가, 범위 조회 효율화, join tjdsmd rotjs
    • 성능 저하 : 쓰기작업(insert, update, delete) 비용 증가, 추가적인 저장 공간 필요, 과도한 인덱스의 관리 비용 증가
  3. 데이터베이스 정규화(Normalization)와 역정규화(Denormalization)의 차이점

    • 정규화 : 데이터의 중복을 최소화하고 데이터의 무결성을 보장하기 위해 데이터베이스를 구조화하는 과정
    • 역정규화 : 조회 속도 향상 등 성능 최적화를 위해 정규화된 데이터베이스를 의도적으로 중복을 허용하거나, 일부 테이블을 병합하여 데이터를 다시 구조화하는 과정
  4. 트랜잭션(Transaction)과 ACID 특성
    트랜잭션이란 하나의 논리적인 기능을 수행하기 위한 작업의 단위이자, 쪼갤 수 없는 업무의 최소 단위이다.

    • Atomicity(원자성) : 트랜잭션 내의 작업들이 모두 성공하거나 모두 실패해야 함을 보장. All or nothing
    • Consistency(일관성) : 트랜잭션 이후 데이터베이스는 항상 일관된 상태를 유지해야 한다.
    • Isolation(고립성) : 여러 트랜잭션이 동시에 실행되더라도, 각각의 트랜잭션이 독립적으로 실행되는 것.
    • Durability(지속성) : 트랜잭션이 성공적으로 완료되면 그 결과는 시스템 오류가 발생하여도 영구적으로 저장된다.
  5. 데이터베이스에서 JOIN의 개념과 사용 사례
    join은 두개 이상의 테이블을 연결하여 하나의 결과 테이블로 만드는 것을 의미하며, 연관된 데이터를 함께 조회시 이용

    • inner join : 교집합. 두 테이블에서 공통되는 키 값을 가진 데이터만 반환
    • left (outer) join : 왼쪽 테이블의 모든 데이터를 반환, 오른쪽 테이블에 일치하는 데이터가 없으면 null로 채움
    • full outer join : 합집합
    • cross join : 두 데이블간의 모든 조합의 데이터를 반환
    • self join : 자기 자신과의 join.
  6. 외래 키(Foreign Key)와 참조 무결성(Referential Integrity)

    • 기본키 : 고유한 아이디를 제공하여 각 레코드를 식별하는 키
    • 외래키 : 두개의 테이블을 연결시 사용되는 키로, 부모 테이블의 기본키를 참조함

    외래키가 포함된 테이블을 자식 테이블이라고 하며 외래키 값을 제공하는 테이블을 부모테이블이라고 한다.

    외래키 값은 null이거나 부모 테이블의 기본키 값과 동일해야 한다. (참조 무결성 제약조건)

    • 무결성 : 데이터베이스에서 데이터의 정확성과 일관성을 유지하는 것
    • 무결성 제약조건 : 데이터베이스의 정확성과 일관성을 보장하기 위해 설정되는 조건
      • 개체 무결성 : 각 릴레이션의 기본키를 구성하는 속성은 null이나 중복된 값을 가질 수 없다. 즉 기본키는 유일하고 빈 값을 가질 수 없다.
      • 참조 무결성 : 외래키 값은 null이거나 참조하는 릴레이션의 기본키 값과 동일해야 한다. 즉 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
      • 도메인 무결성, 고유 무결성, null 무결성, 키 무결성 등이 있다.
  7. 데이터베이스에서 발생할 수 있는 데드락(Deadlock)을 방지하는 방법

    • 데드락 : 다중 프로세스나 스레드가 서로의 자원을 기다리며 무한정 대기하는 현상
    • 발생 4가지 필수 조건 : 상호 배제, 점유와 대기, 비선점, 순환대기
    • 방지 방법 : 예방, 회피(대표-은행가 알고리즘), 탐지 및 복구, 무시
  8. 데이터베이스 샤딩(Sharding)
    대규모 분산 데이터베이스 시스템에서 데이터를 수평으로 분할하여 여러 서버에 분산 저장하는 기술.

    → 데이터베이스의 부하를 여러 서버로 분산하여 전체 데이터베이스 시스템의 처리량과 성능을 향상시킨다.

    • 샤드 : 작고 관리 가능한 단위
  9. 데이터베이스의 파티셔닝(Partitioning)과 수평/수직 파티셔닝의 차이점
    데이터베이스 테이블을 작은 단위로 나누는 방법이다.
    성능 향상, 확장성, 관리 용이성, 가용성 증가를 위해서 파티셔닝을 적용한다.

    • 수평 파티셔닝 : 테이블의 행을 기준으로 데이터를 나눈다. → 대량 데이터에서 읽기/쓰기 성능이 향상됨
      • 예시 : 사용자를 지역별로 나누어 저장
    • 수직 파티셔닝 : 테이블의 열을 기준으로 데이터를 나눈다. → 특정 열에 대한 접근 빈도가 높을때 효율적
      • 예시 : 고객 정보(기본 정보)와 비밀번호(민감 정보)를 분리하여 저장
profile
희망도 절망도 없이 매일 코딩을 한다.

0개의 댓글