본문 바로가기

컴퓨터 일반/데이터베이스

[Database] 데이터베이스 개요

데이터베이스의 이해를 돕기 위해 ① 데이터베이스가 왜 필요한지 알려드리고 ② 데이터베이스가 무엇인지 ③어떻게 활용하는지를 알려드리겠습니다.

Ⅰ. 데이터베이스는 왜 필요할까요?

 

 여러분이 게임을 하실 때를 생각해보면, 데이터베이스의 필요성을 쉽게 아실 수 있습니다. 여기에 공격력, 방어력, 체력, 기력 등의 능력을 갖춘 게임 케릭터가 있습니다. 이 때, 게임을 플레이하기 위해서는 해당 정보를 서버 어디엔가 저장해놓아야 합니다.

 

쉔 버프좀 부탁드립니다.

 

 위와 같이 케릭터의 공격력, 방어력, 체력 등의 자료를 서버 어디엔가 저장해두면, 플레이어가 케릭터를 선택했을 때, 해당 자료를 불러와서 쉽게 게임을 할 수 있을 것입니다. 그런데 문제는 이러한 케릭터가 여러개가 있다면 자료를 중복해서 만들어야합니다.

 

 

롤 유저라면 알 것이다. 바람(발암)의 냄새가 난다는 것을.

 

 

 위와 같이 케릭터가 5개라면 5개의 자료를 각각 따로 만들어야 합니다. 공격력, 방어력, 체력등은 공통임에도 기존의 자료를 저장하는 방식을 이용해 자료를 저장하면, 자료가 중복된다는 문제가 발생합니다. 또한, 한 번 만들어진 자료는 다른 프로그램에서 쓸 수 없습니다.

 

 

 

무작위에선 케릭터의 스탯이 달라진다. 그러기 위해서는 정보를 가져와서 해당 게임에서 맘대로 조작해야한다.

 

 

쉔의 공격력, 방어력은 소환사의 협곡에 맞추어져있습니다. 만약 무작위 총력전에서 쉔의 공격력이나 경험치를 빠르게 올린다면, 해당 자료는 쓸 수 없게 됩니다. 기존에 자료를 저장하는 방식으로는 자료가 한 프로그램에 종속된다는 문제를 안게 됩니다.

 

▶ 기존의 자료를 저장하는 방식을 파일시스템이라고 합니다. 파일시스템은 자료의 중복성과 종속성의 문제를 갖고있습니다. 중복성은 같은 형식의 파일을 저장하면서도 다른 파일에 저장하는 것이고, 종속성은 파일이 프로그램에 종속된다는 것입니다.

 

기존의 파일시스템의 문제점인 데이터의 중복성과 종속성을 제거하면서 등장한 것이 데이터베이스시스템입니다.

 

 

 

Ⅱ. 데이터베이스(Database)란 무엇일까? 

데이터베이스(Database)란 자료인 Data를 Base라는 틀 안에 넣는 것입니다. 기존의 공통적인 속성을 추출하며 하나의 틀(Base)를 만든 뒤, 그 안에 자료(Data)를 집어넣는 것입니다. 이것은 엑셀을 생각하면 쉽습니다.

 

칼바람이나 롤체스에서 해당 DB를 가져와서 스탯 변경이나 새로운 속성을 추가시킬 수 있다.

 

 

위와 같이 엑셀을 이용하면 케릭터명, 공격력, 방어력, 체력이라는 공통 속성을 추출한 뒤에, 구체화된 케릭터를 집어넣을 수 있습니다. 결국 5개였던 파일이 1개로 줄어든 것입니다.

 

그림이 좀 이상한데, A유저는 파란색만 보이고, B유저는 본인의 속성을 추가해서 보는 것이다.


이제 협곡이나 칼바람이나 해당 데이터베이스를 갖고와서 수정, 변형해서 쓸 수 있게 되었습니다. 또한, 수정, 변형할 때에 자신의 자료를 추가하거나 덧붙일 수도 있게 되었습니다.

 

