티스토리 뷰

데이터베이스와 데이터베이스 시스템

데이터, 정보, 지식

  • 데이터: 관찰의 결과, 정량적/정성석인 실제 값
  • 정보: 데이터에 의미를 부여한 것
  • 지식: 사물이나 현상에 대한 이해

위 그림에서 에베레스트가 8,848m라는 것은 데이터가 되며, 에베레스트가 세계에서 가장 높은 산이라는 것은 데이터에 의미를 부여한 정보, 에베레스트에 관한 보고서는 지식이 됩니다.

 

 

일상 생활의 데이터베이스

데이터베이스 우리에게 필요한 정보를 구조적으로 통합해 놓은 것입니다. 일상 생활에서 사용 되는 데이터베이스는 아래와 같은 것들이 있습니다.

 

 

데이터베이스의 개념

  • 통합 데이터: 데이터를 통합하는 개념, 각자 사용하던 데이터를 통합하고 중복된 데이터를 최소화하여 중복으로 인한 데이터 불일치를 제거합니다.
  • 저장 데이터: 문서로 보관된 데이터가 아닌 컴퓨터 저장장치에 저장된 데이터입니다.
  • 운영 데이터: 조직의 운영을 위해 사용되는 데이터로 업무를 위한 검색을 목적으로 저장됩니다.
  • 공용 데이터: 한 사람 또는 한 업무를 위해 사용되는 데이터가 아닌 공동으로 사용 되는 데이터입니다. 

 

데이터베이스의 특징

  • 실시간 접근성: 실시간으로 서비스를  제공합니다. 사용자가 데이터 요청 시 수 초 내에 결과를 반환하여 서비스를 제공합니다.
  • 동시 공유: 데이터베이스는 서로 다른 업무, 여러 사용자들에게 동시에 공유됩니다.
  • 지속적인 변화: 데이터베이스에 저장된 내용은 
  • 내용에 따른 참조: 데이터베이스에 저장된 데이터는 물리적인 위치가 아니라 값에 따라 참조됩니다.

예를 들자면, 어느 한 사이트에 로그인 요청을 보내면 실시간으로 서버로부터 응답을 받을 수 있습니다.

로그인을 하여 어떤 물건을 구매하려고 할 때 해당 물건의 가격은 계속해서 변화하며 동시에 여러 사람이 구매를 위해 접근할 수 있습니다.

또한, 우리는 어떤 데이터가 메모리의 어느 주소에 저장되어 있는지 몰라도 '사과'라는 내용을 검색하면 우리가 원하는 값을 찾을 수 있습니다. 이를 내용에 따른 참조라 합니다.

 

 

 

데이터베이스 시스템의 구성

  • DBMS: 사용자와 데이터베이스를 연결 시켜주는 소프트웨어
  • 데이터베이스: 데이터를 모아둔 토대
  • 데이터 모델: 데이터가 저장되는 기법에 대한 내용 (개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델)


데이터베이스 시스템의 발전

파일 시스템

  • 데이터를 파일 단위로 하여 파일 서버에 저장합니다.
  • 각 컴퓨터는 LAN을 통하여 파일 서버에 연결되어 있고, 파일 서버에 저장된 데이터를 사용하기 위해 각 컴퓨터의 응용 프로그램에서 열기/닫기(Open/Close)를 요청합니다.
  • 각 응용 프로그램이 독립적으로 파일을 다루기 때문에 데이터가 중복 저장될 가능성이 있습니다.
  • 동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있습니다.

파일 시스템을 서버에 하나의 파일을 두고 여러 개의 클라이언트가 그 파일에 접근하는 방식입니다. 하지만, 이러한 파일 시스템을 데이터 중복 저장일관성 훼손이라는 치명적인 단점을 갖게 됩니다.

