데이터 베이스의 개념 및 이해

YongHo·2024년 3월 17일

나만의 프로그램을 만들어 보고 싶어서 간단한 응용 프로그램을 만들었었다... 뿌듯함도 잠시, 그때는 데이터 베이스의 기초 지식도 없이 간단하게 구현해서 작동을 시켰었는데 n명의 접속이 되는 순간 금방 프로그램이 종료가 되고 원할하게 돌아가지 않았었다... 그래서 백엔드 서버에 관심이 생겼고 찾아보던 도중 데이터베이스 수업을 들을 기회가 있어서 듣게 되었다. 오늘은 데이터 베이스의 개념을 적어보려고 합니다.

데이터베이스란?
여러 사람이 공유하여 사용할 목적으로 체계화하여 통합, 관리하는 데이터의 집합체
특정 조직의 응용 업무에 공동 사용하기 위한 영속적 데이터의 집합체

간단하게 말하자면 여러 사람이 공유해서 사용할 목적으로 체계화된 형태로 데이터를 관리하는 것이다.


위 그림은 영속적 데이터를 간단하게 설명해주는 표다.

데이터베이스는 그 자체만으로는 아무것도 할 수가 없다. 그렇기 때문에 그걸 관리하는 시스템 DBMS(DataBase Management System)과 통합되어 제공된다.

데이터베이스를 운영하는 데 사용되는 소프트웨어는 크게 2가지로 나뉜다. 하나는 DBMS인데, 이 시스템을 이용해 우리는 데이터베이스를 만들고 수정하고 삭제하는 작업을 통해, 조회하고 관리를 하게 된다. 또 하나는 응용 프로그램인데 실제 데이터베이스의 특정 데이터를 연결해 사용하게 된다. 예로 정부24 웹 시스템을 보게 되면 여러 민원 업무를 접수하고 거기에 대한 결과를 돌려받게 되는데 그 모든것이 데이터베이스로부터 데이터를 가져오게 된다.

데이터베이스의 장점

  • 대규모의 문서화된 파일과 종이 문서를 유지, 보관할 필요가 없다.
  • 컴퓨터는 대량의 정보에 대해 인간보다 훨씬 더 신속하게 검색하고 변경한다.
  • 컴퓨터는 정해진 업무에 대한 처리에 있어 정확성을 보장 받을 수 있다.
  • 수작업에 의해 정보를 유지, 관리하는데 소비되는 많은 비용을 감소시킬 수 있다.


물리적 데이터 독립성(physical data independence)가 있는데, 데이터의 논리적 구조나 프로그램을 수정하지 않고 시스템 성능을 향상시키기 위해 데이터의 물리적인 저장 형식과 그 구성의 변경이 허용되는 것이다. 이게 무슨 말이냐면 My SQL 같은 프로그램 ver을 업데이트 하더라도 안의 데이터는 삭제되거나 변경되는 일이 없다는 것이다. 그리고 논리적 데이터 독립성(logical data independence)는 데이터베이스의 논리적인 구조가 변하더라도 응용 프로그램에는 아무런 영향을 미치지 않는 것이다.
My SQL같은 프로그램에서 내부 구조를 변경하더라도 상단 프로그램인 웹 화면에는 아무런 영향을 미치지 않는 것이다.

그렇다면 이 두 효과로 얻어지는 것이 무엇이냐? 데이터베이스 응용 프로그램들을 수정하지 않고도 구성, 표기방법, 저장 위치를 변경할 수 있으며, 데이터를 처리하는 하드웨어나 소프트웨어를 보다 발전된 형태로 변경 또는 대체할 수 있다는 장점이 있다.

DBMS의 논리적 구조

  • 외부 단계 : 특정 사용자 관점의 일부 데이터베이스를 논리적으로 기술한 단계
  • 개념 단계 : 조직 전체 또는 관리자 관점의 전체 데이터베이스를 논리적 구조로 기술한 단계
  • 내부 단계 : 전체 데이터베이스의 물리적 저장 구조에 대해 기술된 단계

DBMS의 외부 단계(external level)은 사용자가 보는 관점에서의 데이터베이스 논리 구조로 전체 DB중 사용자에게 보여지는 일부분이다. 이를 외부 스키마라고 한다. 외부 스키마에는 부스키마(subschema), 뷰(view), 정의된 논리적 구조 등이 있다.

