Post

CS - 6. DBMS의 기능과 종류

CS - 6. DBMS의 기능과 종류

Sparta 내일배움캠프 학습으로, CS강의에 대한 공부를 위한 필기입니다.

01. DBMS 정리


  • DBMS : 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 SW 프로그램

API : Application Programming Interface

  • DBMS 용어
    • 튜플(Tuple) : ‘튜, 카, 행’, 릴레이션에서 중복되는 값을 가질 수 없음, Cardinality

    • 어트리뷰트(Attribute) :’열, 차, 속’, Degree

    • 릴레이션(Relation = Table)
      • 관계형 DB에서 정보를 구분하여 저장하는 기본 단위
    • 키(Key)
      • 테이블에서 행의 식별자로 이용되는 테이블의 열을 의미

      • 식별자(Identifier) : 여러 개의 집합(인스턴스)체를 담고 있는 하나의 테이블에서 각각을 구분할 수 있는 논리적인 이름, 개념이며 이 구분자를 식별자라고 함.
      • 주키(PK) : 무조건 1개 또는 1쌍, 현재 테이블에서 행을 식별하는 식별자
      • 외래키(FK) : 여러개, 현재 테이블과 연관되어있는 외부 테이블과 연관된 행을 식별하는 식별자
      • 도메인(Domain) : 하나의 어트리뷰트가 취할 수 있는 같은 타입의 원잣값들의 집합 ex) 성별 어트리뷰트의 도메인은 ‘남’과 여’의 데이터 값만 입력 가능, 나이 어트리뷰트의 도메인은 ‘숫자’의 값만 입력 가능


02. DBMS 기능


2-1. DBMS 요구사항

  • DBMS는 DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능
    • 1️⃣ 효율적
      • 동일한 데이터가 저장되는 것을 방지하는 중복 제어기능

      • 무결성 제약 조건을 정의/검사하는 기능

    • 2️⃣ 직관적
      • 서로 다른 데이터 간의 관계를 표현해주는 관계 표현

      • 편리한 인터페이스 제공

    • 3️⃣ 안전
      • 접근하는 사용자마다 다른 권한을 주는 접근통제 기능

      • 데이터가 잘못 수정/삭제 되었을 경우 백업 기능


2-2. Transaction(트랜잭션)

  • DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
    • ex)회원가입 절차 = 가입 트랜잭션, 결제 절차 = 결제 트랜잭션
  • 트랜잭션은 DB 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용
    • 회원가입, 결제는 작업 단위로 병행(따로) 처리

    • 회원가입 처리 중 잘못된 항목이 존재하여 가입불가시 가입취소(회복)가 됨

  • 사용자가 시스템에 대한 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용
    • 회원가입 요구 시 가입 완료 응답을 하기까지 작업단위 = 가입 트랜잭션


📌 트랜잭션 특성

  • 원자성(Atomicity) : 트랜잭션의 연산은 DB에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 함. 트랜잭션의 모든 명령은 반드시 완벽히 수행되어야 함. 완벽히 수행되지 않고 하나라도 오류가 발생하면 전부 취소되어야 함

  • 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 변환함. 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함.

  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음

  • 영속성, 지속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함


03. RDB(관계형 데이터베이스) = SQL DB


3-1. 개요

  • 현재 가장 많이 사용되고 있는 DB의 한 종류

  • table로 이루어져 있고 테이블은 키(key), 값(value)로 나타냄
  • 데이터 종속성을 관계(Relationship)로 표현하는 것이 큰 특징

3-2. 특징

  • 데이터의 분류, 정렬, 탐색 속도가 빠름

  • 신뢰성이 높고, 어떠한 상황에서도 데이터의 무결성 보장

  • SQL이라는 표준 언어로 관리 가능, 개발 언어, DB 종류 등에 변화가 있어도 기존에 사용하던 App은 그대로 사용 가능
  • 기존에 작성된 스키마 수정 어려움
  • DB의 부하를 분석하는 것 어려움

3-2-1. 연관관계

  • 관계
    • 테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:N)관계가 있음
    • 각 테이블은 기본키(Primary key)와 외래키(Foreign key)를 통해 맺어짐

3-2-2. SQL

  • 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있음.

  • App이 바뀌어도 그대로 사용할 수 있도록 DBMS에서 제공해 줌.

  • DDL(CREATE, ALTER, DROP, RENAME), DML(SELELCT, INSERT, UPDATE, DELETE), DCL(REVOKE, TRUNCATE,GRANT), TCL(COMMIT, ROLLBACK)

1      (이미지 출처 :SQLD 자격증 공부 시험일정 & 시험시간, .. : 네이버블로그 (naver.com))

3-3. 종류

