데이터 베이스란게 대체 뭘까?
이번시간에는 데이터베이스는 무엇이고, 또 어떤 역할을 하는지에 대해 이야기해보자. 데이터베이스라는 말이 잘 와닿지 않으니. 레스토랑의 예를 하나 들어보면 좋을 것 같다. 음식점에는 여러 재료들이 있고, 그 재료들을 담는 창고가 있다. 그리고 그 창고에서 재료를 꺼내, 요리를 하면 똑같은 재료로도 여러가지 요리를 만들 수 있다. 계란 하나로도 삶은 계란이나, 케이크, 커스터드 크림 등. 온갖 요리를 만들 수 있는걸 생각해보면. 이해가 좀 더 쉬울 것이다.
- 재료를 골라 요리를 만들고
- 고객마다 원하는 요리를 먹게한다
창고에서 재료를 꺼내다가 서로 조합하면 새로운 요리가 된다. 그럼 그 요리를 다시 고객들에게 대접하는데. 고객들이 뭘, 어떻게 먹을지는 사람마다 취향이 다르다. 좋아하는건 많이 먹을 것이고, 원하지 않는건 손도 대지 않을 것이다. 그렇게 각자의 사람이 요리를 선택해서 먹고나면. 그 사람이 먹은 음식들의 목록이 영수증에 찍히겠지? 그 과정이 일어나는 건물 전체가 바로 데이터베이스다.
데이터베이스의 과거와 현재
과거의 데이터베이스는 거대한 창고가 여럿 필요했다. 레스토랑으로 치면, 애플파이를 만들기위한 파이와, 사과를 별도로 저장해야했고. 사과주스를 위한 사이다와 사과 역시 별도의 창고에 넣어뒀다. 분명 둘 다 사과를 쓰는건 똑같지만, 각각의 창고에 별도로 사과를 갖고 있어야. 사과주스와 애플파이를 만들 수 있었다. 그렇다보니 낭비되는 재료가 많아졌다.
- 똑같은 사과를 쓰는 요리인데, 왜 별도의 창고에 저장을 해야하지?
- 게다가 이렇게되면 두개의 사과 재고를 따로 관리해야하잖아!
실제로 과거의 데이터베이스는 무거운 서버실 속에. 각각 다른 저장공간에 내용을 담고있다보니. 서로 데이터가 달라지거나, 불필요한 비용이 더 나가야하는 등. 효율성이 별로 좋지않았다.
그래서 현대의 데이터베이스에서는 이 부분을 하나로 통합하고. 필요한 정보를 미리 준비해놨다가 불러서 쓰거나. 가상 OS형태로 사용하기도한다. 이 부분이 바로 컨테이너와 가상 OS를 사용한 서버 구성인데. 이 지점에 대해서는 다음 기회에 다루도록 하자.
데이터베이스가 있으면, 다양한 정보를 조합하고 변형할 수 있다
데이터베이스는 작은 정보 블럭들을 조합할 수 있는 창고같은 개념이다. 개발자가 그 블럭을 어떻게 조합하느냐에 따라 전혀 다른 정보 덩어리를 만들 수 있다. 그리고 그 정보들이 각각 '기존의 블럭'에 영향을 주거나, 변형될 수도 있다. 현실 레스토랑의 재료는 한번 나가고나면 재고만 사라지지만. 실제 데이터는 사용해도 사라지지않고, 다른 값으로 변하거나. 내용이 추가될 수 있기 때문이다.
기존에 정리했던 방송통신대 UI 설계 개선 케이스를 적용해보면. 레스토랑의 재료가 되는 정보들을 다음과 같이 쭉 펼쳐둘 수 있을 것이다. 이 재료들을 무조건 써야하는건 아니지만. 페이지나, 컴포넌트마다 필요한 정보와. 그렇지않은 정보가 있을거다.
예를 들어 사용자 시험정보 컴포넌트의 경우. 날짜와 요일. 강의명과 시험정보 등의 정보를 조합해. 사용자에게 필요한 특정 정보만을 알려줄 수 있다.
그렇게 만들어진 컴포넌트 하나를 반복하거나. 다른 정보 필터와 조합해. 하나의 화면이 만들어진다. 이런식으로 화면이나 사용자마다 봐야하는 정보가 다르니. 그 정보들을 모두 한곳에 모아. 조합하고, 필요한 정보만 노출할 수 있게. 조합하기위해 데이터베이스를 사용하게된다.
-
UI 디자인을 다뤄본 사람이라면, 기획서에 담기는 모든 페이지들. 그리고 컴포넌트에 들어가는 개별 정보들이 얼마나 많은지 알고 있을 것이다. 개발자는 그 정보들을 모두 담을 수 있는 그릇 형태로 데이터베이스를 설계하고. 그 정보들을 조합해 실제 서비스를 만들어낼 수 있다.
'웹개발' 카테고리의 다른 글
파이썬이란 무엇일까? (1) | 2021.03.18 |
---|---|
웹 브라우저 : 사용자 에이전트란 ? (0) | 2021.03.18 |
파이썬 스터디 : 005. 더하기, 빼기, 곱하기, 나누기 (0) | 2021.02.13 |
파이썬 스터디 : 004. 개발언어 핵심정리 (0) | 2021.02.11 |
파이썬 스터디 : 003. 서비스마다 달라지는 정보구조 (0) | 2021.01.26 |
댓글