Recent Posts
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

개발자 박가나

[241118 TIL] 본캠프 34일차 ('뉴스피드' 프로젝트 2일차) 본문

내일배움캠프

[241118 TIL] 본캠프 34일차 ('뉴스피드' 프로젝트 2일차)

gnchoco97 2024. 11. 18. 20:52

데이터베이스란?

데이터를 체계적으로 저장하고 관리하는 시스템으로, 단순 파일 저장 방식과 달리 대량의 데이터를 효과적으로 관리하고 처리할 수 있는 기능을 제공한다.

  • 데이터를 안전하게 보관
  • 빠르고 정확하게 데이터 검색 및 수정
  • 여러 사용자가 데이터를 동시에 사용할 수 있도록 지원
  • 데이터의 무결성과 보안 유지

 

 

관계형 데이터베이스 (RDB)

데이터를 테이블 구조로 저장하고, 테이블 간의 관계를 정의한다.

  • 데이터를 행과 열로 구조화
  • Primary Key와 Foreign Key를 이용해서 데이터 간의 관계를 정의 및 유지
  • ACID 특성 준수
  • SQL 언어를 사용해서 데이터 CRUD

 

장점

  • 데이터의 무결성 및 일관성 보장
  • 표준화된 SQL 언어 사용
  • 복잡한 데이터 관계 처리 가능

 

단점

  • 유연성 부족
  • 확장성 제한

 

ACID 특성

관계형 데이터베이스의 트랜잭션이 안전하고 신뢰할 수 있도록 보장하는 4가지 속성이다.

  • Atomicity (원자성)
    • 트랜잭션의 모든 작업이 성공적으로 완료되거나, 하나라도 실패하면 모든 작업이 취소되어야 함
  • Consistency (일관성)
    • 트랜잭션이 완료된 후 데이터베이스는 항상 일관된 상태를 유지해야 함
  • Isolation (격리성)
    • 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않고 독립적으로 처리되어야 함
  • Durability (지속성)
    • 트랜잭션이 완료된 후에는 시스템 오류가 발생해도 그 결과가 데이터베이스에 영구적으로 저장되어야 함

 

 

비관계형 데이터베이스 (NoSQL)

고정된 테이블 구조 없이 데이터를 다양한 형식으로 저장한다.

  • 스키마가 없거나 유연
  • 데이터 중복 허용
  • 수평적 확장이 쉬워서 대규모 데이터 처리에 유리
  • ACID 특성을 부분적으로만 준수하고, CAP 이론에 따라 성능이나 확장성을 우선시

 

장점

  • 유연한 데이터 구조
  • 수평적 확장 용이
  • 빠른 데이터 처리

 

단점

  • 데이터 관계 정리 어려움
  • 표준화 부족
  • 일관성 부족

 

CAP 이론

  • Consistency (일관성)
    • 모든 노드에 동일한 데이터가 적용되어야 함
  • Availability (가용성)
    • 항상 응답 가능해야 함
  • Partition Tolerance (분산 허용성)
    • 네트워크 분산 상황에서도 데이터에 접근이 가능해야 함

 

 

수직 확장 (Scale Up)

기존 서버의 성능을 업그레이드하여 데이터베이스의 처리 능력을 향상시키는 방식이다.

 

장점

  • 기존 시스템을 그대로 사용하면서 성능을 강화할 수 있음
  • 데이터의 일광성을 유지하기 쉽고 관리가 간단함

 

단점

  • 성능 향상이 하드웨어의 한계에 의해 제한될 수 있음
  • 고성능 장비는 비용이 많이 들 수 있음

 

 

수평 확장 (Scale Out)

여러 대의 서버를 추가로 배치하고 데이터와 작업을 분산 처리하여 성능을 향상시키는 방식이다.

 

장점

  • 무제한으로 확장 가능함
  • 대규모 데이터나 트래픽을 처리하는데 적합함

 

단점

  • 데이터 분산으로 인해 일관성을 유지하기 어려움
  • 시스템 설정 및 유지 관리가 복잡함

 

 

데이터 관계

1 : 1 관계 (One-to-One Relationship)

하나의 엔터티가 다른 엔터티와 정확히 하나의 데이터만 연결된다.

 

1 : N 관계 (One-to-Many Relationship)

하나의 엔터티가 여러 엔터티와 연결된다.

 

N : M 관계 (Many-to-Many Relationship)

여러 엔터티가 서로 다수의 데이터를 참조한다.

 

중간 테이블이 필요한 이유

  • N : M 관계를 표현하기 위해 필수적
  • 데이터 중복 방지
  • 추가 정보 저장 용이
  • 관계 표현 간결화