본문으로 바로가기

1. Database

category Database 2018. 11. 5. 17:19


1 Database


1.1 데이터베이스(Database) 란?


기초 프로그래밍 언어를 학습하면서 우리는 변수에 대해 배웠고 또 사용해왔다. 

프로그램이 종료되기 전까지 유지되는 Static변수(static variable)든 조건문 또는 함수내에 선언되어 해당 조건문 또는 함수가 종료될때까지 유지되는 지역변수(local variable)든 일단 메모리 즉, 렘(RAM)에 공간을 확보하며 제 각각의 라이프 사이클(Life cycle)이 존재한다. 그리고 RAM은 휘발성의 메모리이기 때문에 상시 우리가 처리한 데이터를 유지하고 있을 수 없다. 

그렇다면 우리는 어떻게 우리가 원하는 데이터를 반영구적으로 유지하고 사용해야 할까? 

그 해답은 데이터베이스(Database)에 있다.


데이터 베이스는 소프트웨어적 저장공간으로써, 사전적 의미는 '잘 정돈된 데이터의 모음'이라고 쉽게 말할 수 있다.

위의 설명에는 나 혼자 작업한 내용을 저장하기 위해 필요하다는 듯이 말했지만 이건 비유를 위한 것이었고(기업의 데이터 축적을 위해서도 사용함), 좀더 본질적으로는 여러 사람에게 공유하여 사용될 목적으로 사용될 데이터를 한데모아 정리한 데이터들의 집합이다.


실제 데이터 자체를 말하기 보다는 그러한 데이터를 모아놓을 공간을 데이터 베이스라한다.


말했다시피 데이터베이스는 단지 데이터를 모아놓을 공간에 불과함으로 그 자체만으로는 거의 아무것도 할 수가 없고 별도의 미들웨어를 통해 관리된다. 이렇게 데이터 베이스를 관리하는 시스템을 데이터 베이스 관리 시스템(DBMS)이라고 하지만, 보통 데이터베이스와 관리시스템이 통합되어 제공되기 때문에 그 구분해서 부르기 모호한 점이 있다고 생각한다.

(DB랑 DBMS랑 뭐가 다른지 궁금해서 한번 찾아봤다..)



Q.

RAM이 휘발성 메모리이기 때문에 프로그램 종료시 우리가 다루던 데이터가 날아간다면 하드디스크에 저장하면되지 않는가? 왜 굳이 데이터베이스를 이용해야 할까? 문뜩 이런 의문이 들었다. 과연 하드디스크를 이용할 순 없는 걸까?


먼저 대답을 하자면 가능하다. 하지만 보안상의 문제와 안전성의 문제로 인해 데이터베이스를 이용하는 것이다.

실제로 예전에는 파일시스템을 이용해 하드디스크에 데이터를 저장하여 관리하였다.



보안상의 문제

 서버를 통해 나의 로컬 컴퓨터로 접근하여 하드디스크에 접근하여 클라이언트들이 사용하면 데이터베이스와 같은 역할을 할 수 있지 않나? 왜 안되지? 데이터베이스의 경우 소프트웨어적 저장공간으로서 관리자가 접근제한을 설정함으로서 보안상의 안정성이 보장된다. 하지만 물리적인 하드디스크의 경우 이러한 제한을 걸기에 문제가 있다.


안정성의 문제

 실제 회사에 가면 데이터베이스와 서버를 분리하여 구축한다. 서버에서는 분리하여 설치된 데이터베이스에 접속하여 이용할 뿐이다.

때문에 서버 컴퓨터가 다운되더라도 데이터베이스는 손상이 가지않기 않는다. 반대로 만약 하드디스크를 이용한다면 어떨까?


하드디스크와 서버는 한 컴퓨터에 설치될 것이다. 그렇다면 서버가 다운되면 어떠한 전기적 흐름이라던지 예상치 못한 일로인해 하드디스크 또한 손상을 입을 가능성이 있다. 이러한 안정성의 문제또한 물리적 저장소인 하드디스크대신 소프트웨어적 저장공간인 데이터베이스를 사용하는 이유이다.


나또한 한 일화가 있다. 필자는 공부한 내용을 필기하고 정리하는 것을 좋아한다. 그리고 하드디스크는 컴퓨터가 바이러스에 의해 날아갈 수도있고 웹은 잘 알지못했지만 사이트가 폐쇠되면 여태 정리한 내용이 날아간다는 생각에 아날로그식으로 노트에 모두 정리했었다.

그런데 비오는날 우산을 쓰고 집에 와보니 정성스럽게 정리한 노트가 물에 훔뻑젖어 잉크가 번져 있는것을 보았다. 이런 아픔 경험 이후로 티스토리 블로그에 정리를 하게 되었다. 예시가 조금 다르지만 좀 더 와 닿지 않나..?



1.2 데이터베이스 관리 시스템(Database Management System) : DBMS 종류

많은 종류가 있겠지만 관계형 데이터 베이스가 가장 많이 사용된다. 

그 이전의 모델은 사용할 기회가 별로 없을 것같고 오히려 요즈음 새롭게 나오는 모델들이 우세를 점하고 있음으로 생략했다. 


최근 실시간 데이터베이스(Realtime Database)중 하나인 Firebase를 예로들 수 있겠다.(내가 써봣는데 편하더라..)




1.3 SQL (Structured Query Language)  구조화 질의 언어 : 정의

관계형 DB를 이용하기 위한 표준 언어이다.

질의어라고 하니 좀 어려워 보인다. 간단하게 묘사해 보자면

DB와 서로 통신을해서 원하는 결과를 얻기위해 대화하는(질문하고 답하는??)언어정도로 생각하면 될 것 같다.






 



'Database' 카테고리의 다른 글

Join  (0) 2018.11.08
Dual Table 이란  (0) 2018.11.08
함수  (0) 2018.11.07
2. SQL (Structured Query Language) 구조화 질의 언어  (0) 2018.11.05