Post

CS - 5. DB 구조와 유형

CS - 5. DB 구조와 유형

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

01. DB 구조와 유형


1-1. 데이터베이스

  • 정보와 데이터는 서로 다름.
    • 정보 : 여러 종류의 문서로 흩어져있어 조합하기 어려운 단위
    • 데이터 : 정보를 체계적으로 분류하여 조합할 수 있는 단위

💡 DB(데이터베이스)

  • 정의
    • DB는 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 것.

    • DB의 구조는 사용되는 데이터 모델에 의해 결정


  • 특징
    • 데이터의 대규모 저장소로서, 여러 사용자에 의해 동시에 사용됨
    • 시스템 카탈로그(또는 데이터 사전)와 저장된 데이터베이스로 구분할 수 있음

      시스템 카탈로그는 저장된 DB의 스키마 정보를 유지

    • 모든 데이터가 중복을 최소화하면서 통합됨.
    • DB는 운영 데이터뿐만 아니라 그 데이터에 관한 설명까지 포함
      • 설명 : DB 스키마, 메타데이터
    • 프로그램과 데이터 간의 독립성이 제공됨
      • 프로그램 메모리가 아닌 개별적인 저장공간에 저장되기 때문
    • 효율적으로 접근이 가능하고 질의를 할 수 있음.(ex.MAX(A1:A20))
  • 데이터베이스 관리 시스템(DBMS:Database Management Sysytem)
    • DB를 정의하고 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 SW


1-2. 데이터베이스 시스템 개요

  • DB 스키마
    • 전체적인 DB 구조를 뜻하며 자주 변경되지 않음

    • DB의 모든 가능한 상태를 미리 정의
    • ex) 사람 데이터는 이름, 키, 몸무게, MBTI 필드를 가짐
    • ex) EMPLOYEE 데이터는 EMPNO, EMPNAME, TITLE, DNO,SALARY 필드를 가짐

    데이터베이스 스키마 DEPARTMENT(DEPTNO, DEPTNAME,FLOOR) EMPLOYEE(EMPNO, EMPNAME, TITLE, DNO, SALARY)

  • DB 상태
    • 특정 시점의 DB의 내용을 의미하며 시간이 지남에 따라 계속해서 바뀜

    • DB의 수정이 일어날 때마다 상태는 바뀜

  • 데이터베이스 시스템(DBS)
    • DB, DBMS, USER를 포함한 가장 큰 범위

1
                 시스템 카탈로그와 저장된 DB

  • DBMS
    • 사용자가 새로운 DB를 생성
    • DB의 구조를 명시

    • 사용자가 데이터를 효율적으로 질의하고 수정할 수 있도록 함
  • 사용자

  • 하드웨어
    • DB는 디스크와 같은 보조 기억 장치에 저장, DBMS에서 원하는 정보를 찾기 위해 디스크는 블록들을 주기억장치로 읽어들여야 함

    • 계산이나 조합 및 비교 연산들을 수행하기 위해 중앙처리장치가 사용됨
    • DBMS 자체도 주기억장치에 적재되어 실행되어야 함
  • DB 시스템의 요구사항
    • 데이터 독립성

    • 효율적인 데이터 접근
    • 백업과 회복
    • 중복을 줄이거나 제어하며 일관성 유지
    • 데이터 무결성
    • 데이터 보완
    • 쉬운 질의어
    • 다양한 사용자 인터페이스


1-3. 파일 시스템 VS DBMS

  • 파일 시스템
    • 1960년대부터 사용, 파일을 접근하는 방식이 응용 프로그램 내에 상세하게 표현되므로 데이터에 대한 응용 프로그램의 의존도가 높음.

    • 단점

      • 데이터가 많은 파일에 중복해서 저장됨.

      • 다수의 사용자들을 위한 동시성 제어가 제공되지 않음
      • 검색하려는 데이터를 쉽게 명시하려는 질의어가 제공되지 않음
      • 보안 조치 미흡
      • 회복 기능 없음
      • 프로그램-데이터 독립성이 없어 유지보수 비용이 많이 소요
      • 파일을 검색하거나 갱신하는 절차가 상대적으로 복잡, 생산성 낮음.
  • DBMS 장점
    • 1️⃣ 스키마 정의를 통해
      • 중복성과 불일치 감소

      • 표준화를 시행하기 용이
      • 조직체의 요구사항 식별 가능
    • 2️⃣ 관리도구를 통해
      • 시스템을 개발하고 유지하는 비용이 감소
      • 보안 향상

      • 무결성 향상(트랜잭션 관리로 인해)
      • 다양한 유형의 고장으로부터 DB를 회복할 수 있음
      • DB의 공유와 동시 접근이 가능
  • DBMS 단점
    • 추가적인 HW 구입 비용, DBMS 자체 구입 비용 비쌈

    • 직원들의 관리도구 사용법 교육 비용 많이 소요
    • 비밀과 프라이버시 노출


