05 DB 구조와 유형

코이그·2023년 7월 1일

CS 스터디

목록 보기
4/4

데이터베이스

  • 체계화된 데이터의 모임.
  • 효율적인 데이터 저장/검색/수정/삭제 등을 지원하며 동시에 여러 사용자가 접근할 수 있음.

데이터베이스 시스템

  • DB를 관리/조작하는 데 사용되는 소프트웨어.
  • 데이터의 구조화/저장/검색/수정/삭제 등을 효율적으로 수행할 수 있도록 지원함.

주요 구성 요소

  1. 데이터베이스 관리 시스템(DBMS)
    • DB를 관리하는 소프트웨어.
    • 데이터의 구조, 구성, 접근 권한, 무결성 등을 관리.
    • DB에 대한 작업을 수행할 수 있는 인터페이스 제공.
    • 예) Oracle, MySQL, PostgreSQL
  2. 데이터베이스
    • 체계화된 데이터의 집합.
      DBMS에 의해 관리/조작됨.
    • 테이블(==릴레이션), 레코드(==튜플,로우), 필드(속성,컬럼) 등의 구조로 구성됨.
    • 데이터의 지속성 및 일관성 보장, 동시 접근 보장
  3. 데이터 모델
    • 데이터의 구조와 관계의 표현방법 정의.
    • 개념적인 데이터 구조를 추상화하여 표현함.
    • 주요 데이터 모델: 관계형 데이터 모델, 객체지향 데이터 모델, 계층형 데이터 모델, 네트워크 데이터 모델.

DBMS 언어 3종류

  1. 데이터 정의어 (Data Definition Language)
    • 데이터베이스 스키마 정의
    • 데이터 구조 생성(create table)/수정(alter table)/삭제(drop table), 특정 애트리뷰트 위에 인덱스 정의 (create index)
  2. 데이터 조작어 (Data Manipulation Language)
    • 데이터 조회/변경/삽입/삭제
    • select, update, insert, delete
  3. 데이터 제어어 (Data Control Language)
    • 트랜잭션 명시 및 권한 부여/취소

데이터베이스 유형

관계형 데이터베이스

  • 데이터를 테이블 형태로 구성.
  • 테이블 간의 관계를 설정하여 데이터 저장/관리/조회.

특징

  • 테이블
    • 데이터가 저장되는 곳.
    • 행(레코드)과 열(필드)로 구성.
  • 관계
    • 테이블 간의 관계 설정. 데이터의 무결성/일관성 유지 가능.
    • One-to-One, One-to-Many, Many-to-Many.
  • 기본 키
    • 레코드의 고유 키.
    • null 값 x
    • 유일값
  • 외래 키
    • 다른 테이블과의 관계를 나타내는 필드.
    • 다른 테이블의 기본 키와 매칭되어 데이터 무결성과 관계를 유지하는 데 사용됨.

NoSQL 데이터베이스

Not Only SQL.

  • 대량의 분산 데이터 처리
  • 확장성, 성능, 유연성

특징

  1. 비구조적 모델
    • 테이블 x / 스키마 x. but 다양한 데이터 모델을 사용하여 데이터 저장. (예: key-value, graph db, document db 등)
  2. 수평적 확장성
    • 대규모 데이터 처리에 용이
    • 데이터베이스 클러스터를 구성하고 데이터를 분산하여 처리함으로써 처리량을 증가시킬 수 있음.
  3. 유연한 스키마
    • 데이터를 저장할 때 사전에 스키마 정의 필요 x
    • 필요에 따라 동적으로 데이터 구조 변경 가능
  4. 빠른 읽기/쓰기
    • 분산 아키텍처, 메모리 기반 데이터 저장 등의 기술 덕분에 성능 개선

주요 유형

  1. Key-value store: 데이터가 키-값 쌍으로 저장됨.
    • Redis, Amazon DynamoDB 등
  2. 컬럼 패밀리: 테이블과 유사한 구조. 각 컬럼은 행 단위로 저장됨.
    • Cassandra, HBase
  3. 문서 데이터베이스: JSON, XML 등의 문서 형태의 데이터 저장.
    • MongoDB, CouchDB
  4. 그래프 데이터베이스: 노드와 엣지로 구성된 그래프 형태의 데이터 저장. 관계 쿼리 효율적.
    • Neo4j, Amazon Neptune

RD vs. NoSQL?

RD

장점

  1. 데이터의 일관성 보장 / ACID 트랜잭션을 지원하여 데이터의안정성 유지 가능
  2. 데이터 간의 관계의 명확한 정의/관리 가능 / 복잡한 쿼리 수행 가능
  3. 정형화된 데이터에 적합 / 정교한 데이터 구조 다루는데 유용

단점

  1. 수직적 확장에 제약 -> 대규모 데이터 처리의 한계
  2. 번거로운 스키마 변경 -> 유연성 부족
  3. 대량의 데이터 / 유연한 데이터 모델 필요한 경우 -> 성능 저하

NoSQL

장점

  1. 수평적 확장 용이 -> 대규모 데이터 처리에 적합.
  2. 유연한 스키마 -> 동적 데이터 구조에 대응 용이.
  3. 빠른 읽기/쓰기 -> 효과적인 분산 데이터 처리.
  4. 다양한 데이터 모델 제공 -> 다양한 유형의 데이터 처리.

단점

  1. 데이터 일관성이 상대적으로 낮음 -> 일관성보다는 가용성과 성능에 초점 (BASE 원칙)
  2. 데이터 간의 관계 명시 x -> 복잡한 쿼리 작업 어려움
  3. NoSQL DB 간의 표준화된 쿼리 언어 x -> 벤더마다 쿼리 언어 다름
profile
COYG🔴⚪

0개의 댓글