[Frontend] 데이터 베이스의 기초

박감자·2024년 11월 18일

?? : 데이터 베이스는 관계형, 비관계형 등이 있고 SQL을 통해 ...
감자: (졸면서 듣는 중) 데이터 관리는 역시 엑셀이군

-감기로 인해 살짝 상한 박감자-

데이터 베이스란 무엇인가?

Database란 데이터를 체계적으로 저장하고 관리하는 시스템

역할

  • 데이터를 안전하게 보관해야 한다
  • 빠르고 정확한 데이터 (검색 & 수정 가능)
  • 여러 사용자가 동시에 사용 가능
  • 데이터 무결성(정확성과 일관성 유지)과 보안 유지

종류

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

데이터를 Table 구조로 저장하여 table 간의 관계를 정의

특징:

  • 데이터를 행과 열로 구조화
  • SQL 언어를 사용해 데이터를 검색, 삽입, 수정, 삭제.
    SQL(Structured Query Language)는 데이터베이스에서 데이터를 관리(조회, 삽입, 수정, 삭제)하기 위해 사용되는 언어입니다.

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

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

특징:

  • 스키마가 없거나 유연함.
  • 데이터 중복 허용.
  • 수평적 확장이 쉬워 대규모 데이터 처리에 유리.

예시) MongoDB, Firebase

관계형 데이터 베이스 VS 비관계형 데이터 베이스

관계형 데이터 베이스

위에 설명한 것 같이 테이블 기반으로 정리를 하면, 여러 행과 열로 구성되어 있다. Primary keyForeign key를 사용해 데이터간의 관계를 정리한다. 관계형 데이터 베이스는 ACID 특성을 준수한다. 그리고 SQL을 사용해 데이터를 검색, 삽입, 수정, 삭제 할 수 있다.

ACID?
데이터베이스를 구축하려고 할때 지켜야 하는 속성

  1. 원자성 (Atomicity) : Transaction의 모든 작업이 성공적으로 완료되거나, 하나라도 실패하면 모든 작업이 취소되어야 한다는 원칙
  2. 일관성 (Consistency) : Transaction이 완료된 후 데이터베이스에서도 일관된 상태를 유지해야 한다.
  3. 격리성 (Isolation) : 여러 Transaction이 동시에 실행되더라도 서로 간섭하지 않고 독립적으로 처리 되어야 한다. (즉, 여러 사용자이여도 데이터가 꼬이면 안된다)
  4. 지속성 (Durability) : Transaction이 완료된 후에는 시스템 오류가 발생해도 그 결과가 데이터베이스에 영구적으로 저장되어야 한다.

비관계형 데이터 베이스

데이터를 문서, key-value, 그래프 등의 다양한 형태로 저장합니다. 고정된 스키마가 없어 데이터 구조 변경이 쉽고 유연합니다.

-> 스키마란 데이터 베이스에서 데이터의 구조와 설계를 정의하는 것! = 설계도
ACID의 특성을 부분적으로 준수하고 CAP 이론을 따라 성능과 확장성을 우선시할 수 있습니다.

CAP

  1. Consistency (일관성) : 모든 노드에 동일한 데이터가 적용되는지
  2. Availability (가용성) : 항상 응답 가능한지
  3. Partition tolerance (분산 허용성) : 네트워크 분산 상황에서도 데이터 접근이 가능한지

차이점

데이터 구조

위의 내용과 동일

확장성

  • RDB :

    • 데이터가 많아지면 서버 업그레이드가 필요
    • 수평 확장이 어렵고, 단일 서버 의존
  • NoSQL :

    • 서버를 추가하여 데이터 베이스를 확장할 수 있고 대규모 데이터와 트래픽 처리에 유리하다
    • 클라우드 기반 시스템에서 효과적이다.

데이터 처리 속도

  • RDB :
    • 복잡한 쿼리와 다중 테이블 조인이 필요한 상황에서 효율적.
    • 예: 특정 학생이 수강한 모든 과목과 성적을 검색.
  • NoSQL :
    • 단순한 데이터 검색 및 읽기/쓰기 작업이 빠릅니다.
    • 예: 소셜 네트워크에서 사용자의 최근 활동 로그를 빠르게 가져오기.

수직 확장 (Scale Out) VS 수평 확장 (Scale Up)

수직 확장 (Vertical Scaling)

  • 정의: 기존 서버의 성능을 업그레이드하여 데이터베이스의 처리 능력을 향상시키는 방식
    • 예를들어, CPU와 RAM이 더 많은 서버로 교체하거나, 기존 서버의 디스크 용량을 업그레이드.
  • 장점:
    • 기존 시스템을 그대로 사용하면서 성능을 강화할 수 있음.
    • 데이터 일관성을 유지하기 쉽고, 관리가 간단.
  • 단점:
    • 성능 향상이 하드웨어 한계에 의해 제한될 수 있음.
    • 고성능 장비는 비용이 많이 들 수 있음.

수평 확장 (Horizontal Scaling)

  • 정의: 여러 대의 서버를 추가로 배치하고 데이터와 작업을 분산 처리하여 성능을 향상시키는 방식.
    • 예를들어, 여러 대의 서버를 네트워크로 연결하여 작업을 나누어 처리.
  • 장점:
    • 거의 무제한으로 확장 가능.
    • 대규모 데이터나 트래픽을 처리하는 데 적합.
  • 단점:
    • 데이터 분산으로 인해 일관성을 유지하기 어려울 수 있음.
    • 시스템 설정 및 유지 관리가 복잡.

실무 적용을 위한 선택 기준

RDB

  • 데이터의 정확성과 무결성이 중요한 경우
  • 관계 데이터 모델이 필요한 시스템

NoSQL

  • 유연한 데이터 모델이 필요한 경우
  • 혹은 RDB를 사용하기 애매한 경우
  • 대규모 트래픽 처리와 실시간 데이터 처리가 필요한 시스템

관계형 데이터 베이스 기본 개념

  1. Entity : 데이터베이스에서 관리하고자 하는 객체
  2. Table : 데이터를 저장하는 구조화된 표
  3. Column : 테이블의 각 속성을 정의
  4. Row : 테이블에 저장된 하나의 데이터 record
  5. Primary Key : 각 행을 고유하게 식별하는 키.
  6. Foreign Key : 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 정의하는 키

데이터 관계

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

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

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

한 엔터티가 여러 엔터티와 연결

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

여러 엔터티가 서로 다수의 데이터를 참조하는 관계

Join Table

다대다 관계 (N 관계)가 필요하다! 데이터 중복 관리와 좐계 정리 유용하다

  1. 다대다 관계에서 필수
  2. 데이터 중복 방지
  3. 추가 정보 저장 용이
  4. 관계표현 간결화

마치며...

두 데이터 베이스에 대하여 자세히 알아본 시간으로, 정의를 너무 대략적으로만 알고 있었구나 싶은 내용이었다.
(그리고 감기기운이 심해지고 있다)

profile
코딩하는 감자

0개의 댓글