Database System Foundation

이 페이지는 Database, DBMS, Database System 같은 기본 정의에서 시작해, 데이터베이스 접근 방식이 왜 단순 파일 저장과 다른지, 그리고 Transaction이 왜 all-or-nothing이어야 하는지를 다룬다. 후속 concept인 3-schema architecture와 ER model은 이 기초 위에 선다. DBMS 성능이 disk I/O에 좌우된다는 점에서 OS Memory Management와도 보조 기억장치 관점에서 맞닿아 있다.

기본 정의

용어 정의
Data 기록될 수 있고 암묵적 의미를 가지는 알려진 사실[1]
Information Data + Value — 가치(의미)가 있는 데이터[1:1]
Database 연관된 Data들의 모임[1:2]
Mini-world 실세계의 일부를 표현. 데이터베이스가 모델링하는 현실의 부분 (예: 대학의 학생 성적)[2]
DBMS 데이터베이스를 생성·관리하는 소프트웨어 시스템[1:3]
Database System 데이터베이스와 DBMS에 대한 총칭[1:4]. 때로는 애플리케이션도 포함[3]
Database Catalog (Meta-data) 데이터베이스에 대한 모든 설명을 담는 데이터 구조 (보통 테이블)[1:5]

Mini-world의 변화도 데이터베이스에 반영된다.[4] Mini-world를 가져오는 이유는 현실 세계의 일부를 데이터로 사용함으로써 발생하는 문제를 해결하기 위해서다.[2:1]

DBMS 성능 결정 요소

Disk I/O가 DBMS 성능을 결정한다.[5] 방대한 양의 데이터를 제한된 메모리로 관리하므로, 보조 저장 매체(하드디스크)에서 데이터를 얼마나 효율적으로 가져오느냐가 핵심이다. 따라서 DBMS 설계는 disk I/O 패턴과 저장 구조(index 등)에 크게 좌우된다고 볼 수 있다.[6]

SQL 중첩이 가능한 이유는 닫힌 성질 — 연산 결과가 다시 relation이 되는 성질 — 때문이다.[7] ER model 페이지의 Relational Algebra 절에서 이 성질을 다시 참조한다.

Database system의 경계

flowchart TD
    U[Users / Programmers] --> A[Application programs / queries]
    A --> Q[DBMS: query and program processing]
    Q --> X[DBMS: stored-data access]
    X --> M[(Stored database definition / metadata)]
    X --> D[(Stored database)]

Database system은 저장 데이터만이 아니라 application/query, DBMS software, metadata를 함께 포함한다. metadata는 DBMS가 데이터 구조와 제약을 해석하는 근거이며, 사용자 프로그램과 저장 데이터를 직접 같은 것으로 보지 않게 한다고 볼 수 있다.[6:1]

데이터베이스 접근 방식의 핵심 특성

특성 설명
자기 기술성 (Self-describing) DBMS 카탈로그(=메타데이터)에 데이터베이스 설명이 저장된다. 데이터 구조·유형·제약 조건을 catalog에 둬 DBMS가 서로 다른 응용을 처리할 수 있다.[8]
프로그램-데이터 독립성 데이터 구조/저장 방식을 변경해도 DBMS 접근 프로그램을 변경할 필요가 없다. 원문 메모는 그 이유를 프로그램 내부 매핑 같은 것을 바꾸면 되기 때문이라고 적는다.[9]
데이터 추상화 데이터 모델로 저장 세부 사항을 숨기고 사용자에게 개념적 뷰를 제공한다. 프로그램은 저장 세부 대신 데이터 모델 구성요소를 참조한다.[10]
여러 데이터 뷰 지원 각 사용자는 자신에게 관심 있는 데이터만 볼 수 있다 (같은 데이터를 사용자별로 다르게 노출).[11]
공유 데이터와 다중 사용자 트랜잭션 처리 동시 사용자 집합이 데이터를 검색·업데이트한다. 동시성 제어는 각 트랜잭션이 올바르게 실행되거나 중단되도록 보장하고, 복구 시스템은 완료된 트랜잭션 효과가 영구히 기록되도록 한다.[12]

Transaction — All or Nothing

Transaction은 데이터베이스에서 일어나는 하나의 논리적 작업 단위다. Multi-user transaction은 하나의 operation 집합이며, all or nothing으로 처리된다.[13] Transaction의 모든 작업이 완료되지 않으면 수행한 모든 작업은 취소되어야 한다.[13:1] 즉 다 수행하거나 아무것도 수행하지 않아야 한다(atomic).[14] 또한 각 트랜잭션이 서로 고립되어 수행되는 것처럼 보장한다(고립성, isolation).[14:1]

OLTP(Online Transaction Processing)는 데이터베이스 응용의 주요 부분으로, 매초 수백 개의 동시 트랜잭션을 실행할 수 있다.[12:1]

데이터베이스 사용자 범주