DB가 기존의 파일시스템의 중복성과 종속성을 제거하면서 만들어진 것만 아셔도 됩니다. 그러나 시험을 보시거나, DB에 관해 조금 더 입체적으로 보고 싶은 분들은 아래를 참조하시면 됩니다.

 

▶ DB의 정의 사전적으로 알기

 

DB가 등장이유 속에 DB의 정의가 있게 됩니다.  DB는 기존의 파일시스템의 문제인 중복성과 종속성을 제거하였습니다.

 

→ 중복성을 제거하면서 하나의 틀(base)안에 자료(data)를 통합시켰습니다. => Integrated
통합된 자료는 틀안에 저장됩니다. => Stored
종속성을 제거하면서 자료는 독립적(모듈화)이게 되면서 자료를 공유할 수 있게 되었습니다. => Shared
해당 DB는 다른 프로그램에서 가져다가 다른 DB와 결합할 수 있게 되었습니다 => Operational


이것이 DB의 정의인 SISO입니다. DB는 S(Shared) 공유성, I(Intergrated) 통합성, S(Stored) 저장성, O(Operational) 운영성이 있는 Data의 Base(틀)입니다.

 

▶ DB의 특징 살펴보기

 

정의를 잘 살펴보면 DB의 특징을 알 수 있는데요,
→자료가 통합되니 데이터 중복이 최소화되었습니다(Redundancy Minimize)
자료가 독립적으로 운영되니 여러 프로그램에서 자료를 공유할 수 있게 되었습니다(Concurrent Sharing)
또한, 파일 저장 단위에 따라 로킹기법을 적용해 실시간으로 접근이 가능하게 되었습니다.(Real Time Accessibility)
다른 프로그램에서 가져다 쓸 때, 내용을 비교해서 결합하거나 활용하므로 내용에 의해 자료를 접근합니다(Content Reference)
이렇게 만들어진 Database는 다른 프로그램과 달리 독립적으로 운영되어서 자료를 넣고 빼는 것이 쉽기 때문에 데이터의 삽입, 삭제, 갱신등의 계속적인 변화가 가능하게 되었습니다(Continuous Evolution)

DB의 특징은 3Con2Re로 기억하시면 쉽습니다.
Continous Evolution, Concurrent Sharing, Content Reference, Redundancy Minimize, Real Time Accessibility

 

 

 

Ⅲ. DB는 자료를 저장하는 틀이라는 것을 알았습니다. 그러면 이것을 어떻게 만들고 쓸까요?

① 게임을 비유하면, 게임 케릭터의 특성을 만드는 사람이 있고, (공격력, 방어력 등의 기본 Stat 설정)
② 구체적인 게임 케릭터를 만드는 사람이 있습니다. (쉔, 아리 등의 구체적인 값 삽입)
③ 그리고 게임을 이용하는 사람이 있습니다.

 

 

데이터베이스 관리자는 게임 케릭터의 특성을 만드는 사람의 역할을 합니다. Data Definition Language라는 DDL을 사용하여 Base틀을 만듭니다. 틀이 어떻게 생겼는지는 Meta-data(데이터의 데이터)의 형태로 Data-Dictionary에 기록되게 됩니다.

② 그리고 게임 케릭터를 실제로 만드는 사람은 응용프로그래머의 역할을 합니다. 실제 만들어진 틀에 자료를 삽입(INSERT), 삭제(DELETE), 갱신(UPDATE), 검색(SELECT)를 수행하게 됩니다.

③ 그리고 일반 사용자는 만들어진 케릭터들을 쓰는 일반 사용자의 역할을 하게 됩니다. 만들어진 게임 케릭터를 불러와서, 실제 서버에서 게임을 수행하는 것과 같습니다.

 

메이플 스토리에 케릭터의 기본 스탯은 관리자, 생성은 응용프로그래머, 사용은 플레이어이다.

 

실제 DB를 사용한다는 것은 데이터베이스 관리자의 언어인 DDL와 응용프로그래머의 언어인 DML, 시스템 관리자의 언어인 DCL을 다루는 것이라고 볼 수 있습니다.