Database2018. 4. 24. 11:04

데이터 모델, 스키마, 인스턴스

데이터 모델(DB 모델): describing data, 데이터 관계, 데이터 시맨틱, 그리고 데이터 제약을 위한 추상화 도구들의 집합이다. (그래서 어느 정도의 데이터 추상화를 제공한다.) 대부분의 데이터 모델들은 DB에서의 검색과 업데이트를 지정하기 위한 기본적인 operations의 모음을 제공한다.


데이터 모델은 일반적으로 Structure of the data, Operations on the data, Constraints on data로 구성된다.

Relational Model에서:

-       Structure of the data: Table

-       Operations on the data: insert, delete, update와 같은 데이터 검색 기능

-       Constraints on the data: primary key, foreign key, etc.



데이터 모델 카테고리

-       High-level(Conceptual) data models

사용자들이 이해하는 개념과 가깝게 데이터를 제공. DBMS와 독립적이며, Entity-Relationship data model, Object data model이 이에 속한다.


-       Representational(Implementation) data models

End users에게 이해하기 쉽게 개념들이 제공되지만, 컴퓨터 저장 공간에 조직된 데이터와 크게 다르지 않다. DBMS에 종속적이며, Hierarchical data model, Network data model, Relational data model이 이에 속한다.


-       Low-level(Physical) data models

데이터가 저장소에 어떻게 저장되는지 record formats, record orderings, 그리고 access paths 등에 대한 정보를 제공하는 것으로 자세하게 설명한다. 하드웨어와 독립적이며, ISAM(Indexed Sequential Method), VSAM(Virtual Storage Access Method)가 이에 속한다.



스키마, 인스턴스, 데이터베이스 상태

데이터베이스 스키마: DB에 대한 설명이다. DB가 디자인 될 때 정의되며 자주 수정되지 않는다. 대부분의 데이터 모델은 스키마를 다이어그램으로 보이기 위한 적절한 규약이 있다.


데이터베이스 상태 (Snapshot/Occurences/Instances): DB 안의 데이터의 순간적인 상태. DB 상태는 시간이 지남에 따라 자주 변할 수 있다.

데이터베이스 스키마는 intention, 상태는 extension 이라고 불리기도 한다.


Schema evolution: 어플리케이션의 필요로 하는 것이 변함에 따라 스키마에 변화가 적용되는 것.



Three-Schema 아키텍쳐와 데이터 독립성

ANSI/SPARK three-schema architecture의 목표는 물리적인 DB와 사용자 어플리케이션을 분리하는 것이다.

1.     Internal level: 내부 스키마가 데이터가 실제로 어떻게 저장되는지 설명하고, DB의 물리적 공간 설계에 대해 설명한다.

2.     Conceptual level: 개념 스키마가 DB에 어떤 데이터가 저장되는지 설명하고, DB 전체적인 구조를 설명한다.

3.     External(View) level: 외부 스키마가 부분적인 사용자 그룹이 관여하는 DB의 일부에 대해 설명한다.


매핑(Mapping): DBMS는 이 레벨들 간의 요청과 결과를 변환하는 과정을 지원해야 한다.


데이터 독립성: 어떤 레벨에서 스키마가 변경될 때, 다음 상위 레벨의 스키마가 변경되지 않음. 두 수준 간의 매핑만 변경된다.

1.     Logical data independence: 외부 스키마나 응용 프로그램을 바꿀 필요 없이 개념 스키마(Conceptual schema)를 바꿀 수 있는 능력

2.     Physical data independence: 개념 스키마(Conceptual schema)를 바꾸지 않고 내부 스키마를 바꿀 수 있는 능력


다층 레벨 DBMS에서 카탈로그는 다양한 계층에서의 요청과 데이터를 어떻게 매핑할 것인지에 대한 정보를 포함하도록 확장되어야만 한다. 일부 DBMS들은 three-schema independence가 완전히 구현되어 있는데, 계층 간의 매핑을 위한 오버헤드를 만들기 때문이다.



DB 언어와 인터페이스

Data Definition Language(DDL): 개념 스키마, 내부 스키마(SDL: Storage Definition Language), 외부 스키마 및 사용자 Views (VDL: View Definition Language)를 지정한다.


Data Manipulation Language(DML): 데이터 검색, 삽입, 삭제, 업데이트를 허용한다.