A, B, C 세 개의 클라이언트가 도서에 관한 파일 서버의 파일에 데이터를 추가한다고 합시다. 세 클라이언트 모두가 ‘데이터베이스 개론’이라는 책을 추가하기 원한다 했을 때 A, B, C가 각각 책에 대한 정보를 파일에 추가하여 동일한 정보가 중복되어 저장될 위험이 있습니다. 또한, A에서 ‘데이터베이스 개론’이라는 원가 10,000원의 책에 대하여 가격을 2,000 올려서 12,000으로 저장했다고 합시다. 그런데 이미 10,000이라는 가격으로 책에 대한 정보를 얻은 B가 1,000원을 올려서 저장을 또 했다고 합시다. 이러한 상황에서 파일 시스템에는 A가 저장한 12,000원의 데이터가 사라지고 데이터의 일관성이 훼손되게 됩니다. 파일 시스템의 구조는 아래 그림과 같습니다.

 

 

데이터베이스 시스템

  • DBMS를 통해 데이터를 통합 관리하는 시스템
  • DBMS가 설치되어 데이터를 가진 쪽을 서버, 데이터를 요청하는 쪽을 클라이언트라고 합니다.
  • DBMS 서버가 파일을 다루면서 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행합니다.
  • 데이터의 중복을 줄이고 데이터를 표준화하며 무결성을 유지합니다.

클라이언트는 데이터베이스 내에 있는 데이터를 얻기 위해 서버로 요청을 하는데, 이 때 데이터베이스로의 연결을 위해 사용 되는 것이 DBMS 서버입니다. 언뜻 보면 파일 시스템과 비슷해 보일 수 있지만, DBMS 서버는 데이터의 일관성 유지, 복수, 동시 접근 제어 등의 기능을 수행한다는 점에서 상당히 큰 차이를 가집니다.

 

 

웹 데이터베이스 시스템

  • 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템
  • 불특정 다수의 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용됩니다.
  • 즉, 웹에서 REST 요청을 통해 Database 접근할 수 있도록 하는 시스템

기존의 데이터베이스 시스템은 LAN으로 연결된 컴퓨터만 접근가능했다면, 웹 데이터베이스 시스템은 인터넷을 통해서 LAN으로 연결되어 있지 않은 클라이언트들도 데이터베이스로 접근 가능하다는 장점을 갖게 되었습니다.

 

 

분산 데이터베이스 시스템

  • 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템
  • 대규모의 응용 시스템에 사용됩니다.

클라이언트의 수가 증가하면서 하나의 서버 만으로 모든 것을 감당하기에는 버거운 수준에 이르렀습니다. 이러한 경우에 여러 개의 서버로 분리하여 서버끼리의 동기화를 유지하며 운영하는 것이 분산 데이터베이스 시스템입니다.

 

 

파일 시스템과 DBMS의 비교

 

파일 시스템과 비교한 DBMS의 장점


데이터베이스 시스템의 구성

데이터베이스 시스템의 구성

 

1. 데이터베이스 사용자

일반 사용자

  • 프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근하는 일반인

해당 프로그램을 사용하는 모두가 일반 사용자 입니다. 일반 사용자는 데이터베이스가 어떻게 구성, 설계되어 있는지 몰라도 구현된 기능을 통해 원하는 데이터를 얻을 수 있습니다.

 

응용 프로그래머

  • 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람. 즉, 개발자
  • Java, C, JSP와 같은 프로그래밍 언어와 SQL을 사용하여 일반 사용자를 위한 UI와 데이터를 관리하는 응용 로직을 개발

응용 프로그래머 덕분에 일반사용자는 데이터베이스에 대해 알지 못해도 원하는 업무를 수행할 수 있습니다.

 

SQL 사용자

  • SQL을 사용하여 업무를 처리하는 IT 부서의 담당자
  • 응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리합니다.

일반적인 회사에선 프로그래머와 SQL 사용자를 따로 분리합니다. SQL 사용자는 Select, Insert, Delete 등과 같은 Query문을 사용하여 원하는 데이터를 추가하거나 필요한 테이블을 추가적으로 생성합니다.

 

데이터베이스 관리자

  • Database Administrator로 데이터베이스 운영 조직의 시스템을 총괄하는 사람
  • 데이터 설계, 구현, 유지 보수의 전 과정증 담당합니다.
  • 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무를 합니다.