1-4. DBMS 발전 과정

1                    DBMS 발전 과정

  • 1️⃣ 계층 DBMS 구조
    • 1960년대 후반 최초의 계층 DBMS

    • 트리 구조 기반으로 하는 계층 데이터 모델을 사용한 DBMS
    • 계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례
  • 2️⃣ 네트워크 DBMS 구조
    • 레코드들이 노드로 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델을 사용

    • 네트워크 DBMS에서도 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움

  • 3️⃣ 관계 DBMS 구조
    • 가장 많이 쓰이며 모델이 간단하여 이해하기 쉬움

    • 사용자는 자신이 원하는 것만 명시하고 데이터가 어디있는지 어떻게 접근해야 하는지 DBMS가 결정 ex) MS SQL Server, Oracle, Sybase 등

  • 4️⃣ 객체 지향 DBMS
    • 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델
  • 5️⃣ 객체 관계 DBMS
    • DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안됨


1-5. DBMS 언어

  • 데이터 정의어(DDL : Data Definition Language)
    • 사용자는 데이터 정의어를 사용하여 DB 스키마를 정의

    • 데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 또는 데이터 사전에 저장
    • CREATE, ALTER, DROP,CREATE INDEX
  • 데이터 조작어(DML : Data Manipulation Language)
    • 사용자는 데이터 조작어를 사용하여 DB 내의 원하는 데이터를 검색, 수정, 삽입, 삭제

    • 절차적 언어와 비절차적 언어
    • 관계 DBMS에서 사용되는 DQL은 대표적인 비절차적 언어
    • 대부분의 데이터 조작어는 SUM, COUNT, AVG 같은 내장 함수들을 갖고 있음.
    • SELECT, INSERT, UPDATE, DELETE
  • 데이터 제어어(DCL : Data Control Language)
    • 사용자는 데이터 제어어를 사용하여 DB 트랜잭션을 명시하고 권한을 부여하거나 취소


1-6. DBMS 사용자

  • 응용 프로그래머(우리)
    • DB 위에서 특정 응용이나 인터페이스를 구현하는 사람

    • 프로그래밍 언어로 응용 프로그램을 개발하면서 DB를 접근하는 부분은 내포된 데이터 조작어를 사용
    • 작성한 프로그램은 최종 사용자들이 반복해서 수행하므로 기작성 트랜잭션 또는 프로그램이라고 부름
  • 데이터베이스 관리자(DBA)
    • DB 관리자는 ㅗ직의 여러 부분의 상이한 요구를 만족시키기 위해 일관성 있는 DB 스키마를 생성하고 유지하는 사람

    • 리얼 DB 변경이 필요할 때 DBA님에게 요청함
    • DB 스키마의 생성과 변경
      • 무결성 제약조건을 명시

      • 사용자의 권한을 허용하거나 취소하고 사용자의 역할을 관리
      • 백업과 회복
      • 표준화 시행
  • 오퍼레이터(인프라팀)
    • DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람
  • 최종 사용자 (User)
    • 질의하거나 갱신하거나 보고서를 생성하기 위해 DB를 사용하는 사람

    • 최종 사용자는 다시 DB 질의어를 사용하며 매번 다른 정보를 찾는 캐주얼 사용자와 기작성 트랜잭션을 주로 반복해서 수행하는 초보 사용자로 구분


02. DB 유형