1.     Low-level or 프로시저 DML(procedural DML): 일반적인 목적의 프로그래밍 언어에 임베딩 되어야만 한다. Record-at-a-time DMLs라고도 한다. (Hierarchical model’s DL/1: GET UNIQUE, GET NEXT, GET NEXT WITHIN PARENT)

2.     High-level or 비프로시저 DML(nonprocedural DML): 복잡한 DB Operations를 간결하게 표현하는데 사용될 수 있다. 어떻게 데이터를 검색할까에 대한 것보다 어떤 데이터를 검색할지에 대한 지정을 하는 선언적 언어(declarative language)이다. Set-at-a-time 혹은 set-oriented DMLs라고도 한다.

호스트 언어, 데이터 하위 언어, 쿼리 언어


Structed Query Language(SQL): 상업적 관계형 DBMS의 표준이다. 제약 조건 지정이나 다른 기타 기능 뿐이 아니라 DDLDML의 조합을 나타낸다.

-       DDL: CREATE, ALTER, DROP, etc

-       DML: SELECT, INSERT, DELETE, UPDATE

-       DCL: BEGIN TRANSACTION, COMMIT, ROLLBACK, GRANT, REVOKE, etc

프로시저 언어보다는 선언적 언어인데, 이는 사용자가 프로시저를 대해 단계마다 작성할 필요 없이 선언(Declare)할 수 있다는 의미이다.


웹 기반 Menu-based 인터페이스: 옵션 리스트를 보여주어 사용자에게 요청 수식을 만들 수 있도록 유도한다.


Forms-based 인터페이스: 사용자는 모든 입력 폼에 작성해 새로운 데이터를 삽입하거나, 일부 입력 폼만 작성해 DBMS에 존재하는 데이터를 검색한다.


GUI: GUI는 스키마를 도식화해서 사용자에게 보여주는 것으로 사용자는 다이어그램을 조작하는 것으로 쿼리를 지정할 수 있다.


Natural Language Interface: 영어나 다른 자연어로 작성된 요청을 허용한다.


Interfaces for Parametric Users: 은행원과 같이 반복적인 operations를 사용해야하는 경우이다.


Interfaces for the DBA: 대부분의 DB 시스템은 DBA에게만 사용될 수 있는 권한이 있는 명령을 포함한다.



DBS 환경

DBMS 컴포넌트 모듈: DDL Compiler, Interactive query interface (Query compiler, Query optimizer), Precompiler, DML compiler, Runtime database processor, Concurrency control system, Backup and recovery system, Buffer management, Stored data manager, System catalog.


Query Processing:

1.     Parsing and Translation

2.     Optimization

3.     Evaluation


Runtime DB Processor: 컴파일 혹은 인터프리트 모드에서 쿼리 코드를 실행해 쿼리 결과를 생산한다. 이것은 카탈로그, 데이터 저장 매니저, CC/Recovery Modules와 같은 대부분의 다른 DBMS 컴포넌트와 상호작용한다.


Concurrency Control Module: 관계형 DB의 데이터 무결성을 위반하지 않게 트랜잭션들이 수행하는 것을 보장한다. 또한, 록이나 타임스탬프 같은 메커니즘들을 통해 serializability를 보장한다.


Recovery Module: 오류가 나도 DB의 지속성, 트랜잭션의 원자화(atomicity)와 내구성을 보장한다. DBMSDB 복구를 위해 로그나 백업을 남긴다. 일반적인 트랜잭션 처리 중에는 오류가 발생해도 복구할 수 있도록 로그로 충분한 정보를 남긴다. 만약 오류가 발생하면 redoundo를 취해 DB가 원자성(atomicity)와 내구성을 보장하는 상태로 복구한다.


Buffer Manager: 페이지 교체 전략(Page replacement strategy)을 구현하여 디스크 액세스를 최소화하면서, 필요한 페이지를 프로세스가 확보할 수 있도록 디스크에서 주 메모리로 페이지를 가져오는 작업을 한다.


Database System Utilities:

-       Loading: 데이터베이스에서 writing program없이 텍스트나 sequential files와 같은 존재하는 데이터 파일들을 로드하는데 사용된다.

-       Backup: DB의 백업본을 tape나 다른 mass storage에 만들어 치명적인 디스크의 오류 시에도 복구할 수 있도록 한다.

-       Database storage reorganization: 데이터 타입의 변경을 허용한다.

-       Performance monitoring: DB의 사용량과 통계를 DBA에게 제공한다.


Tools, Application Environments, and Communications Facilities:

