티스토리 뷰

반응형

안녕하세요 Pingu입니다.🐧

 

오늘부터 대학교 2학년 때 배운 이후로 따로 공부한 적이 없어서 기억이 가물가물한 Data Base에 대해 알아보려고 합니다. 오늘은 그중에서도 데이터 베이스의 탄생 배경을 알아보려고 합니다. 당시 공부했던 자료로 공부하니 기억이 조금씩 나는 거 같아요.

 

파일 시스템의 한계

데이터 베이스가 등장하기 이전에는 컴퓨터에서 데이터를 저장하기 위해 파일 시스템을 사용했습니다. EXT4, FAT 등과 같이 여러가지 파일 시스템이 지금도 존재하는데요, 이렇게 파일 시스템으로 데이터를 저장하다 보면 아래와 같은 문제점이 발생했었습니다.

  • 데이터 종속성 (Data Dependency)
    • 데이터를 사용하는 프로그램의 구조가 데이터 구조의 영향을 받는다는 것을 말합니다.
    • 이러한 데이터 종속성은 프로그램의 개발과 유지 보수를 어렵게 하는 원인입니다.
  • 데이터 무결성 침해 (Data Integrity)
    • 데이터 무결성이란 저장된 데이터의 내용이 처음에 의도했던 데이터의 형식, 범위를 준수해야 한다는 성질
    • 예를 들어 학생 DB가 있고 Age라는 필드가 존재할 때 Age는 20~60사이의 양의 정수로 정의
  • 데이터 중복성 (Data Redundancy)
    • 같은 내용의 데이터가 여러 곳에 중복하여 저장되는 것
    • 저장 공간의 낭비 문제가 발생
    • 여러 곳에 존재하는 데이터를 일괄적으로 변경해주지 않으면 데이터 불일치 문제 발생
    • 여러 곳에 존재하다 보니 보안의 어려움
  • 데이터 불일치 (Data Inconsistency)
    • 위에서 알아본 데이터 중복성에 의해 여러 곳에 존재하는 데이터들이 서로 일치하지 않는 것
  • 데이터 표준화의 어려움 (Data Standardization)
    • 데이터가 표준화 되어 있지 않으면 제3자가 프로그램을 이해하기 어렵고, 호환성 문제가 발생할 수 있음
  • 데이터 보안성 (Data Security)
    • 데이터가 저장되어 있는 파일이 잘 알려진 형식으로 저장된다면 별다른 노력 없이 파일을 열어 내용을 확인할 수 있음

이러한 문제점들을 해결하기 위해 데이터 베이스가 등장하게 됩니다. 초기 데이터 베이스에는 계층형, 네트워크형이 사용되었지만 최근에는 관계형, 혹은 NoSQL 계열의 데이터 베이스가 사용되고 있습니다. 

데이터 베이스 시스템의 구조는 여러개의 프로그램, DBMS, Database로 구성된 위와 같은 구조를 갖게 됩니다. 그럼 아까 파일 시스템에서 발생한 문제점들이 데이터 베이스 시스템에서는 어떻게 해결하는지 알아볼까요?

 

  • 데이터 독립성 지원 (Data Independency)
    • 사용자나 프로그램이 데이터베이스에 직접 접근할 수 없고 DBMS를 통해서만 접근 가능
    • DBMS는 데이터 베이스 안에 있는 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않게 하여 데이터 독립성을 보장합니다.
  • 데이터 무결성 유지
    • DMBS가 무결성을 위반하는 데이터가 들어올 경우 처리를 거절하여 데이터 무결성을 지원합니다.
  • 데이터 중복성, 불일치 최소화
    • 데이터 베이스 내의 데이터는 보통 데이터 베이스를 공용하는 조직 전체의 관점에서 관리하여 중복성과 불일치를 최소화합니다.
    • 회사를 예로 들면, 여러 부서에서 동일한 데이터를 각자 관리하는 것이 아닌 데이터 관리 부서가 존재하고 해당 부서에서만 데이터를 관리하여 중복성, 불일치를 최소화할 수 있습니다.
  • 데이터 표준화의 용이성
    • 데이터 베이스 관리자(DBA)가 설계 과정을 주도하여 조직간 이해를 조정하고 관리할 데이터를 표준화합니다.
    • 프로그램에서 데이터에 접근하기 위해서는 DBMS가 요구하는 데이터 구조를 지켜야 하므로 표준화가 자연스럽게 이뤄집니다.
  • 높은 보안성
    • DBMS는 사용자의 권한에 따라 데이터베이스에 있는 데이터 접근을 제어할 수 있습니다.
    • DBMS를 통하지 않고는 해당 데이터의 내부를 보는것이 매우 어렵게 만들어 보안성을 유지합니다.
  • 데이터 공유의 용이성
    • 데이터베이스 시스템의 목적이 데이터를 통합 관리하고 이를 여러 조직, 사용자가 공유하도록 하는 것입니다. 
    • DBMS는 여러 사용자의 요구를 동시에 처리할 수 있는 능력이 있고, 쉽게 사용할 수 있는 수단을 제공합니다.

