Home 데이터베이스 시스템의 목적
Post
Cancel

데이터베이스 시스템의 목적

데이터베이스 시스템의 목적을 공부합니다.
데이터베이스 시스템이 만들어진 목적을 이해하기 위해선, 데이터베이스가 없던 상황을 생각하면 됩니다. 과거 DB 시스템이 없던 시절에는 각각의 응용프로그램들이 본인들만의 방식으로 데이터를 저장하고 관리하였습니다. 이 말은 즉 데이터의 형식이 다 다르고, 같은 데이터가 여러 프로그램에 저장될 수 있음을 의미합니다. 그로인해 발생하는 여러가지 문제점들을 해결하기위해 DB가 탄생하였습니다.

1. 데이터의 중복과 비일관성 문제

데이터의 중복은 같은 데이터가 여러 곳에 저장되어 있어 저장공간의 낭비와 비일관성을 초래하는 문제가 있습니다.
데이터 중복의 예시로는 특별한 이유가 존재해서, 명단을 작성하고 저장하는 응용 프로그램을 두가지 사용하고 있다고 가정합니다. 이 경우 A 는 이름, 주민번호, 주소지, 학적을 저장하는 프로그램이고, B 는 학생명, 주민번호, 취득학점 을 저장하는 프로그램입니다. 이름과 학생명, A의 주민번호와 B의 주민번호의 경우를 데이터의 중복이라고 합니다.

두 프로그램을 하나의 시스템이서 동시에 사용하고 있기때문에 개명을 하게 된다면 A 프로그램의 이름과 B 프로그램의 학생명을 모두 수정해야 하는 문제가 발생합니다. 이때 정상적으로 작동하지 못한다면 하나의 프로그램에서만 이름이 수정되는 문제가 발생합니다. 이를 데이터의 비일관성 이라고 합니다.

2. 데이터 접근의 어려움

A 프로그램과 B 프로그램이 관리하는 데이터가 각각 다른 파일구조를 갖고있습니다. 이러한 상황에서 A프로그램의 이름, 주민번호, 학적 데이터와 B프로그램의 취득학점 데이터를 가져와 명단을 작성해야 할 때 각 프로그램은 서로의 데이터를 열어 볼 수 없기 때문에 수작업으로 작성하거나 두 데이터를 읽을 수 있는 소프트웨어를 개발해야 합니다.

3. 데이터 고립

새로운 명단을 작성하기 위해 필요한 데이터들은 각 프로그램들이 개별적으로 관리하기 때문에 흩어져 있습니다. 2번(데이터 접근의 어려움)이 데이터파일의 구조적으로 발생하는 문제라면 데이터고립은 저장위치에 따른 문제입니다.

4. 무결성 문제

기존의 파일 처리 시스템들은 데이터의 무결성을 지키기 어려웠다고 합니다.

5. 원자성 문제

원자성이란 원자적(atomic) 성질 즉, 더 이상 쪼개질 수 없음을 의미합니다. 데이터는 ‘처리 되기 전 데이터’와 ‘처리 된 후의 데이터’로 나뉘는데, 시스템에 문제가 생겨 처리가 중단될 경우 ‘처리되고 있는 상태의 데이터’가 됩니다. 데이터의 최소 단위는 처리되기 전 데이터와 처리된 후의 데이터 두 개만 존재하므로 ‘처리되고 있는 상태의 데이터’는 ‘처리되기 전 데이터’로 되돌려야 합니다.
기존의 파일 시스템은 원자성을 만족하기 어려웠다고 합니다.

6. 동시접근 문제

하나의 데이터에 여러 요청이 동시에 들어왔을 때 발생할 수 있는 문제입니다. 가장 쉬운 예시로 Lost Update 가 있습니다. Lost Update(사라진 갱신)은 둘 이상의 갱신 요청이 들어왔을 때 일부만 수행되는 문제입니다. 예를들어 매달 15일에 A회사에 15,000원을 결제하고, B회사에 9,000원을 결제합니다. 잔고에는 50,000원이 있습니다. 우연히도 15일의 같은 시간 동시에 출금요청이 들어왔습니다. 파일 처리 시스템은 잔고에 15,000원을 뺀 값을 저장하는 요청과 9,000원을 뺀 값을 저장하는 요청을 동시에 수행합니다. 첫번째 요청은 잔고에 35,000원을 저장하는 동작을 수행하고 두번째 요청은 잔고에 41,000원을 저장하는 동작을 수행합니다. 상식적으로 생각하면 잔고에 26,000원이 저장되어야 하지만 35,000원 혹은 41,000원이 저장됩니다.
이러한 문제들을 해결하기 위해 데이터를 전문적으로 처리하는 DB 시스템이 필요하다고 합니다.

7. 보안 문제

모든 사용자는 전체 데이터 중 일부만 필요로 합니다. 따라서 사용자별로 필요한 데이터를 부서/직책별로 구분짓고 권한을 부여하는 등의 행위를 필요로 합니다. 이러한 기능들을 특화하여 할 수 있도록 DB 시스템이 필요하다고 합니다.

This post is licensed under CC BY 4.0 by the author.

Docker Apache 컨테이너 생성

정보처리기사 실기 2020년 3회