본문 바로가기
Server

[Database] 개발 세계에서 데이터베이스란 무엇일까?

by DuncanKim 2022. 7. 27.
728x90

[Database] 개발 세계에서 데이터베이스란 무엇일까?

 

MySQL의 돌고래

 

많은 사람들은 자기가 경험하지 못한, 잘 알지 못하는 새로운 것을 볼 때, "저게 뭐야?" "이건 또 뭐야?" 의문을 가진다.

(돌고래도 호기심 많은 동물 중에 하나라고 한다.)

어떤 개념이나 기술을 배울 때, 우리는 그것에 대한 추상적인 정의를 이해하고 지식을 가지고 있어야 한다. 그것이 무엇에 쓰이는 것인지, 어떤 것과 비슷한 것인지, 어떤 형태를 하고 있는지, 즉, 용도와 개념 비유, 물리적 외형을 알고 있어야 한다는 것이다.

 

데이터베이스를 처음 배우는 사람이라고 한다면, DB가 무엇에 쓰이는 지, 무엇과 비슷한지, 어떤 형태를 하고 있는지는 알고 있어야 그다음의 깊은 개념인 논리적 데이터 모델링, 관계형 DB, ... 등등을 이해할 수 있지 않겠는가.

 

DB에 이제 처음 발을 들여놓는다. 그래서 한 번 개념을 정리하고 넘어가고자 한다.

 

 

1. DB는 무엇에 쓰이는 것인가?

 

 

우리는 컴퓨터나 핸드폰을 사용하면서 '파일'이라는 것을 접하게 된다. 문서 파일일 수도 있고, 음원 파일일 수도 있고, 이미지 파일일 수도 있고, 어떤 프로그램을 실행하는 실행 파일일 수도 있다. 파일은 우리에게 무엇인가를 보여준다. 어떤 '컨텐츠'를 가지고 있는 것이다.

 

컨텐츠는 어떤 '정보'를 담고 있다. 여기에서 쉽게 이야기하기 위해서는 문서 파일을 예로 드는 것이 좋겠다.

문서 파일 안에 어떤 치킨집의 정보가 담겨있다고 하자. 주소, 상호명, 전화번호, 대표 메뉴, 가격과 같은 것이 기록되어 있다고 하자.

 

각각의 파일에 똑같은 형식으로, 치킨집의 정보가 적혀있다면 우리는 그것을 뒤적거리면서 어디에 치킨을 시킬지 고민을 할 수 있다. 그런데 제일 싼 집은? 아니면 우리 집과 제일 가까운 집은? 후라이드가 대표 메뉴인 집은? 이런 식으로 정보를 모아 '가공'해서 우리에게 유익한 고급 정보를 얻으려면...? 하나하나 뒤져서 찾아보아야 할 것이다.

 

우리 나라에 치킨집은 대략 8만 개 정도가 있다고 한다. 그 집들의 정보가 다 있는 파일이 있다고 치자. 그러면 우리 집에서 가까운 순서대로 고르고, 후라이드를 대표 메뉴로 하면서 제일 가격이 저렴한 집을 찾으려면? 차라리 집에서 튀겨먹고 말 것 같다.

 

 

2. DB는 어떤 것과 비슷한 것인가?

 

치킨집 비유를 보면 딱 떠오르는 것이 있다. 아니 배민 열면 되잖아...?

 

 

그렇다. 배민은 이런 파일의 한계를 뛰어넘고, 우리에게 더 유용한 고급 정보들을 전달해주기 위해 있는 것이다.

거대하고 복잡한 데이터들을 모아서 우리에게 가까운 치킨집부터 시작해서 가장 저렴한 치킨집을 추천해주고, 심지어 사람들이 많이 주문해먹는 곳까지 알려주기도 한다.

 

배민은 무엇을 가지고 있을까? 데이터를 가지고 있다. 기본적인 음식점의 정보부터 시작해서 사람들이 시켜먹은 횟수, 그리고 별점까지. 그 데이터를 흔히 보는 한글 파일로 관리할 수 있을까? 미친 짓이다.

 

그러면, 우리는 엑셀을 생각해볼 수 있다. 엑셀로 데이터들을 쭉 나열하고 관리하는 것인가?

엑셀로 무엇인가를 관리하기 위해서는 msoffice의 excel이든, mac의 numbers든 구글 스프레드시트든 프로그램이 있어야 한다. 그것을 켜고, 데이터를 입력하고 해야 하는 것이다. 사람이 일일이 손수 기록하고 삭제하고 수정해야 한다. 앞에서 말했듯, 우리나라 치킨집은 8만 곳이다. 8만 명을 고용할 것이 아니라면, 엑셀로 저런 방대한 양의 정보를 기록하는 것은 불가능하다.

 

데이터베이스는 여기서 등장한다. 거대하고 복잡한 규모의 데이터를 관리하기 위해서 자동화된 기술과 제한되지 않는 행과 열을 우리에게 제공한다. 행과 열 안에는 카테고리를 나누고, 열마다 제목을 정해서 행 별로 데이터를 삽입해서 오름차순, 내림차순 정렬을 할 수 있다. 

 

또한 읽고, 쓰고, 지우고, 수정하는 것이 자동화될 수 있다. 이 네 가지를 CRUD(create, read, update, delete)라고 하는데, DB는 이 CRUD를 보조할 수 있다. 

 

 

 

 

3. DB는 어떤 형태를 하고 있는가?

 

MySQL, MongoDB, Oracle 등 많은 데이터베이스 제품들이 있다. 무엇이든 간에, 데이터를 정리하면 아래와 같은 '표'를 볼 수 있다. 이를 table이라고 하는데, 각 열 마다 제목들을 붙이고, 각 행 마다 정보를 표시하는 것이다.

 

각 행은 하나의 실체에 대한 정보이다. 한 사람이 가지고 있는 여러 가지 정보를 각 열의 제목 별로 정보를 분류해놓은 것이다.

한 사람의 이름, 이메일, 직업 이런 식으로 하나의 행에 정보가 분류되어 있는 것이다.

 

이러다 보면 표시해야 할 것들이 많아지기도 한다. 어떤 사람에 대한 정보를 하나의 테이블 안에 담을 수 없기 때문에 표를 분할시켜 놓고, 필요할 때마다 그 표를 붙이거나 해서 새로운 정보를 우리가 얻기도 한다. 그것이 '관계형 데이터베이스'이다. 지금까지도 관계형 데이터베이스는 널리 쓰이고 있다. 엑셀에서 쓰이는 행과 열의 개념, 속성의 개념으로 더 방대한 양의 데이터를 관리하는 것에 도움을 주었다.

 

 

4. 정리

 

정리해보면 우리가 수많은 정보를 쉽게 가공하여 고급 정보를 얻기 위해 DB가 존재하고, 엑셀의 발전된 모습이며, 배달의 민족이 데이터베이스와 같은 역할을 한다고 볼 수 있으며, 정말 '표'의 형식을 하고 있다는 것을 알 수 있었다.

 

쉬운 개념일 것이다. 이제 1차적인 이해가 끝났으니, 수많은 데이터의 정리와 활용을 위한 데이터베이스. 자세한 내용은 SQL과 DB 후속 글에서 알아보도록 한다.

 

 

 

728x90

댓글