3 minute read


04.25 3주차 수업 내용 정리


DBMS의 역할

데이터 모델링

: 실세계의 데이터를 시스템 내에서 표현하기 위한 기호계

  • 개념 모델: 데이터베이스화의 대상이 되는 실세계의 데이터 구조와 제약을 기호화, 온도를 센서로 컴퓨터에 입력하거나 실제 지도를 컴퓨터에 읽어들이는 등
  • 이론 모델(개념 스키마): 개념 모델로 표현한 것을 DBMS로 관리 가능한 데이터베이스로의 표현으로 변환
    • 이론 모델의 종류: 계층형, 네트워크, 관계, NoSQL(Not only SQL)



이론 모델의 종류

  1. 계층형 모델
    • 대표적으로 IBM IMS(Information Management System), 1960s
    • 데이터를 트리 구조 형태로 표현하는 데이터베이스 모델 -> 루트를 중심으로 하는 부모-자식 관계 존재, 인간의 직감적 구조에 가까워 파악하기 편함
    • 정해진 패턴 이외의 검색에는 약함, 유연성이 낮음
    • 부모 하나에 자식 데이터 여러 개가 존재할 수 있으나, 반대는 불가 -> 다대다 관계의 표현 불가
    • 데이터 중복
    • 데이터 독립성 없음(부모에 의존함)


  2. 네트워크형 모델
    • 미국의 GE(CODASYL)의 Integrated Data Store, 1960s
    • 데이터가 그래프 구조로 표현됨
    • 레코드와 셋 개념을 사용하며, 하나의 데이터가 여러 부모를 가질 수 있어 다대다 관계도 표현 가능
    • 네트워크 구조로 유연한 검색
    • 포인터 이동으로 데이터에 접근
    • 사이즈가 커지면 구조가 복잡해져 구현이나 파악이 어려워짐


  3. 관계 데이터 모델
    • Ted Codd 박사에 의해 제안됨, 1970s
    • 데이터를 테이블 형태로 표현하며 테이블 전체를 관계라고 함, 각 테이블은 행(튜플)과 열(속성)로 구성됨
      • 속성에는 이름이 붙으며, 속성 이름의 나열스키마라고 함
      • 튜플 수는 카디널리티 Cardinality
    • 수학 집합론(관계 개념)을 기반으로 함, 테이블 간은 공통된 속성(외래 키)을 통해 암시적으로 연결됨
    • 𝑡 ∈ 𝑅 ⊂ 𝐷1 × 𝐷2 × ⋯ × 𝐷n: 𝑡는 튜플, 𝑅은 관계, 𝐷i는 정의역, n은 지수를 가리킴
    • 직관적이고 데이터 독립성이 높으며, 표준 SQL을 지원함
    • 기본적으로 1:1, 1:N 관계이며 M:N 관계는 중간 테이블로 표현함
    • 원하는 정보를 조건으로 질의해 데이터에 접근함
    • 현재로서 가장 대표적인 데이터베이스
    • 1980s부터 제품화, 실용화되어 Oracle, MySQL, SQLite 등이 등장


  4. NoSQL(Not only SQL)
    • 컬럼 패밀리 데이터 스토어, 키-값 데이터 스토어, 도큐먼트 데이터 스토어 등
    • 관계 데이터 모델의 약점인 스키마 고정을 개선
    • 속성을 사전에 정할 필요가 없는 스키마레스 -> 다양한 데이터에 유연한 대응 가능
    • 높은 사용성과 확장성 Scalability
      • 데이터가 급히 증가하여, 데이터 세트를 나누어 여러 서버에 저장
      • 하나의 서버에 문제가 생겨도 데이터를 유실하지 않는 데이터 저장 방식
      • 병렬화에 의한 데이터 처리 시간의 고속화


    1. 컬럼 패밀리 데이터 스토어
      • 구글의 웹 크롤러인 GoogleBot이 수집해 온 웹페이지를 효율적으로 저장해 검색하기 위한 Google Bigtable이 원형
      • 여러 개의 컬럼을 묶어 패밀리 단위로 관리하는 개념, 관계 데이터 모델의 테이블과 비슷하지만 구조가 훨씬 유연하며 동적으로 동작함
      • 각 행은 고유의 키를 가지며, 각 행마다 컬럼의 수가 종류가 다를 수 있음 -> 행 키와 속성(컬럼)이 하나의 관리 단위가 됨
      • 압축, 검색 효율이 높음 -> 복수의 비슷한 데이터가 저장되어 있음
      • 집계 쿼리에 강함 -> 대상 데이터가 하나의 컬럼에 소속됨
      • 확장이 용이함 -> 컬럼이 거의 독립적으로 관리되므로, 새로운 컬럼을 새로운 노드에 저장하기 쉬움


    2. 키-값 데이터 스토어
      • 아마존의 Dynamo 데이터베이스에 쓰이는 모델, 2012
      • 데이터를 키(아이디 또는 이름)와 값(키에 연결된 실제 데이터)의 쌍으로 저장하는 아주 단순한 구조의 데이터베이스, 파이썬의 딕셔너리와 같은 구조
      • 높은 확장성
      • 범위 쿼리에 약함 -> 최근에는 정렬된 키-값 데이터 스토어로 대응


    3. 도큐먼트 데이터 스토어
      • 객체 지향 데이터베이스로부터 영향을 받음
      • 데이터 계층을 단일 객체에 집어넣음
      • 표준화된 API가 존재하지 않음



데이터베이스 언어

  • 데이터베이스 정의 언어(DDL: Data Definition Language)
    • 데이터베이스 관리자용
    • 데이터베이스에의 접근 권한을 관리
  • 데이터 조작 언어(DML: Data Manipulation Language)
    • 일반 유저용
    • 데이터베이스의 검색, 갱신
  • SQL
    • 데이터 조작, 정의 언어
    • 검삭, 통계 연산, 갱신 등의 기능을 수행
    • 기본 문법: SELECT 속성 열 FROM 관계 이름 열 WHERE 검색 조건



트랜잭션의 관리

  • 트랜잭션: 하나의 작업 단위, 또는 논리적으로 묶인 여러 개의 작업을 하나처럼 처리하는 것
    • ex: A 계좌에서 1000원 출금 → B 계좌에 1000원 입금
  • 데이터의 신뢰성과 일관성을 지키기 위함
    • 복수의 데이터 조작이 제대로 이루어질 수 있도록, 동일한 데이터베이스를 동시에 이용할 수 있도록
  • 동시성 제어를 위해 을 도입: 다른 트랜잭션이 접근하지 못하도록 해 데이터의 접근을 제어
    • 두 사용자가 동시에 같은 데이터를 수정하여 마지막 작업만 반영되는 일을 방지
    • 한 사용자가 읽고 있는 중에 다른 사용자가 데이터를 수정해, 읽은 데이터가 틀리는 일을 방지



데이터베이스 동작 환경

  • 웹 시스템
    • 데이터베이스 서버가 복수의 어플리케이션 서버를 이용
    • 어플리케이션 서버
  • Java Database Connectivity
    • 특정 데이터베이스에 의존하지 않는 자바 언어용의 드라이버
    • 어떤 데이터베이스든 자바 언어로 쓰여진 데이터베이스라면 이용 가능
    • ODBC에밖에 대응하지 않는 DBMS에 대해서는 JDBC/ODBC 드라이버를 사용함
  • 파이썬
    • 데이터베이스별 다른 드라이버가 존재
    • 파이썬과 PostgreSQL