Web/DataBase

[ DataBase - Basic ] - DB, DBMS의 기초

Hyunseo😊 2023. 7. 17. 15:32

DBMS의 동작 원리

실제 우리가 사용하는 DB즉 DBMS가 동작하는 원리는 위의 그림과 같습니다. 먼저 우리의 애플리케이션이 있고, 이 앱이 쿼리를 DBMS Software에 날리고, DBMS는 이 쿼리를 파싱한다음에, 해당 쿼리 요청을 파악합니다. 이를 하기 위해서는 DB에 저장되어 있는 Meta-Data를 찾아서 이를 바탕으로 실제 Store된 데이터에 접근하고 찾은 값을 우리의 애플리케이션에 되돌려주는 것이 일반적인 DBMS의 동작방식입니다.

 

three-schema architecture

이는 DB를 구성하는 가장 기본적인 방법입니다. 이는 user appliation으로부터 물리적인(physical) database를 분리시키려는 목적이 가장 큽니다. three-schema의 의미는 세 가지 level이 존재한다는 의미고 각각의 level 마다 schema가 정의되어 있습니다. 그 종류로는 external schemas(or user views)at external level, conceptual schemas at conceptual level, internal schemas at internal level 이 있겠습니다.

 

 

 

internal schema

이는 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현됩니다. 즉 data storage, data structure, access path 등등 실체가 있는 내용을 기술하는 부분입니다.

 

external schema

이는 실제 사용자가 바라보는 schema입니다. 이는 실제 사용자가 보기 때문에 external views, user views라고도 합니다. 이는 또한, 특정 유저들이 필요로 하는 데이터만 표현합니다. 사용자마다 필요로 하는 데이터가 다를 것인데, 이를 가능하게 해줍니다. 그 외 알려줄 필요가 없는 데이터는 숨깁니다. 이는 logical dat amodels을 통해 표현됩니다.

 

conceptual schema

원래 초창기에는 internal, external schema밖에 없었는데, internal level에서 중복되는 값들이 무수히 많아지기 시작해서, 이들을 관리하는 즉 추상화를 위한 level이 필요해지게 되었는데 이 때문에 생겨난 것이 conceptual schema입니다. 기존의 문제점때문에 데이터 불일치, 데이터 비효율성 등등이 생겨났는데 이로인해 해결될 수 있었죠.

 

이는 전체 database에 대한 구조를 기술합니다. 즉 internal schema를 한 번 추상화해서 표현한 것이라고 생각하면 좋습니다. 하지만 물리적인 저장 구조에 대한 내용은 숨깁니다. 이는 entities, data types, relationships, user operations, constraints에 집중하고 external schema와 동일하게 logical data model을 통해 기술됩니다. 

 

 

three-schema architecture

이를 그래서 정리하면, 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함입니다. 하지만 현대의 대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않습니다. 즉 위 그림에서 ineternal schema를 변경한다고 해도 conceptual schema를 변경할 필요는 없게 된다는 것입니다. 즉 이들 사이의 mapping만을 변경해주면 됩니다. 그래서 더 안정적으로 DBMS를 운영할 수 있다 라고 생각하면 됩니다. conceptual과 external schema의 관계도 동일합니다.

 

그리고 internal <-> conceptual 간의 추상화는 쉽지만, conceptual schema를 변경해도 external schema를 변경하지 않게 추상화하는 것은 상대적으로 어렵습니다. 그래서 오늘날의 DBMS는 명시적으로 나누지 않는다는 것입니다!! 

 

Data Definitiln language (DDL)

이는 conceptual schema를 정의하기 위해 사용되는 언어입니다. 이를 통해 ineternal schema까지 정의할 수 있지만, 대부분의 internal schema는 DB의 parameters를 통해 정의합니다. 

 

Storage definition language (SDL)

이는 internal schema를 정의하는 용도로 사용되는 언어입니다. 하지만 요즘은 톡히 relational DBMS에서는 SDL은 없고 파라미터 등의 설정으로 대체됩니다.

 

View definition language (VDL)

VDL은 external schemas를 정의하기 위해 사용되는 언어입니다. 대부분의 DBMS에서는 DDL이 VDL의 역할까지 수행합니다. 

 

Data manipulation language (DML)

이는 DB에 있는 data를 활용하기 위한 언어입니다. 즉 data 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어라고 생각하면 쉽습니다!

 

그리고 오늘 날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재합니다. 이의 대표적인 예시가 relational database language인 SQL이 있습니다.