[Database] 2.데이터베이스 시스템의 개념, 아키텍처
REF: fundamentals of database systems 7th edition
Data Model, Schemas, Instances, States
- DB접근방식은 DB유저들에게 필요없는 세부적인 정보를 추상화의 단계를 통해 숨긴다.
- 다양한 용어가 나오니, 이에 대해 숙지해야한다.
Data Model
정의
- 데이터베이스 구조(structure of database) :
데이터 형, 관계, 데이터의 제약조건
정의 Data Model
:collection of concepts for describing data
- 데이터베이스 구조 + basic operation
basic operation
:user-defined operation
+generic operation
- user-defined operation : 학생의 GPA를 구해라 등
- generic operation : insert, delete, modify, retrieve 등
- 데이터베이스 구조 + basic operation
분류
개념적 데이터 모델(high-level, conceptual data model)
- 사용자가 이해하는 데이터베이스 구조
- miniworld를 개체, 속성, 관계로 표현한다.
- DB 설계자(designer)가 사용자와 인터뷰, 문서화한다.
구현 데이터 모델(representational, implementation data model)
- DBMS가 사용하는 모델
- 개념적과 물리적의 사이에 존재
- 사용자가 이해할 수 있고, 컴퓨터가 데이터를 구성하는 방식과 비슷하기때문.
- 물리적인 저장방식은 추상화하지만, 컴퓨터에 바로 구현될 수 있는 모델임
물리적 데이터 모델(low-level, physical data model)
- 컴퓨터에 가까운 형태, 디스크, 파일 레벨에서 데이터를 바라본다.
- 데이터 저장방법, 레코드 포맷/순서, 레코드 찾아가는 포인터 구조 등에 대해 다른다.
- 오늘날에는 구현 데이터 모델은 relational data model이 가장 많이 사용된다.
- 레코드와 필드를 가진 테이블간의 관계로 데이터를 표현한다.
- 모든 테이블은 필드를 묘사하는 스키마를 가진다.(테이블의 1행, 가장 윗줄을 의미한다.)
DB Schema(meta-data)
-
data model은 DB를 묘사하는 부분과 Date자체로 나뉘는데,
DB를 묘사하는 DB schema
를 알아야한다. -
DB스키마는 오늘날 사용되는 관계형 데이터 모델의 relation을 의미한다.
정의
-
DB schema : 실제 저장데이터가 아닌, 데이터베이스에 대한 설명
- DB설계자가 설계시 정의, 지주 변경되지 않음.
system catalog
에 저장된다.형태, 관계, 제약
등에 대해 정의.
schema diagram
- 스키마를 표현하는 그림
- 제한된 정보를 표현한다.
(형태, 관계, 제약을 표현하지 않는다.)
DB State와 Instance
정의
Instance
: 저장된 데이터 자체DB State
:특정 시점
의 DB안의 데이터를 의미.- 또는, 데이터베이스의
현재 occurence, instance들의 집합
이라고도 한다. - DB내부의 실제 데이터들은 insert, delete등에 의해 바뀔때마다 다른 state를 가지게된다.
- 이는 곧, 각 state마다 스키마 구조는 자신만의 현재 instance 집합을 가진다는 것을 의미한다.
- 또는, 데이터베이스의
DB스키마, DB state구분
- 새로운 DB를 정의할때, DBMS에 DB스키마를 정의하게된다.
- 이때, 상응하는
DB state는 empty state
를 가진다. - 이후에 DB의 데이터를 조작할때마다 다른 DB state를 가지게된다.
DBMS validation
DBMS는 모든 state가 valid state
인지 검사한다.- DB를 조작해 state가 변이하면, system catalog에 저장되어있는 DB 스키마와 비교해 valid한지 검증한다.
3단계 스키마 구조
- 3단계 스키마 구조는
사용자 응용프로그램과 물리적 데이터베이스를 구분하기위함
이다. - 사용자는 응용프로그램
구조
⭐️내부 단계
- 내부 스키마로 물리적 저장 구조 기술
물리적 데이터 모델
을 사용한다.
⭐️개념적 단계
- 개념적 스키마로 데이터베이스의 구조를 기술하고, 물리적 저장구조는 숨긴다.
- entities, types, constraints, relationships, operations 등
개넘적 데이터 모델(ER 모델)
구현 데이터 모델
을 사용한다.
⭐️외부 단계(View Level)
- 여러개의 외부 스키마와 사용자 view들로 표현한다.
- 사용자 그룹가 관심으로하는 정보만을 기술하고, 나머지 부분은 숨긴다..
개넘적 데이터 모델(ER 모델)
구현 데이터 모델
을 사용한다.
Data Independence
⭐️논리적 데이터 독립성
개념적 스키마를 변경하더라도, 윗단계인 외부 스키마, 응용프로그램에는 영향을 주지 않는 특성
- 핸드폰 번호에 대한 스키마가 추가된다고 해도, 기존 응용 프로그램은 해당 정보 없이도 사용할 수 있다.
- 또한, 특정 스키마가 삭제되었을때는, 해당 스키마를 사용하는 외부 스키마를 제외하고는 영향을 받지 않는다.
이는 모두 논리적 데이터 독립성을 지원하는 DBMS애서는 view정의와 mapping만이 바뀌기 때문이다.
⭐️물리적 데이터 독립성
내부 스키마를 변경하더라도, 윗단계인 외부 스키마와 개념적 스키마에는 영향을 주지않는 특성
- 저장 장치를 추가해 기존 데이터를 옮긴다고 하더라도, 내부 스키마와 개념적 스키마 사이의 mapping만을 수정하므로, 개념적 스키마와 외부 스키마에는 아무런 영향이 없다.
⭐️mapping
- ⭐️
데이터 독립성(data independence)를 가능하게 해준다.
- 예시
- 각 유저는 자신이 볼 수 있는 view(외부 스키마)만을 참조할 수 있다.(외부단계 참고)
- request
- 따라서 외부스키마에서 지정된 요청은 내부스키마의 요청으로
변환
되어야한다.
- 따라서 외부스키마에서 지정된 요청은 내부스키마의 요청으로
- result
- 만약 데이터를 받는 요청이라면 데이터를 저장공간에서 가져와서 사용자의 외부 관점에 맞게 결과를 형식을 재지정해줘야한다.
- request
- 각 유저는 자신이 볼 수 있는 view(외부 스키마)만을 참조할 수 있다.(외부단계 참고)
- 단계 사이에서 발생하는 이런 변환을 ⭐️
mapping
이라고 한다. -
외부 단계와 개념적 단계 사이의 매핑을 ⭐️
external/conceptual mapping
, 개념적 단계외 내부단계 사이의 매핑을 ⭐️conceptual/internal mapping
이라고 한다. - multiple-level DBMS에서, system catalog는 다양한 단계 사이에서 들어오는 요청들을 mapping하게된다.
- DBMS는 이런 mapping을 하기위해 추가적인 소프트웨어를 사용한다.
- ⭐️
만약 특정 단계에서 스키마가 변경되어도, 윗 단계의 스키마는 변경되지 않는 이유가 두 단계 사이의 mapping만 변경되면 되기때문이다.
DBMS언어, 인터페이스
DBMS 언어
DDL
Database Definition Language
개념적 스키마의 매핑 및 정의
DBA, DB designer
가 사용한다.- 설계된 DB구조를 DBMS catalog에 입력할때 사용된다.
DDL Compiler
- DDL statement를 처리하기위해 DBMS에 있는 DDL compiler
DML
Database Manipulation Language
- DDL로 DB스키마가 컴파일되고, DB가 데이터로 채워지면 사용자는 database를 조작할 수단이 필요하다.
- DBMS는 이를 위해 DML을 제공한다.
-
대부분 DDL과 DML이 통합된 언어인 SQL을 사용한다.
high-level
:what
to getnonprocedural DML(declarative언어)
: 무엇을 처리할 것인지에 대해서 다루기때문- SQL이 대표적(RDBMS) : 4세대 선언적 언어라 쉽고, 질의 최적화 가능
set-at-a-time DML
: 1줄의 DML로 많은 record를 받을 수 있음- DML statement는
precomiler
에의해 추출되어 DBMS가 처리할 수 있어야한다. 터미널 환경에서 사용 or 범용목적 프로그래밍 언어에 탑재
해서 사용
low-level
:how
to getprocedural DML
- 네트워크, 계층형 모델(3세대)
record-at-a-time
: 1개의 record씩을 메모리에 올려서 처리한다.범용목적 프로그래밍 언어에 탑재되어야만한다.
DML embeded in general purpose programming lang
- js, java등의 범용목적 프로그래밍 언어를 통해 Database를 조작하는 코드를 작성했다고 생각해보자.
-
이때, DB를 조작하는 DML이 java, js 등의 언어 안에서 함수의 형태로
embeded
된 상태로 사용된다. host language
- DML명령어가 범용목적 프로그래밍언어에 탑재되었을때,
범용목적 프로그래밍 언어(general-purpose programming language)
를 host language라고 한다.
- DML명령어가 범용목적 프로그래밍언어에 탑재되었을때,
data sublanguage
- 위의 경우에, DML은
data sublanguage
라고 불린다. - 보통, host 언어에서
static binding(host 언어가 컴파일될 때 binding)
된 형태로 사용한다.
- 위의 경우에, DML은
DML used interactively
Query Language
high-level, declartive, nonprocedural, set-at-a-time
DML이 상호작용적으로 사용될때(terminal로 사용)를 의미.dynamic binding(runtime에 바로바로 결과 얻음)
으로 데이터를 전달한다.
Interface
- User-friendly interface
- 보통 GUI를 의미. 스키마를 보여준다.
- natural language interface
- 자연어를 통해 high-level DML을 생성한다.
- interface for
parametric users
(은행원)- 최소화된 키입력을 주어 반복적인 작업을 쉽게해준다.
- interface for
DBA
(privileged command)- 계정관리, 스키마 변경, 저장 구조 재조직화 등
DB system environment
️️️️️️️️️️️⭐️DBMS Component Modules
- 1장과 2장의 내용을 포함하는 그림이다.
- DBMS사용자 군에 따라서 사용하는 DBMS컴포넌트 모듈이 다르다.
⭐️️️️️️️DBA staff
-
DBMS는 DBA에게 2가지의 기능을 제공한다.
- 데이터 구조 정의
- DBA는 DB Designer가 정의한 스키마와 DBA로써 필요한 스키마에 해당하는 데이터 구조를
DDL STATEMENT
로 입력 - DBMS의
DDL compiler
가 파싱해서 해당하는 테이블 구조를system catalog/data dictionary
에 작성한다.
- DBA는 DB Designer가 정의한 스키마와 DBA로써 필요한 스키마에 해당하는 데이터 구조를
- 관리자 명령어
- 계정만들고, 인덱스를 만들고, 데이터 옮기고, 파일을 삭제하는 등의 일을 하는
Previleged Command
를 DBA가 입력하면 Runtime Database Processor
를 호출해 처리한다.
- 계정만들고, 인덱스를 만들고, 데이터 옮기고, 파일을 삭제하는 등의 일을 하는
️⭐️Casual Users
- 가끔 사용하지만, 다양하고 복잡한 정보를 원하는 유저들이다.(중간, 상위 관리자와 브라우저)
DML
을 사용해 데이터를 가져온다.(sqlite3를 터미널에서 실행해select * from table
을 하는 것 같은 작업)
Interactive Query
라고 부르는interactive 환경의 DML(터미널)
을 통해 수정, 삭제, 조회 등의 작업을 한다.- 1번에서 DML로 들어온 쿼리는
Query compiler
가 처리하는데, 이때 작성된 쿼리의 테이블, 속성 등이 DDL에 정의되어있는지 등의 문법오류를 체크한다. - 이후
Runtime Database Processor
가Stored Database
에서 데이터를 가져온다.
⭐️Application Programmer
- 웹 어플리케이션을 작성하면 소스코드에는
Host Language
(java, js 등)와 데이터를 조작하는 명령인DML Statement
가 함께 작성된다.
precompiler
가host language
와DML
을 분리한다.host language
는 host language compiler에 의해,DML Statement
는 DML compiler에 의해 각각 컴파일된다.- 이때,
DML compiler
는 Query compiler와 마찬가지로system catalog/data dictionary를 통해 DML 문장의 문법오류를 체크한다.
- 이렇게 컴파일된 각 코드를 합쳐
Compiled Transactions라고 불리는 실행파일
을 만들게된다. Compiled Transaction
은Runtime Database Processor
를 통해 데이터를 처리하게된다.
- 만들어진 실행파일은 나중에
parametric end user
가 사용하게된다.
⭐️Parametric End user
- Application Programmer가 작성한 프로그램을 사용한다.
- 해당 프로그램이 바로 위의
Compiled Transaction
이다. Compiled Transaction
은Runtime processor
를 통해 데이터를 처리한다.
⭐️Query comiler, DML compiler
-
casual end user의 interactive query를 컴파일하는 query compiler는 interactive 환경에서 빠르게 결과를 보여줘야하기때문에
full optimization을 하지 않는다.
-
Application Programmer가 사용하는 호스트 언어에 탑재된 DML statement를 컴파일하는 DML Compiler는
full optimization을 한다.
-
둘 다 DML을 컴파일 해야하기 때문에,
system catalog/data dictionary를 통해 문법오류를 확인한다.
submodules
Stored data manager
- 디스크 접근 제어
- database/catalog는 disk에 저장된다.
- OS의 I/O를 사용해 메모리 버퍼, 데이터 전송 조절을 한다.
DDL compiler
- 스키마 정의를 처리하고, DBMS catalog에 저장한다.
- 저장하기전에,
stored data manager
에 의해 디스크 접근이 제어된다.
run-time database processor
- runtime에 database에 접근한다.
- 명령을 받아 수행하기위해 disk에 접근할때,
stored data manager를 통해 접근한다.
query compiler
- interactive 환경에서 high-level query를 처리할때 사용되는 컴파일러.
- 이 또한 stored data manager에 의해 접근이 제어된다.
pre-compiler
- host language로 작성된 코드에서 DML statement를 분리한다.
- 분리된 host language와 DML statement는 각각 host language compiler와 DML compiler가 컴파일하게된다.
- 분리 컴파일된 코드는
compiled transaction
으로 실행파일로 만들어진다.
Database System Utilities
- DBA가 DB 시스템을 잘 관리하게끔 해주는 도구들
- Loading : 파일을 database로 변환해 넣어주는 역할
- backup : 전체 database의 복사본을 만들어 불상사에 대비한다.
- reorganization : DB파일을 성능 향상을 위해 다른 조직으로 옮길 수 있게 해준다.
- performance monitoring
- DBA가 DB 시스템을 잘 관리하게끔 해주는 도구들
Communication Facilities
- 통신을 위한 H/W + S/W + DB systems
- 분산형 DB 시스템을 위함
- client-server 구조로 되어있다.
DBMS 구조
- DB에는 실제 데이터 + 데이터 구조가 저장된다.
- 이는 실제 저장소에서 OS가 관리하게되는데, DBMS는
OS의 Files and Access Methods, Buufer Management, Disk Space Management
기능을 사용한다. - 쿼리최적화는 4세대 언어 (high level, nonprocedural, set-at-a-time, decalative)에서만 사용한다. (계층, 네트워크 모델은 최적화기능 없다.)
DBMS 분류 방법
데이터모델에 의한 분류
- 관계형(relational) DBMS
- 네트워크(network) DBMS
- 계층(hierarchical) DBMS
- 객체지향형(object-oriented) DBMS
사용자 수에 의한 분류
- single user system : 거의 안씀
- multiuser systems : 다중 사용자가 동시성 있게 접속
사이트 수에 의한 분류
- 중앙집중식(centralized) : 한 컴퓨터에 DBMS와 모든 database 있다.
- 분산(distributed) : 컴퓨터망으로 연결된 여러개의 사이트에 DBMS와 데이터베이스가 분산된다.
homogeneous DBMS
: 모든 사이트가 동일한 DBMS사용heterogeneous DBMS
: 사이트마다 다른 DBMS시용
목적에따른 분류
-
범용목적 DBMS : oracle, mysql
-
특수목적 DBMS : 실시간 DB, 전화번호부 등
댓글남기기