본문 바로가기
Programming/Database System

데이터베이스 (DB)의 이해

by kghworks 2022. 2. 18.

목표

  • 데이터베이스의 개념을 이해한다.
  • 데이터베이스의 특징을 이해한다.
  • 데이터베이스의 구성요소를 파악한다.

 

목차

  • 데이터베이스의 등장 배경과 역할
  • 데이터베이스의 특징
  • 데이터베이스의 구성요소

 

 데이터베이스란 무엇이며, 그 등장 배경과 역할에 대해서 이야기하고, DB, DBMS, 데이터베이스 시스템과 같이 모호하게 사용하고 있는 DB 기본 용어를 바로 알고자 합니다.


데이터베이스의 등장 배경과 역할

출처 : IDC (2014)

 현재 얼마나 많은 데이터의 양을 만들어내고 있는지를 알려주는 이미지입니다. 2013년까지는 4.4 제타바이트의 데이터가 만들어졌다면 2020년까지 44 제타바이트에 달하는 데이터가 만들어질 것이라고 2014년에 예측한 자료입니다. 실제로는 그보다 더 많이 만들어진 것으로 예상된다고 합니다. 데이터를 만들어내는 속도 그 자체가 올라간다는 뜻이기도 합니다.

 

 그렇다면 이 데이터들을 적재적소에 잘 찾아서 사용할 수 있어야합니다. 문제는 데이터를 찾는 속도는 데이터의 양에 반비례한다는 것입니다. 이것이 데이터베이스가 등장한 근본 배경입니다. 데이터베이스가 가져야할 기본 역할은 아래와 같습니다.

 

  • 데이터를 저장한다.
  • 저장한 데이터를 효율적으로(신속하게) 찾는다.

 

 데이터베이스 이전 데이터 관리방식은 파일처리 시스템이었습니다. 파일 처리 시스템은 각 애플리케이션이 개별적으로 데이터 파일을 저장하여 관리하는 시스템입니다. (아래 그림 참고)

 

파일처리 시스템의 방식

 각 애플리케이션의 업무에 따라 각자가 필요한 데이터를 각각 보관하고 관리하는데 이런 파일 처리 시스템은 아래와 같은 문제를 가집니다.

 

  • 데이터 종속성
  • 중복 데이터의 존재 (공간 점유)
  • 무결성 훼손
  • 동시 접근의 한계

 

데이터 종속성

 종속된다는 것은 자주성이 없이 어떤 주가되는것에 딸려 붙게 되는 것을 말합니다. 파일 처리 시스템은 데이터의 자주성이 없으며, 그 데이터를 사용하는 애플리케이션에 종속되게 됩니다. 위와 같은 상황에서 A 관련 데이터들의 물리적, 논리적인 구조가 바뀌면 A 애플리케이션에도 영향을 끼치게 됩니다. 이렇게 물리적 종속성, 논리적 종속성이라는 문제가 발생하게 되는 것입니다.

 

중복 데이터의 존재 (공간 점유)

 A관련 데이터들과 B 관련 데이터들 사이에 중복 데이터가 존재할 수 있습니다. 물리적으로 공간이 분리되어 있고, 각 애플리케이션은 자신의 비즈니스와 관련된 데이터들에만 접근을 하는데, 이때 중복된 비즈니스 혹은 데이터가 필요할 수도 있기 때문입니다. 하나의 파일 처리 시스템을 사용하는 애플리케이션이 많아지고 하는 일이 커질수록 이렇게 중복된 데이터가 많아지고 이는 불필요한 공간을 점유하는 문제를 만듭니다.

 

무결성 훼손

 데이터의 무결성이란 데이터의 정확성을 보장하며, 각 데이터들에 데한 제약조건을 만족시키는 것을 말합니다. 데이터의 이름은 숫자로만 이루어져야 된다. 데이터의 크기가 일정 크기 이상을 넘으면 안 된다 등이 제약조건이 될 수 있습니다.

 위에 명시한 중복데이터가 많아지게 되면 데이터의 모니터링, 관리가 어렵고 이는 제약조건들을 깨뜨려 데이터의 무결성을 훼손하는 문제가 발생하게 됩니다.

 

동시 접근의 한계

 A 관련 데이터에 홍길동 정보가 있고, B 관련 데이터에도 홍길동 정보가 있다고 가정합시다. 이때 A 애플리케이션이 홍길동의 주소를 변경한다고 했을 때 B 데이터의 홍길동 주소 정보와 달라지게 됩니다. 그럼  애플리케이션 입장에서는 같은 홍길동의 주소 정보를 다르게 보여주게 되고, 이는 데이터의 정확성을 깨트리게 되는 것입니다.

 