뷰(View): 뷰는 하나 이상의 테이블에서 선택된 열(속성)과 행(레코드)으로 구성된 가상 테이블이다. 뷰는 사용자에게 데이터베이스의 일부분만을 제공하거나, 여러 테이블을 조인하여 하나의 가상 테이블로 표현할 수 있다. 이를 통해 사용자는 필요한 데이터만을 직관적으로 조회할 수 있다.

부스키마(Subschema): 부스키마는 외부 스키마를 실제 데이터베이스의 스키마로 매핑시키는 역할을 한다. 즉, 사용자가 정의한 외부 스키마를 실제 데이터베이스의 테이블 및 관계로 변환하는 과정에서 사용된다.

DBMS의 개념 단계(conceptual level)은 전체 조직이나 DB관리자가 보는 관점에서의 논리적 구조로 개념 스키마라고도 불린다. 일반적으로 '스키마'라고 하면 개념 스키마를 의미한다. 개념 스키마에는 전체 데이터베이스의 대상 개체에 대한 속성, 형식, 제약조건, 사용자 연산 등과 개체들 간의 관계가 기술 된다.

마지막 DBMS의 내부 단계(internal level)은 물리적인 저장과 가장 깊은 연관을 갖고 있는 단계이다. 실제로 데이터가 저장된 방식의 표현으로 내부 스키마, 저장 스키마라 불린다. 전체 데이터베이스 중 하위 단계를 표현한다.

#DBMS의 요구 처리 과정
질의 작성(Query Composition):
사용자는 질의어(Query Language)를 사용하여 필요한 정보를 요청합니다. 이 질의어는 데이터베이스에 저장된 데이터에 대한 조회, 수정, 삭제 등의 작업을 포함할 수 있습니다. 예를 들어, 사용자가 "모든 고객의 이름과 이메일 주소를 조회해주세요"와 같은 질의를 작성할 수 있습니다.
질의 분석(Query Parsing):

DBMS는 사용자가 전송한 질의를 분석하여 이해합니다. 이 과정에서 질의의 구문을 분석하고 해석하여 데이터베이스에서 어떤 작업을 수행해야 하는지를 파악합니다. 질의가 올바른 문법인지, 사용자가 적절한 권한을 가지고 있는지 등을 검사합니다.
질의 최적화(Query Optimization):

분석된 질의에 대해 DBMS는 최적화된 실행 계획을 수립합니다. 이는 데이터베이스에서 효율적으로 데이터를 가져오고 처리하기 위한 최적의 방법을 결정하는 과정입니다. 최적화는 다양한 실행 계획을 고려하여 질의의 실행 속도를 최대화하고 시스템 자원을 효율적으로 활용하는 것을 목표로 합니다.
질의 실행(Query Execution):

최적화된 실행 계획에 따라 DBMS는 필요한 물리적 연산을 수행하여 사용자에게 요청된 정보를 제공합니다. 이 과정에서 데이터베이스에서 데이터를 읽거나 쓰는 등의 작업이 수행됩니다. 결과는 일반적으로 사용자에게 반환되거나 응용 프로그램에 전달됩니다.

#데이터 언어(Data Language)
데이터 정의어(DDL: Data Definition Language):
데이터 정의어는 데이터베이스의 구조를 정의하고 변경하기 위해 사용됩니다. 주로 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성, 수정, 삭제하는 데에 사용됩니다.
대표적인 DDL 명령어에는 다음과 같은 것들이 있습니다:
CREATE: 새로운 데이터베이스 객체를 생성합니다.
ALTER: 기존 데이터베이스 객체를 수정합니다.
DROP: 데이터베이스 객체를 삭제합니다.
예를 들어, CREATE TABLE 문은 새로운 테이블을 생성하고 그 구조를 정의할 때 사용됩니다.

데이터 조작어(DML: Data Manipulation Language):
데이터 조작어는 데이터베이스에 저장된 데이터를 조회, 삽입, 수정, 삭제하는 데에 사용됩니다. 즉, 데이터베이스에 대한 실질적인 작업을 수행합니다.
가장 일반적인 DML 명령어는 다음과 같습니다:
SELECT: 데이터베이스에서 데이터를 조회합니다.
INSERT: 새로운 데이터를 데이터베이스에 삽입합니다.
UPDATE: 데이터베이스 내의 기존 데이터를 수정합니다.
DELETE: 데이터베이스에서 데이터를 삭제합니다.
예를 들어, SELECT 문은 데이터베이스에서 특정 조건에 맞는 데이터를 조회할 때 사용됩니다.
데이터 제어어(DCL: Data Control Language):