데이터베이스 시스템에서는 파일 시스템에서 발생하던 문제를 위와 같이 해결할 수 있습니다. 그럼 이번에는 많이 사용하는 관계형 데이터베이스에 대해서 알아보겠습니다.

 

관계형 데이터 베이스 모델

현재 많이 사용하고 있는 관계형 데이터 베이스 모델은, 데이터가 테이블 형태로 표현되고, 사용자가 데이터를 쉽게 다룰 수 있도록 해주는 질의어(SQL)를 제공합니다. SQL은 자연어와 비슷한 부분이 많아 배우기 쉽고 데이터를 어떻게 가져올 것인가 대신에 어떤 데이터를 원하는지만 정하면 돼서 개발자 입장에서 데이터를 다루기 아주 편리합니다.

관계형 데이터 베이스 모델에서는 위와 같은 테이블 형태로 데이터를 표현하고 만약 "나이가 27인 학생의 이름과 학과를 보이세요"에 맞는 데이터를 가지고 오기 위해서는 아래와 같은 질의어를 사용하면 됩니다.

SELECT 이름, 학과
FROM Student
WHERE 나이 = 27

데이터 베이스 시스템

데이터 베이스는 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임입니다. 데이터 베이스의 구조는 사용되는 데이터 모델에 의해 결정됩니다.

 

데이터 베이스는 사용하는 데이터 뿐만 아니라 해당 데이터들을 설명하는 데이터베이스 스키마, 메타데이터도 포함됩니다.

아까 본 그림을 다시 가져와서 보면 프로그램과 데이터 베이스 사이에 DBMS라는 것이 존재하는 것을 볼 수 있는데요, DBMS를 포함하여 몇 가지 용어들을 짚고 넘어가 보겠습니다.

 

DBMS의 역할

  • 데이터 베이스를 정의하고, 질의어를 지원, 리포트 생성 등의 작업을 수행
  • 사용자가 새로운 데이터 베이스를 생성 하고, 데이터 베이스의 구조를 명시할 수 있게 하고, 데이터를 효율적으로 질의하고 수정할 수 있도록 합니다.
  • 시스템 고장이나 권한이 없는 사용자로부터 데이터를 보호합니다.
  • 동시에 여러 사용자가 데이터에 접근하는 것을 제어합니다.

스키마(Schema)

  • 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않습니다.
  • 데이터베이스의 모든 가능한 상태를 미리 정의합니다.

데이터 베이스 상태

  • 특정 시점의 데이터베이스 내용을 의미하며 시간이 지날수록 지속적으로 변합니다.

DBMS 언어

데이터 정의어 (DDL: Data Definition Language)

  • 데이터베이스 스키마를 정의하는 데 사용하는 명령어
  • 데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 혹은 데이터 사전에 저장합니다.
  • SQL에서의 DDL
    • CREATE TABLE
    • ALTER TABLE
    • DROP TABLE
    • CREATE INDEX

데이터 조작어 (DML: Data MAnipulation Language)

  • 데이터베이스 내의 원하는 데이터를 조회, 수정, 삽입, 삭제하는 명령어
  • SQL에서의 DML
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
    • SUM, COUNT, AVG와 같은 내장 함수

관계형 데이터 베이스 용어 정리

테이블

  • 관계형 DB에서 정보를 구분하여 저장하는 기본 단위
  • 동일한 DB안에서 동일한 이름을 갖는 테이블은 존재할 수 없어요

속성(칼럼)

  • 테이블에서 관리하는 구체적인 정보
  • 속성(칼럼)은 고유한 이름을 가지며 동일한 테이블 안에서 같은 이름의 속성(컬럼)은 존재할 수 없어요

튜플

  • 테이블 안에 존재하는 하나의 데이터 
  • 테이블에 존재하는 튜플의 수는 시간에 따라 변함

도메인

  • 테이블의 속성이 가질 수 있는 값의 집합
  • 예를 들어 나이라는 속성의 도메인이 20~60이라면 해당하는 양의 정수만 값으로 가질 수 있음

다음 글 : SQL 기본 문법

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함