-       CASE 도구들은 DB 시스템들의 디자인 단계에서 사용된다.

-       데이터 사전(Data dictionary, Data repository) 시스템: 디자인, 사용 표준, 응용 프로그램 설명, 그리고 주로 사용자로부터 액세스 되는 사용자 정보를 담고 있다.

-       PowerBuilder 같은 응용 프로그램 개발 환경들

-       Communication software: 사용자에게 터미널, 워크스테이션, 혹은 PC에서 DB를 제어할 수 있도록 허용해준다.



DBMS를 위한 Centralized 클라이언트 및 서버 아키텍쳐

DBS의 아키텍쳐는 DB가 운영되고 있는 컴퓨터 시스템에 의해 크게 영향을 받는다.

-       중앙화된 아키텍쳐(Centralized architecture): 모든 DBMS의 기능성, 응용 프로그램 실행, 그리고 사용자 인터페이스 처리가 하나의 중앙 컴퓨터에서 처리되어 나간다. 사용자는 원격제어 터미널이나 PC를 통해 DB에 연결한다.

-       병렬처리 아키텍쳐(Parallel architecture): DBS의 처리를 바르게 하고 트랜잭션에게 빠르게 응답하도록 한다.

-       분산 아키텍쳐(Distributed architectrure): Homogeneous, Heterogeneous): 여러 DBS의 물리적으로 혹은 논리적으로 분산 되어있는 데이터를 다룬다.

-       클라이언트-서버 아키텍쳐: 서비스 요청자인 클라이언트와 리소스나 서비스를 제공하는 서버 사이의 일을 분산하는 응용 프로그램 구조이다.

-       클라우드 아키텍쳐: 클라이언트는 클라우드를 통해 DB에 접근 가능하며, 클라우드 DB 제공자의 서버에서부터 인터넷을 통해 사용자의 요구를 전달한다. DBaaS(DB as a Service)로 불리기도 하는데, 사용자가 하드웨어와 소프트웨어 혹은 기능을 위한 설정을 할 필요 없이 DB에 접근할 수 있기 때문이다.


기본 클라이언트/서버 아키텍쳐:

-       클라이언트: 사용자의 머신으로 UILocal processing을 제공한다.

-       서버: 하드웨어와 소프트웨어를 포함한 시스템으로 클라이언트 머신에게 파일 액세스, 프린트, 저장, 데이터베이스 접근 서비스를 제공한다. 특수한 기능에 따라 파일 서버, 프린터 서버, 웹서버 혹은 이메일 서버 등으로 불린다.

주로 클라이언트와 서버는 서로 분리된 하드웨어에서 컴퓨터 네트워크를 통해 통신하지만, 서버와 클라이언트가 같은 시스템 안에서 상주할 수 있다.


Two-Tier Client/Server Architectures for DBMSs: 클라이언트는 UI 프로그램과 응용 프로그램을 다룬다. 서버는 SQL 처리와 관련된 쿼리와 트랜잭션 기능을 다룬다. 그리고 ODBC, JDBC 같은 APIClient-side 응용 프로그램에서 DBMS를 호출하는 것을 허용한다.


Three-Tier and n-Tier Architectures for Web Applications: 웹 응용 프로그램들은 클라이언트와 서버 사이에 중간 층을 더한 three-tier architecture로 불리는 아키텍쳐를 사용한다. N-Tier는 저장된 데이터와 사용자 간에 더 미세한 구성 요소로 여러 층을 나눈다. 전형적으로, 비즈니스 논리 층은 여러 층으로 나뉜다. ERPVendorsCRM 패키지들은 보통 middleware를 사용한다.



DBMS의 구분

데이터 모델: Hierarchical and Network(legacy), 관계형, 객체, 객체 관계형, XML


사용자 수: Single/Multi


Site의 개수: Centralized, Distributed, Fenderated(연합) DBMS (or Multidatabase system)


가격: 오픈소스, 라이센싱

일반적 혹은 특수 목적: 특수 목적 DBMS는 항공 서비스나 전화국 시스템과 같은 성능이 주요 고려 사항인 특별한 application을 위해 만들어졌다.


'Database' 카테고리의 다른 글

[Database] 5. The Basic SQL  (0) 2018.04.24
[Database] 4. The Basic Relationship Model  (0) 2018.04.24
[Database] 3. Entity-Relationship Model  (0) 2018.04.24
[Database] 1. DB and Users  (0) 2018.04.24
Posted by BinZIP