DBMS - 데이터베이스 관리 시스템
DB에 접근하고, DB에 데이터를 저장하며, DB에서 원하는 정보를 검색하고 DB를 관리하는 프로그램
SQL(Structured Query Language)을 사용함
데이터베이스에 대한 모든 접근은 DBMS에 의해 중앙 집중식으로 관리됨
반드시 갖춰야 할 특성:
편리성
- 복잡성 관리의 핵심은 추상화 (Abstraction)
- 프로그래머는 데이터가 어떻게 구조화되고 저장되는지 걱정할 필요가 없음
효율성
수백만 개의 레코드 중 하나의 레코드에 반복적으로 접근해야 할 경우, 인덱스가 유용함
- 원자성과 ACID
- 동시성 제어 및 잠금
예)
테이블을 조인하기 전에 "물리학" 전공 교수만 남기는 것이 테이블을 조인한 후 "물리학" 교수를 찾는 것보다 훨씬 효율적임
안전성
- 트랜잭션 및 충돌 복구
- 인증
만약 DBMS가 없다면?
데이터는 많은 프로그램에서 사용되는 여러 다른 파일에 수집될 것임
→ 각 프로그램이 자체 파일 시스템을 처리함
- 데이터 중복: 동일한 정보가 여러 파일에 중복될 수 있음
- 불일치: 변경된 정보가 다른 곳에 반영되지 않을 수 있음
데이터 모델
관계형 데이터 모델
- 데이터는 테이블에 저장됨
→ 테이블은 관계(relations)라고 불리며, 각 인스턴스와 테이블 간의 관계가 있음
스키마 Schema
- 데이터 컬렉션에 대한 설명
예)
테이블의 데이터 유형, 열 이름
Table(columnName: dataType, columnName: dataType, ..... columnName: dataType)
데이터 추상화
물리적 수준 Physical Layer
- 가장 낮은 수준의 데이터 추상화
- 데이터가 실제로 어떻게 저장되는지
논리적 수준 Logical Layer
- 어떤 데이터가 저장되는지
- 그들 사이에 어떤 관계가 존재하는지
알 필요가 없는 것:
- 데이터가 어떤 디스크에 저장되는지
- 데이터가 인덱싱되어 있는지
→ 물리적 데이터 독립성 → 추상화!
뷰 수준 View Layer
- 다양한 애플리케이션을 위해 여러 뷰가 존재할 수 있음, 전체 DB의 일부만
고려할 필요가 없는 것:
- 애플리케이션을 다시 작성하지 않고 새 항목을 어떻게 추가하는지
→ 논리적 데이터 독립성
Q. DB 애플리케이션이 많은 사용자를 서비스할 때의 과제는 무엇인가?
- 보안
- 다양한 사용자에 대한 다른 역할과 권한 부여
- 성능
- 동시 접근을 제공해야 함
- → 유일한 사용자인 경우에만 허용되어야 함
- 일관성
- 동시성으로 인해 일관성 문제가 발생할 수 있음
트랜잭션 (Transactions)
DB 동작(읽기/쓰기)의 원자적 시퀀스
원자성(Atomicy): 더 이상 분할할 수 없음, 전체적으로 완료되거나 전혀 실행되지 않음
→ 트랜잭션이 취소되면 아무 일도 없었던 것처럼 되어야 함
어떻게?
→ 선행 기록(Write-ahead Logging, WAL)
- 모든 동작이 완료되기 전에 해당 로그 항목이 디스크에 강제로 기록됨
- 충돌 후, 부분적으로 실행된 트랜잭션은 로그를 사용하여 취소됨
데이터 무결성
데이터의 전반적인 정확성, 완전성 및 일관성
사용자는 트랜잭션 실행 전후에 일관된 상태를 요구할 수 있음
일관성: 트랜잭션을 포함한 모든 동작은 모든 무결성 제약 조건을 준수하는 상태로 이어져야 함
Concurrency 및 Locking
DBMS는 동시 트랜잭션의 실행이 일련의 실행과 동등하도록 보장함
→ Serializability → 트랜잭션 집합이 격리되어 있으며, 그 효과는 모두 순차적으로 실행된 것과 같음
어떻게?
→ Locking
- 한 번에 한 승자만 잠금을 얻음
- 패자는 차단(대기)되어 승자가 끝날 때까지 기다림
→ 이것 없이는 교착 상태가 발생할 수 있음
DB 시스템의 역사
1960~70년대
네비게이션 데이터베이스 (Charles Bachman)
- 사용자가 레코드 간 포인터를 사용하여 관계를 암시
- 구현하기 너무 어려움
→ 관계형 모델 (Ted Codd)
- 데이터를 관계의 집합으로 구성
1970~80년대
System R 팀 (IBM)
- 쿼리 최적화
- SQL
1990년대
- 월드 와이드 웹의 폭발적 성장
→ 확장성이 중요한 이슈가 됨
2000년대
- 데이터베이스 시스템에 저장되는 데이터 유형이 진화
- 반구조화 데이터가 점점 더 중요해짐 (XML, JSON 등)
→ NoSQL
'컴퓨터공학 > 데이터베이스 DB' 카테고리의 다른 글
외부 조인과 내부 조인 Inner Join and Outer Join (2) | 2024.10.20 |
---|---|
기초 SQL문 정리 SFW, HAVING, GROUP BY ... (8) | 2024.10.19 |
데이터베이스 SQL DDL과 DML (5) | 2024.10.18 |
데이터베이스 Relational Algebra 관계 대수 (3) | 2024.10.15 |
관계형 데이터베이스 모델, Relational Data Models (0) | 2024.10.13 |