본문 바로가기
Computer Science/Database

[DB] DBMS의 구조와 아키텍쳐

by seaweed_one 2023. 3. 7.
728x90

지난번 포스팅에서 데이터베이스 시스템은 자기 기술성을 가진다고 말씀드렸습니다.

또 사용자의 입맛에 맞는 데이터만 조회할 수 있도록 다중 뷰를 제공한다고도 말씀드렸죠.

 

오늘은 데이터베이스 시스템의 구성에 대해 포스팅해보려고 합니다.

 

DBMS의 구조 

데이터베이스를 쉽게 이해하고 이용할 수 있도록 관점에 따라 외부단계, 개념단계, 내부단계 이렇게 세 단계로 나눌 수 있습니다.

각 단계별로 다른 추상화를 제공합니다.

외부단계(External Level)

실제 사용자가 필요한 데이터를 볼 수 있는 부분으로 사용자 뷰를 나타냅니다.

전체 디비의 한 논리적인 부분으로  Sub Schema라고도 합니다.

하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있습니다.

같은 데이터베이스를 사용하더라도 사용자들이 서로 다른 관점에서 데이터 베이스를 정의할 수 있는 것이죠.

일반 사용자는 외부단계 외에는 볼 수 없습니다.

 

개념단계(Comceptual Level)

데이터베이스 전체의 논리적인 논리 구조를 정의한 것으로 데이터의 규모와 구조, 의미 등을 정의합니다.

즉 메타데이터를 나타냅니다.

우리가 흔히 스키마라고 부르는 단계로 데이터베이스 하나에 하나의 개념 스키마가 존재합니다.

일반사용자 혹은 프로그래머가 전체적인 데이터의 구조를 보고 싶을 때 사용하는 단계입니다.

 

내부단계(Internal Level)

저장 스키마(Storage Schema)라고도 합니다.

물리적인 단계로 실제 어떤 데이터가 어떤 파일에 몇 kb로 저장되어 있는지를 저장합니다.

데이터베이스 하나에 하나의 내부 스키마가 존재합니다.

내부단계는 개념 스키마를 어떻게 저장할지 고민하는 단계입니다.

 

 

위의 세 단계 간의 접속에서 단계 간의 대응 관계를 정의한 사상이 존재합니다.

외부-개념 단계 사이에 별도의 사상이 존재하고 개념-내부 단계 사이에도 별도의 사상이 존재합니다.

 

외부-개념 사상(응용 인터페이스, Application Interface)

외부 - 내부 스키마 간의 상호 연관성을 정의합니다.

이 과정에서 논리적 데이터의 독립성이 확보됩니다.

논리적 독립성이란 무엇일까요?

기존 외부 스키마에 영향 없이 개념 스키마에 대한 변화가 가능해야 한다는 개념입니다.

예를 들어 테이블 및 컬럼이 추가되더라도 외부 뷰에서 영향을 받지 않아야 한다는 개념입니다.

 

개념-내부 사상(저장 인터페이스, Storage Interface)

개념 - 내부 스키마 간의 상호 연관성을 정의합니다.

이 사상을 통해 물리적 데이터의 독립성이 확보됩니다.

물리적 독립성이란 내부 스키마의 변화가 개념 스키마에 영향을 미치지 않아야 한다는 개념입니다.

파일의 저장 구조를 변경하는 경우에 개념 스키마에 영향이 가지 않고 개념 스키마에 영향이 가지 않으므로 외부 스키마에도 영향을 미치지 않습니다.

 

 

DBMS 시스템 아키텍처

전체 시스템을 구성하는 방식에 따라 중앙 집중식과 분산 시스템 방식으로 구성할 수 있습니다.

중앙 집중식 구성

데이터베이스 시스템이 하나의 컴퓨터 시스템에서 운영됩니다.

단일 서버가 다수의 클라이언트 장치를 대신하여 작동합니다.

장점은 중앙 서버 한대만 구축하면 되기 때문에 저렴하다는 장점이 있지만 중앙 컴퓨터에 과부하가 걸리면 전체적 성능이 저하된다는 단점이 존재합니다.

 

분산 시스템 방식 구성

위의 단점을 보완하기 위하여 등장한 새로운 아키텍처입니다.

가장 대표적으로 client - server database system이 존재합니다.

과거에는 컴퓨터의 가격이 비싸고 성능이 좋지 않았습니다.

해서 고성능의 중앙 서버를 두는 방식으로 구성했는데요.

현재 컴퓨터들은 서버급으로 성능이 향상되었고 비용도 저렴해졌기 때문에 자체적인 처리 능력을 보유한 클라이언트에게 서 서버에서 데이터를 넘겨주면 클라이언트가 처리하는 방식으로 발전하였습니다.

이런 CS 방식은 크게 두 가지 방식이 존재합니다.

2 계층과 3 계층 구조로 나뉘게 됩니다.

2 계층 구조

애플리케이션이 클라이언트 사이드에 존재합니다.

클라이언트와 데이터베이스 서비스가 직접 연결되는 구조입니다.

2계층 구조는 애플리케이션 프로그램의 부하를 분산할 수 있으며 소프트웨어의 유지보수 비용 절감 및 이식성이 증가됩니다.

 

3 계층 구조

클라이언트와 데이터베이스 서버 사이에 응용서비스가 추가되었습니다.

개발 시 많은 비용이 소요된다는 단점이 있지만 어떠한 업무 처리 방식 변경 시 애플리케이션 서버만 변경하면 되므로 지속적으로 유지보수가 용이하다는 장점도 가지고 있습니다. 

 

어떤 아키텍처가 절대적으로 좋다기보다는 상황과 특징에 맞춰 적절한 아키텍처를 선정하는 것이 좋습니다.

 

 

728x90