실제 대규모 프로젝트를 진행하다 보면 테이블의 갯수가 10개, 20개가 넘어가면서 데이터베이스 시스템을 설계하는 것도 여간 복잡한 일이 아니기에 DBA를 따로 두어 데이터베이스의 설계를 맡깁니다.

 

 

2. DBMS

DBMS는 사용자와 데이터베이스를 연결시켜주는 소프트웨어로 데이터베이스 사용자가 데이터베이스를 생성, 공유, 관리할 수 있도록 지원해주는 총체적인 역할을 합니다.

  1. SQL을 번역하는 DML/DDL 컴파일러
  2. 응용 프로그램에 삽입된 SQL을 번역하는 Embedded DML 컴파일러
  3. 번역된 SQL을 처리하는 알고리즘인 질의처리기
  4. 트랜잭션 관리자
  5. 파일 관리자
  6. 버퍼 관리자
  7. 데이터 사전(Data Dictionary)

위와 같은 요소들을 이용하여 사용자의 질의를 처리합니다.

DBMS의 기능

  • 데이터 정의(Definition): 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행합니다.
  • 데이터 조작(Manipulation): 데이터를 조작하는 프로그램이 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원합니다.
  • 데이터 추출(Retrieval): 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출합니다.
  • 데이터 제어(Control): 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어합니다. 백업과 회복, 동시성 제어 등을 지원합니다.

 

3. 데이터 모델

데이터 모델은 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지 결정합니다. 가장 많이 사용되는 데이터 모델은 관계 데이터 모델입니다.

 

박지성 학생이 자료구조, 김연아 학생이 데이터베이스를 수강한다고 했을 때, 학생-강좌 관계를 데이터 모델에 맞게 어떻게 표현할 수 있을까요?

 

계층 데이터 모델, 네트워크 데이터 모델

  • 방식: 포인터를 사용하여 강좌 데이터가 저장된 포인터 값 p를 학생 데이터에 저장하는 방법
  • 장점: 포인터를 사용하는 방법은 데이터를 직접 찾아갈 수 있어 프로그램 속도가 빠릅니다.
  • 단점: 포인터를 다루는 프로그래밍을 해야하기 때문에 개발 속도 면에서 느립니다.

관계 데이터 모델

  • 방식: 강좌 데이터의 속성인 강좌번호 값을 학생 데이터에 직접 저장하는 방법, 데이터를 찾을 때는 강좌번호 값을 이용하여 어떤 강좌를 신청했는지 알 수 있습니다.
  • 장점: 포인터를 사용하는 방법보다 속도는 느리지만, 개념이 쉽고 프로그램 개발이 빠릅니다.

객체 데이터 모델

  • 방식: 강좌를 객체 개념으로 보고 강좌 객체의 고유 식별자인 오브젝트 아이디(oid)를 학생 테이블에 저장하는 방법. 객체 데이터 모델에서 사용하며 객체지향 언어의 상속, 캡슐화 등의 개념을 도입합니다.

각 모델에서 관계의 표현 방법

 

 

4. 데이터베이스 언어

데이터베이스 시스템은 SQL을 사용합니다.

SQL 구성

  • 데이터 정의어(DDL): CREATE, ALTER, DROP 문과 같이 DBMS에 저장된 테이블 구조를 정의합니다.
  • 데이터 조작어(DML): SELECT, INSERT, DELETE, UPDATE 문과 같이 데이터를 검색, 삽입, 수정, 삭제 하는데 사용합니다.
  • 데이터 제어어(DCL): GRANT, REVOKE 문과 같이 데이터의 사용 권한을 관리한다.

 

5. 데이터베이스의 3단계 구조 (스키마)

외부 스키마

  • 일반 사용자, 응용 프로그래머가 접근하는 계층. 전체 데이터베이스 중 하나의 논리적인 부분을 의미합니다.
  • 여러 개의 외부 스키마가 있을 수 있습니다.
  • 서브 스키마(Sub Schema)라고도 하며, View의 개념입니다.