DBMS제작사작동 OS기타
OracleOracleUnix, Linux, Windows상용 시장 점유율 1위
MySQLOracleUnix, Linux, Windows,Mac오픈 소스(무료), 상용
PostgreSQLPostgreSQLUnix, Linux, Windows,Mac오픈 소스(무료)
MariaDBMariaDBUnix, Linux, Windows오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듬
SQLiteSQLiteAndroid, iOS모바일 전용, 오픈 소스(무료)


  • Oracle
    • 미국 오라클 사의 관계형 데이터베이스 관리 시스템(RDBMS)

    • 대량의 정보 관리

  • MySQL
    • RDBMS, 표준 SQL 형식, 오픈 소스이기 때문에 기술 지원의 한계
  • PostgreSQL
    • 오픈 소스 객체-관계형 데이터베이스 관리 시스템(ORDBMS)

    • macOS 서버의 경우 기본 DB로 사용
    • 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
    • 테이블 상속 기능을 이용해 하위 테이블 생성 가능
    • 오픈 소스임에도 상용 RDBMS급의 기능 제공
  • MariaDB
    • 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)

    • MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB

  • SQLite
    • RDBMS

    • 구글 안드로이드 OS에 기본 탑재된 DB
    • ACID 준수
    • 완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없음
    • 이식성 뛰어남, 동시성 제한, 사용자 관리 존재의 부재, 서버리스 DB여서 보안 약함


04. NoSQL


DBMS제작사방식작동 OS기타
MongoDBMongoDB Inc.문서Unix, Linux, Windows,Mac오픈 소스(무료),분산처리에 적합
RedisRedis LabsKey-ValueUnix, Linux, Windows,Mac오픈 소스(무료), 캐싱에 적합
DynamoDBAWSKey-ValueAWS 클라우드(Unix, Linux, Windows)오픈 소스(무료/유료), AWS에서만 사용, 확장에 용이
HBaseApache 소프트웨어 재단Wide-column StoreLinux오픈 소스(무료), 빅데이터에 적합
Neo4jNeo4j Inc. Unix, Linux, Windows,Mac오픈 소스(무료), 추천기능에 적합


  • MongoDB
    • 유연한 스키마
      • 문서 지향 모델을 사용하여 데이터를 저장, 이는 데이터의 구조를 동적으로 변경할 수 있음을 의미
    • 분산 아키텍처
      • MongoDB는 수평적으로 확장 가능한 분산 아키텍처를 제공, 대규모 데이터 처리 및 고가용성 지원
    • JSON 객체와 비슷한 문서에 데이터를 저장

    • 각 문서에는 필드와 값의 쌍이 포함
  • Redis
    • 인메모리 데이터 저장소 : Redis는 데이터를 메모리에 저장하므로 매우 빠른 데이터 액세스와 응답시간을 제공

    • Key-Value DB 특징

      • NoSQL에서도 키값 DB가 존재
      • 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우 사용

      • 사용자 선호도 저장 또는 캐싱에서 사용
  • DynamoDB
    • 관리형 서비스 : AWS의 관리형 NoSQL 데이터베이스 서비스로 서버 관리와 확장성에 대한 부담을 줄여줌

    • 높은 확장성 : 데이터의 크기나 트래픽의 증가에 따라 자동으로 확장되어 수평적으로 확장 가능
    • Key-Value 특징(상동)
  • HBase
    • 분산 저장 시스템 : HBase는 Hadoop 분산 파일 시스템 위에서 작동하며, 대용량 데이터의 분산 저장과 처리를 지원함

    • 일관된 읽기.쓰기 기능 :Hbase는 일관된 읽기와 쓰기 성능을 제공하여 대규모 데이터에 대한 실시간 액세스를 지원

      • Wide-column stor
        • 테이블, 행 및 동적 열에 데이터 저장
        • 각 행이 동일한 열을 가질 필요가 없다는 점에서 RDB에 비해 뛰어난 유연성 제공
        • 대량의 데이터 저장에 적합

        • IOT 데이터와 사용자 프로필 데이터 저장 시 사용
  • Neo4j
    • 그래프 데이터 베이스 : 그래프 DB로서 데이터 간의 관계를 중요시하고 효과적으로 저장하고 조회할 수 있음.

    • ACID 트랜잭션
    • 그래프 DB 특징
      • 소셜 네트워킹, 추천 엔진 등에서 사용

      • 정점과 간선에 데이터를 저장
      • 정점에는 사람, 장소 및 사물에 대한 정보가 저장
      • 간선에는 정점과 관계에 대한 정보가 저장


1
2
3
📌 어떤 DBMS를 사용해야하는가?
	- 테이블 구조가 정해져 있고 내부 데이터 수정이 빈번할 때 : SQL DB(RDB)
	- 테이블 구조가 정확히 잡혀있지 않고(추가적으로 수정될 가능성이 높을 때) 대량의 데이터를 처리할 때 : NoSQL DB
This post is licensed under CC BY 4.0 by the author.