2-1. 관계형 데이터베이스(SQL)

  • 관계형 데이터베이스
    • 동일한 구조의 관점에서 모든 데이터를 논리적으로 구성

    • 선언적인 질의어를 통한 데이터 접근을 제공
    • 응용 프로그램들은 DB 내의 레코드들의 어떠한 순서와도 무관하게 작성됨
    • 사용자는 원하는 데이터만 명시하고 어떻게 이 데이터를 찾을 것인가는 명시할 필요 없음
    • 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중 가장 개념이 단순한 데이터 모델

    • 특징
      • 간단한 테이블(릴레이션) 사용

      • 중첩된 복잡한 구조가 없음
      • 집합 위주로 데이터를 처리
      • 숙련되지 않은 사용자도 쉽게 이해할 수 있음
    • 기본 용어
      • 릴레이션 : 2차원의 테이블

      • 레코드 : 릴레이션의 각 행
      • 튜플 : 레코드를 좀 더 공식적으로 부르는 용어 : 행(row)
      • 속성 : 릴레이션에서 이름을 가진 하나의 열 : 컬럼(column)

1      (이미지 출처 : Part 2 데이터베이스 : 네이버 블로그 (naver.com))

1
📌 파일 시스템에는 레코드만 가진 파일 형태로 존재하지만 관계형 데이터베이스는 속성, 튜플을 가진 릴레이션(테이블) 형태로 존재함.
  • 도메인
    • 한 속성에 나타날 수 있는 값들의 집합
  • 차수(degree), 카디널리티(cardinality)
    • 차수 : 한 릴레이션에 들어있는 속성들의 수
      • 유요한 릴레이션의 최소 차수는 1

        • 속성이 1개 이상 있어야 릴레이션이 됨
      • 릴레이션의 차수는 자주 바뀌지 않음

        • 보통 테이블 스키마는 자주 못바꿈
    • 카디널리티 : 릴레이션 튜플 (row 수)
      • 유효한 릴레이션은 카디널리티 0을 가질 수 있음

      • 릴레이션의 카디널리티는 시간이 지남에 따라 계속 변함


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

비관계형 데이터베이스

  • NoSQL이라고 부르며, Not Only SQL(SQL 뿐만이 아닌이라는 뜻) 의 줄임말

  • SQL뿐만 아니라 다른 여러 장점을 가지고 있다는 말
  • 기존 관계형 DB의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 DB
  • 분산 환경에서 데이터 처리를 더욱 빠르게 하기 위해 개발

    • 특징
      • 거대한 Map으로 key-value 형식을 지원

      • 관계형 DB와 달리 PK, FK JOIN 등 관계를 정의하지 않음
      • 스키마에 대한 정의가 없음
    • 종류
      • 문서형(Document) 데이터베이스
        • 데이터를 테이블이 아닌 문서처럼 저장하는 DB

        • 많은 문서형 DB에서 JSON과 유사한 형식의 데이터를 문서화하여 저장함
        • 대표적인 문서형 DB는 MongoDB
    - Key-Value 타입
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
          - 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장
    		
          - Key는 속성 이름 Value는 속성에 연결된 데이터 값을 의미
          - Redis, Dynamo 등이 대표적인 Key-Value 형식의 DB
    
      - **Wide-Column Store 데이터베이스**
          - DB의 Column에 대한 데이터를 집중적으로 관리하는 DB
    		
          - 각 열에는 key-value 형식으로 데이터가 저장되고 column families라고 하는 열의 집합체 단위로 데이터를 처리할 수 있음
          - 하나의 행에 많은 열을 포함할 수 있어 유연성이 높음
          - 대표적인 wide-column DB에는 Cassavdra, Hbase가 있음
    	
      - **그래프 데이터베이스**
          - 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 DB
    		
          - 노드에 속성별로 데이터를 저장함. 각 노드 간 관계는 선(edge)로 표현함
          - 대표적인 그래프 DB에는 Neo4J, InfiniteGraph가 있음 
    
    • 장점
      • 대용량 데이터를 처리하기 효율적

      • 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 DB에 비해 쓰기와 읽기 성능이 빠름
      • 데이터 모델링 유연
      • 뛰어난 확장성으로 검색에 유리
      • 복잡한 데이터 구조를 표현할 수 있음
    • 단점
      • 쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 document를 다룰 때는 성능이 저하됨


2-3. SQL vs NoSQL

  • 💡 SQL 사용이 적합한 경우

    • DB의 ACID 성질을 준수해야 하는 경우

      ACID : Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)

    • 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우
  • 💡 NoSQL 사용이 적합한 경우

    • 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우

    • 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

    • 빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우

This post is licensed under CC BY 4.0 by the author.