데이터 제어어는 데이터베이스에 대한 액세스 권한을 제어하고 관리하는 데 사용됩니다. 이는 데이터베이스의 보안과 무결성을 유지하기 위해 필요합니다.
대표적인 DCL 명령어에는 다음과 같은 것들이 있습니다:
GRANT: 사용자에게 특정 데이터베이스 객체에 대한 액세스 권한을 부여합니다.
REVOKE: 사용자로부터 특정 데이터베이스 객체에 대한 액세스 권한을 제거합니다.
예를 들어, GRANT 문은 사용자에게 특정 테이블을 조회할 권한을 부여할 때 사용됩니다.

DBMS의 요구 처리 과정

질의 작성(Query Composition):
사용자는 질의어(Query Language)를 사용하여 필요한 정보를 요청한다. 이 질의어는 데이터베이스에 저장된 데이터에 대한 조회, 수정, 삭제 등의 작업을 포함할 수 있다. 예를 들어, 사용자가 "모든 고객의 이름과 이메일 주소를 조회해주세요"와 같은 질의를 작성할 수 있다.

질의 분석(Query Parsing):
DBMS는 사용자가 전송한 질의를 분석하여 이해한다. 이 과정에서 질의의 구문을 분석하고 해석하여 데이터베이스에서 어떤 작업을 수행해야 하는지를 파악한다. 질의가 올바른 문법인지, 사용자가 적절한 권한을 가지고 있는지 등을 검사한다.

질의 최적화(Query Optimization):
분석된 질의에 대해 DBMS는 최적화된 실행 계획을 수립한다. 이는 데이터베이스에서 효율적으로 데이터를 가져오고 처리하기 위한 최적의 방법을 결정하는 과정이다. 최적화는 다양한 실행 계획을 고려하여 질의의 실행 속도를 최대화하고 시스템 자원을 효율적으로 활용하는 것을 목표로 한다.

질의 실행(Query Execution):
최적화된 실행 계획에 따라 DBMS는 필요한 물리적 연산을 수행하여 사용자에게 요청된 정보를 제공한다. 이 과정에서 데이터베이스에서 데이터를 읽거나 쓰는 등의 작업이 수행된다. 결과는 일반적으로 사용자에게 반환되거나 응용 프로그램에 전달된다.

데이터 언어(Data Language)

데이터 정의어(DDL: Data Definition Language):
데이터 정의어는 데이터베이스의 구조를 정의하고 변경하기 위해 사용된다. 주로 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성, 수정, 삭제하는 데에 사용된다.

CREATE: 새로운 데이터베이스 객체를 생성한다.
ALTER: 기존 데이터베이스 객체를 수정한다.
DROP: 데이터베이스 객체를 삭제한다.
예를 들어, CREATE TABLE 문은 새로운 테이블을 생성하고 그 구조를 정의할 때 사용된다.

데이터 조작어(DML: Data Manipulation Language):
데이터 조작어는 데이터베이스에 저장된 데이터를 조회, 삽입, 수정, 삭제하는 데에 사용된다. 즉, 데이터베이스에 대한 실질적인 작업을 수행한다.

SELECT: 데이터베이스에서 데이터를 조회한다.
INSERT: 새로운 데이터를 데이터베이스에 삽입한다.
UPDATE: 데이터베이스 내의 기존 데이터를 수정한다.
DELETE: 데이터베이스에서 데이터를 삭제한다.
예를 들어, SELECT 문은 데이터베이스에서 특정 조건에 맞는 데이터를 조회할 때 사용된다.

데이터 제어어(DCL: Data Control Language):
데이터 제어어는 데이터베이스에 대한 액세스 권한을 제어하고 관리하는 데 사용된다. 이는 데이터베이스의 보안과 무결성을 유지하기 위해 필요하다.

GRANT: 사용자에게 특정 데이터베이스 객체에 대한 액세스 권한을 부여한다.
REVOKE: 사용자로부터 특정 데이터베이스 객체에 대한 액세스 권한을 제거한다.
예를 들어, GRANT 문은 사용자에게 특정 테이블을 조회할 권한을 부여할 때 사용된다.

처음으로 데이터베이스 기초에 대해 공부했지만 아직 많이 멀었다는것을 느낀다..

더욱 자세한 내용은 아래 블로그를 통해 확인할 수 있다.
https://brunch.co.kr/@toughrogrammer/17

0개의 댓글