데이터베이스 사용자는 "장면의 배우들"(데이터베이스 콘텐츠 사용/제어, 응용 설계/개발/유지)과 "장면 뒤의 노동자들"(DBMS 소프트웨어/도구 설계·개발·운영)로 나뉜다.[15]

장면의 배우들

사용자 유형 역할
DBA (Database Administrator) 접근 권한 관리, 사용 조정·모니터링, 소프트웨어/하드웨어 자원 확보[15:1]
Database 설계자 데이터베이스의 콘텐츠, 구조, 제약 조건, 기능/트랜잭션 정의[15:2]
일반 최종 사용자 (Casual) 필요할 때 가끔 접근[16]
파라메트릭/초보 사용자 미리 정의된 "canned transactions" 사용. 은행 창구 직원, 예약 직원, 모바일 앱 사용자 등. 최종 사용자의 큰 부분[16:1]
숙련 사용자 (Sophisticated) 비즈니스 분석가, 과학자, 엔지니어. 시스템 기능에 익숙, 데이터베이스와 긴밀히 작동하는 도구 사용[16:2]
독립 사용자 (Stand-alone) 개인 데이터베이스 유지. 세금 프로그램 사용자, 개인 사진/영상 데이터베이스[16:3]
시스템 분석가/애플리케이션 개발자 요구사항을 만족하는 canned transaction 포함 애플리케이션 설계·구현·테스트·디버그[16:4]

장면 뒤의 노동자들

DBMS 접근 방식의 이점

추가로 표준 준수 가능성, 애플리케이션 개발 시간 감소, 데이터 구조 변경 유연성, 최신 정보 가용성, 규모의 경제 같은 의미도 있다.[20]

데이터베이스를 사용하지 말아야 할 때

데이터베이스 기술의 역사적 발전

시기 모델 특징
1960s 중반~1970s 계층/네트워크 모델 (IBM IMS) conceptual design과 physical design이 밀접하게 묶여 있음[22]
1970 도입, 1980s 초 상용화 관계형 모델 (E.F. Codd, 집합 기반) conceptual design과 physical design이 독립적[22:1]
1980s 후반~1990s 객체 지향 DBMS 복잡한 데이터 처리 도입, 크게 확산되지는 않음[22:2]
최근 빅데이터 저장/NoSQL/클라우드 대규모 분산 클러스터, Not Only SQL[23]

종합

Database System Foundation의 핵심은, 관련된 데이터를 소프트웨어(DBMS)로 관리해 단순 파일 저장과 구분되는 자기 기술성·독립성·추상화·다중 뷰·동시성 제어를 제공하는 데 있다고 볼 수 있다. Transaction의 "all or nothing"은 단순한 실패 회피가 아니라 데이터 일관성의 기본 단위로 읽힌다. 성능의 핵심이 disk I/O이므로, DBMS 활용·설계는 저장 구조와 I/O 패턴 관점에서 접근해야 한다는 것이 이 페이지가 종합하는 지점이다.[6:2]

흔히 놓치는 지점

관련

출처