동시접근의 문제

 

 위와 같은 파일처리 시스템의 문제들을 해결하기 위해 등장한 것이 데이터 베이스 (Database)와 DBMS (데이터베이스 관리 시스템, database management system)입니다. 데이터들은 데이터베이스 (DB, Database)에 저장해 두고 DBMS가 이 데이터베이스에 접근하여 데이터를 사용자에게 보여주는 역할을 하는 것입니다. 결론적으로 사용자는 DBMS에만 접근하여 데이터를 관리할 수 있도록 하게 된 것입니다.

 현직자들도 업무 상에서는 DBMS와 데이터베이스를 합쳐서 그냥 "디비"라고 부릅니다. 그러나 데이터 베이스의 정확한 이해를 위한 포스팅이기 때문에 엄밀히 정의하면 아래와 같습니다.

 

  • 데이터베이스 (Database) : 애플리케이션 시스템에서 사용하는 데이터의 집합
  • 데이터베이스 관리 시스템 (DBMS) : 데이터베이스에 저장된 데이터들을 관리, 사용하는 소프트웨어
  • 데이터베이스 시스템 (Database system) : 애플리케이션에서 DBMS를 통해 데이터베이스에 접근하는 컴퓨터 시스템 전체

데이터베이스의 특징

 이렇게 등장한 데이터베이스는 어떤 특징을 가지는지 알아보겠습니다.

 

  • 자기 기술성
  • 애플리케이션과 데이터의 분리, 추상화
  • 다중 뷰

 

자기 기술성

 데이터베이스는 자신이 가지고 있는 데이터들 뿐만 아니라 메타 메이터, 데이터들의 정의, 제약조건 등을 자신의 데이터베이스에 저장합니다.

 

애플리케이션과 데이터의 분리, 추상화

 애플리케이션은 데이터와 분리되고, 애플리케이션은 추상화된 데이터 (개념)들을 사용합니다. 

 

다중 뷰

 데이터베이스는 사용자 입장에서 필요한 부분만 뷰 (외부 스키마)로서 정의하여 사용하고 데이터의 실체는 내부에 감추게 됩니다. 이로서 보안성을 높일 수 있는데요. 만일 내부를 감추지 않고, 사용자 입장에서 직접 접근이 가능하도록 한다면 다음과 같은 경우가 발생합니다.

은행에 가서 10만원을 은행원에게 입금 요청을 했을 때
은행원은 데이터베이스 1번 서버의 3번째 디스크 N번 레코드에 10만 원을 더하여 입력한다.

 이 말은 은행원 (사용자)이 내 잔액 데이터가 물리적인 공간 어디에 저장되어있는지 알고 있고, 충분히 그 데이터를 맘대로 수정할 수 있다는 것입니다. 그래서 아래와 같은 1개 이상의 다중 뷰 그리고 각 단계가 설계된 것입니다.

 

데이터베이스의 계층 구조

외부 단계

 사용자 (개발자)가 개인의 입장에서 데이터베이스의 논리적인 구조를 정의하여 하나의 를 만듭니다. 이 하나를 외부 스키마라고도 합니다. 데이터베이스 하나에 여러 사용자가 존재하므로 외부 스키마는 1개 이상이며 이런 외부 스키마들이 있는 단계를 외부 단계라고 합니다. 외부 스키마의 특징은 다음과 같습니다.

 

  • 데이터들을 어떤 형식, 구조를 통해 보여줄 것인가
  • 하나의 외부스키마를 여러 애플리케이션 (사용자)가 사용 가능
  • 하나의 DB에 대해 다른 관점 (뷰)로 정의할 수 있음

 

개념 단계

 데이터베이스의 전체적인 논리적 구조를 말하며 논리적 단계라고도 합니다. 실제 어떤 데이터들이 어떻게 관계를 이루며 저장되어있는지를 말합니다. 이 논리적인 구조에는 데이터 간의 관계, 제약조건, 접근권한, 무결성 규칙들이 있습니다. 개념 스키마라고도 하며, 데이터베이스 하나에는 단 하나의 개념 스키마가 존재합니다. 

 

내부 단계

 물리적인 저장장치 (디스크) 입장에서의 디비 명세를 말하며 물리적 단계라고도 합니다. 이 물리적 단계에는 실제 데이터가 저장될 내부 레코드 형식, 물리적 순서, 인덱스의 존재 유무 등이 있습니다.  내부 스키마라고도 하며 운영체제의 파일 시스템은 내부 스키마에 명세된 것을 참고하여 저장장치에 기록합니다. 그러므로 내부 스키마는 시스템 저장장치와 물리적으로 아주 밀접한 계층입니다.

 