외부 스키마는 사용자에게 보여지는 스키마로 겉으로 보이는 DB, Table의 형태를 의미합니다.

GUI나 Select문으로 조회하여 보게 되는 것을 외부 스키마라고 합니다.

아래의 외부 스키마도 다이어그램처럼 표시되어 있지만 다른 형태로도 데이터를 볼 수 있고 그것 역시, 외부 스키마 입니다. 외부 스키마는 개념 스키마의 부분 집합(일부분)

 

 

개념 스키마

  • 전체 데이터베이스의 정의를 의미합니다.
  • 통합 조직 별로 하나만 존재하며 DBA가 관리합니다.
  • 하나의 데이터베이스에는 하나의 개념 스키마가 존재합니다.

개념 스키마란 개발하는데 필요한 모든 데이터베이스를 정의해 놓은 것입니다. 그렇기에 우리에게 필요한 데이터만 추출해보는 외부 스키마는 개념 스키마의 부분 집합이 될 수 밖에 없습니다. 개념 스키마는 데이터베이스에서 매주 중요한 비중을 차지하기 때문에 하나만 존재합니다.

 

 

내부 스키마

  • 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현
  • 내부 스키마 역시 하나만 존재합니다.
  • 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함되어 있습니다.

내부 스키마라 실제 구현에 관한 이야기로. 이 속성이 어떠한 형태*(integer? varchar?)*이며 어느 정도의 크기를 갖는지 등에 관해 기술해둔 스키마를 의미합니다.

 

 

매핑

  • 외부/개념 매핑
  • 개념/내부 매핑

외부/개념 매핑은 사용자의 외부 스키마와 개념 스키마 간 매핑을 의미합니다. 외부 스카마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시키는 것입니다.

개념/내부 매핑은 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장 되는지를 대응시키는 것이다.

 

논리적 데이터 독립성

  • 외부 스키마개념 스키마 사이의 독립성
  • 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
  • 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 합니다.
  • 개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없습니다.

예를 들어, 우리가 카카오톡에서 친구 목록을 본다고 가정합시다. 이 때 카카오 선물의 빼빼로 가격이 1000원 올랐다고 하여도 우리가 직접 다루고 있는 테이블이 아니기 때문에 영향을 주지 않습니다. 이렇게 우리가 보는 외부 스키마와 개념 스키마가 서로 영향을 주지 않게 분리해 놓은 것을 논리적 데이터 독립성이라고 합니다.

 

물리적 데이터 독립성

  • 개념 스키마내부 스키마 사이의 독립성
  • 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원
  • 성능 개선을 위해 물리적 저장 장치를 재구성할 경우 개념 스키마나 외부 스키마에 영향이 없음
  • 물리적 독립성은 논리적 독립성보다 구현하기 쉬움

예를 들어, 우리가 공간의 효율성을 위해 varchar(100)의 주소라는 속성을 varchar(50)으로 바꾼다고 가정할 때, 우리가 주소의 크기를 줄여도 개념 스키마에는 영향을 주지 않는데 이를 물리적 데이터 독립성이라고 합니다.


오라클로 배우는 데이터베이스 개론과 실습

1장. [DB]데이터베이스 시스템

2장. [DB]관계 데이터 모델

3장. [DB]SQL 기초

4장. [DB]SQL 고급

5장. [DB]데이터베이스 프로그래밍

6장. [DB]데이터 모델링

7장. [DB]정규화(Normalization)

8장. [DB]트랜잭션, 동시성 제어, 회복

참고

https://mangkyu.tistory.com/19

 

[Database] 1. 데이터베이스 시스템

[ 본 사진은 쉽게 배우는 오라클로 배우는 데이터베이스 개론과 실습 ppt에서 캡처했습니다. ] 1. 데이터베이스와 데이터베이스 시스템 [ 데이터, 정보, 지식 ]데이터 : 관찰의 결과로 나타난 정량

mangkyu.tistory.com

 

공지사항
최근에 올라온 글
Total
Today
Yesterday