테스트 질문


  1. 개념정리.md — L10-26: "Database ... 연관된 Data들의 모임", "Data ... 기록될 수 있고 암묵적 의미를 가지는 알려진 사실", "Infomation ... Data+Value ... 가치(의미)가 있는 데이터", "DBMS ... 데이터베이스를 생성, 관리 가능한 소프트웨어 시스템", "Database System ... 데이터베이스와 DBMS에 대한 총칭", "Database Catalog(=Meta-Data) ... 데이터베이스에 대한 모든 설명을 담고있는 데이터구조" ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. 1장 데이터베이스 및 데이터베이스 사용자.md — "미니월드(mini-world): 데이터베이스에 저장된 현실 세계의 일부", "현실 세계의 일부를 가져와 데이터로 사용함으로써 발생하는 문제를 해결함" ↩︎ ↩︎

  3. 1장 데이터베이스 및 데이터베이스 사용자.md — L52: "데이터베이스 시스템: DBMS 소프트웨어와 데이터 자체. 때로는 애플리케이션도 포함" ↩︎

  4. 개념정리.md — L17-19: "Mini-world ... 실세계의 일부를 표현 ... Mini-world의 변화도 데이터베이스에 반영" ↩︎

  5. 개념정리.md — "DBMS의 성능 결정 요소: Disk I/O" ↩︎

  6. 출처 매핑 미확인 — "DBMS 설계가 disk I/O 패턴에 좌우된다", "metadata가 사용자 프로그램과 저장 데이터를 분리한다", "성능의 핵심이 disk I/O이므로 저장 구조·I/O 패턴 관점에서 접근해야 한다"는 종합 해석은 source 개별 사실을 엮은 Wiki 차원의 해석이며 source에 이 문장 그대로는 없다. ↩︎ ↩︎ ↩︎

  7. 개념정리.md — "SQL 중첩이 가능한 이유: 닫힌 성질" ↩︎

  8. 1장 데이터베이스 및 데이터베이스 사용자.md — "DBMS 카탈로그에 특정 데이터베이스의 설명이 저장됨 ... 이를 통해 DBMS 소프트웨어가 서로 다른 데이터베이스 응용 프로그램을 처리할 수 있음" ↩︎

  9. 1장 데이터베이스 및 데이터베이스 사용자.md — L139-141: "프로그램-데이터 독립성 ... 데이터 구조와 저장 방식을 변경해도 DBMS 접근 프로그램을 변경할 필요가 없음", "프로그램 내부 매핑같은걸 바꾸면 되는거니까." ↩︎

  10. 1장 데이터베이스 및 데이터베이스 사용자.md — "데이터 모델을 사용하여 저장 세부 사항을 숨기고 사용자에게 개념적 뷰를 제공" ↩︎

  11. 1장 데이터베이스 및 데이터베이스 사용자.md — "각 사용자는 자신에게 관심 있는 데이터만을 볼 수 있음" ↩︎

  12. 1장 데이터베이스 및 데이터베이스 사용자.md — "동시성 제어는 각 트랜잭션이 올바르게 실행되거나 중단되도록 보장", "복구 시스템은 완료된 각 트랜잭션의 효과가 데이터베이스에 영구히 기록되도록 함", "OLTP ... 매초 수백 개의 동시 트랜잭션을 실행할 수 있음" ↩︎ ↩︎

  13. 1장 데이터베이스 및 데이터베이스 사용자.md — "Transaction = 데이터베이스에서 일어나는 하나의 논리적 작업 단위", "multi-user transaction = a set of operation = all or nothing", "Transaction의 모든 작업이 완료되지 않으면 수행한 모든 작업은 취소되어야 함" ↩︎ ↩︎

  14. 개념정리.md — L42-46: "Multi-User Transaction ... 다 수행하거나 아무것도 수행하지 않음(=atomic) ... 각 트랜잭션이 서로 고립되어 수행되는 것처럼 보장(고립성)" ↩︎ ↩︎

  15. 1장 데이터베이스 및 데이터베이스 사용자.md — "데이터베이스 사용자는 두 가지 ... 장면의 배우들 ... 장면 뒤의 노동자들", "데이터베이스 관리자 (DBA)", "데이터베이스 설계자" ↩︎ ↩︎ ↩︎

  16. 1장 데이터베이스 및 데이터베이스 사용자.md — 최종 사용자 카테고리: 일반 사용자, 초보자/파라메트릭 사용자, 숙련된 사용자, 독립 사용자, 시스템 분석가/애플리케이션 개발자 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  17. 1장 데이터베이스 및 데이터베이스 사용자.md — "시스템 설계자 및 구현자", "도구 개발자", "운영자 및 유지보수 직원", "애플리케이션, 언어 컴파일러, 운영 체제와의 인터페이스를 테스트하고 디버그" (L226) ↩︎ ↩︎ ↩︎

  18. 1장 데이터베이스 및 데이터베이스 사용자.md — DBMS 접근 방식의 이점 목록: 중복 제어, 불법적 접근 제한, 영구 저장, 효율적 쿼리 처리, 쿼리 최적화, 백업/복구, 다중 인터페이스, 복잡한 관계 표현, 무결성 제약, 규칙과 트리거 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  19. 개념정리.md — L50-52: "Controlling Redundancy(중복성 제어)⭐ ... 데이터 저장, 개발, 유지보수 ... 정규화" ↩︎

  20. 1장 데이터베이스 및 데이터베이스 사용자.md — "데이터베이스 접근 방식 사용의 추가적인 의미": 표준 준수, 애플리케이션 개발 시간 감소, 데이터 구조 변경 유연성, 최신 정보 가용성, 규모의 경제 ↩︎

  21. 1장 데이터베이스 및 데이터베이스 사용자.md — "데이터베이스를 사용하지 말아야 할 때": 높은 초기 투자 비용, 보안/동시성/복구/무결성 오버헤드, 단순·명확·불변 응용, 다중 사용자 불필요 ↩︎

  22. 1장 데이터베이스 및 데이터베이스 사용자.md — "conceptual design과 physical desaign이 밀접하게 묶여있음 ... 계층 및 네트워크 모델", "관계형 모델 ... conceptual design과 physical desaign이 독립적", "객체 지향 DBMS가 복잡한 데이터를 처리하기 위해 도입되었으나, 크게 확산되지 않음" ↩︎ ↩︎ ↩︎

  23. 1장 데이터베이스 및 데이터베이스 사용자.md — "빅데이터 저장 시스템 (분산된 대규모 컴퓨터 클러스터 사용)", "NoSQL 시스템 (Not Only SQL)", "대량의 데이터는 현재 클라우드에 저장되고 있으며" ↩︎