트랜잭션

 트랜잭션이란 데이터의 상태를 변화하기 위한 DB의 명령(논리적인 작업 단위)입니다. 이 작업은 데이터의 생성, 수정, 삭제 등이 될 수 있고, 명령에는 1개 이상의 연산들이 들어있습니다. 트랜잭션에 대해서는 따로 포스팅을 하여 자세히 다루도록 하고 여기서는 간단히 설명하고 넘어가겠습니다.


데이터베이스의 구성요소

데이터베이스는 2가지로 구성됩니다.

 

  • 데이터베이스 언어 
  • 아키텍쳐

 

데이터베이스 언어 

 사용자는 데이터베이스에 접근할 때 질의어를 사용하여 접근하게 됩니다. 데이터베이스의 데이터에 접근하는 언어로서 SQL이라고도 합니다. 이 SQL에는 크게 DDL, DML, DCL이 있습니다.

 먼저 DDL(Data Definition Language)은 데이터 정의어라고 하며 데이터의 전체 골격을 결정하는 언어로서 그 종류는 다음과 같습니다.

 

  • CREATE : 데이터베이스, 테이블을 생성한다.
  • ALTER : 테이블을 수정한다.
  • DROP :  데이터베이스, 테이블을 삭제한다.
  • TRUNCATE : 테이블을 초기화한다.

 

 DML(Data Manipulation Language)은 데이터 조작어라고 합니다. 데이터베이스의 레코드를 수정하거나, 삭제하는 역할을 합니다.

 

  • SELECT : 데이터를 조회한다
  • INSERT : 데이터를 삽입한다.
  • UPDATE :  데이터를 수정한다.
  • DELETE : 데이터를 삭제한다.

 

 DCL(Data Control Language)은 데이터 제의어라고합니다. 데이터베이스에 대한 접근, 권한에 대한 역할을 합니다.

 

  • GRANT : 특정 사용자에게 특정 작업에 대한 사용권한을 부여합니다.
  • REVOKE : 특정 사용자로부터 특정 작업에 대한 사용권한을 제거합니다.
  • ROLLBACK : 트랜잭션을 취소합니다.
  • COMMIT : 트랜잭션을 데이터베이스에 반영합니다.

 

아키텍처

 데이터베이스를 이루는 아키텍처는 중앙집중방식, 분산 시스템 방식, 클라이언트 - 서버 시스템 방식이 있습니다.

 

중앙집중방식

 중앙 집중방식은 데이터베이스 시스템이 단 하나의 컴퓨터 시스템에서 운용되는 것을 말합니다. 모든 데이터는 한 개의 컴퓨터 시스템에 들어가 있고, 해당 컴퓨터에서 데이터를 관리합니다. 단일 위치에 저장되기 때문에 데이터의 백업, 유지, 관리가 용이합니다. 그러나 서버가 하나이므로 부하가 일어나면 병목현상이 발생하기도 합니다.

 

분산 시스템 방식

 분산 시스템 방식은 2개 이상의 컴퓨터 시스템에 각자 데이터베이스를 분리하여 설계하고 각각의 데이터베이스를 네트워크로 연결하는 설계 방식입니다. 사용자는 권한에 따라 접근할 수 있는 데이터베이스를 분리할 수 있습니다. 데이터가 분산되어 있기 때문에 각 데이터베이스의 최신화를 위한 복제 프로세스가 일어나 각 사용자로부터 데이터를 동일하게 보여줍니다. 복제 프로세스가 일어나는 만큼 성능에 부하를 줄 수 있는 단점이 있으나 서버가 분산되어 있기 때문에 병목현상이 일어날 가능성이 적고 부하 또한 분산됩니다. 중앙집중방식에 비해 설계가 복잡하고, 유지관리 비용이 높습니다.

 다음은 클라이언트-서버 데이터베이스 시스템이 있습니다. 자체적인 컴퓨팅 능력을 가진 클라이언트를 통해 데이터베이스에 접근합니다.  사용자가 애플리케이션을 통해 데이터베이스 시스템에 접근하는 2 계층 구조가 있고, 애플리케이션 클라이언트를 통해 애플리케이션 서버에 접근한 다음 애플리케이션 서버가 데이터베이스에 접근하는 3 계층 구조가 있습니다.

 

 

 

댓글