본문 바로가기

코딩/코딩에서 중요한 개념들

비전공자가 이해하는 DB의 세계

반응형

 

 

이 글은 절대 전문적인 글이 아닙니다. 

그저 제가 공부하면서 이해한 내용을 적은 글입니다. 

틀린 부분이 있다면 언제든 지적해주세요. 


 

DB를 만들어야 한다면 먼저 고민해야 할 것이 있습니다. 

 

1. 어디에다 저장 할 것인가? 

 

구현하고 싶은 앱에 따라서 사용자의 데이터를 기기 내부에 저장 해야 할지, 외부 서버에 저장을 해야 할지 고민해야 합니다. 

우리가 흔히 사용하고 있는 네카쿠라배 와 같은 앱들은 사용자의 데이터를 외부 서버에 저장을 합니다.

기업 정책에 따라  자체적으로 서버를 운영하는 네이버도 있고, 다른 회사의 서버를 빌려서 운영하는 카카오 같은 기업도 있습니다. 

 

보통의 IT회사들은 자체적으로 서버를 운영하기 보다는 AWS와 같은 클라우드 업체의 서버를 빌려서 운영하고 있습니다. 

 

하지만 무조건 외부 서버를 이용하는게 답은 아니라고 생각합니다. 

간단한 계산기, Todo어플은  기기 내부에 저장해도 사용자는 이해 할테니까요. 

 

 

 

2. 어떤 DB를 사용 할 것인가?

 

AWS클라우드 업체를 이용하더라도 단순히 컴퓨터 저장 공간을 빌리는 것이기 때문에 해당 서버를 운영하는 
DB를 선택을 해야 합니다. 

 

서버= 저장 공간

DB= 저장하는 방법

 

이라고 생각하시면 됩니다. 

 

쉽게 생각하시면 집안에 있는 

 

냉장고= 서버

냉장고를 정리하는 나만의 방법= DB 

 

DB 데이터를 정리하는 방법은 여러 종류가 있지만 큰 흐름에서는 딱 두가지로 나눕니다. 

 

관계형인가 No관계형인가 입니다. 

 중요한 핵심은 SQL을 사용하느냐 사용하지 않느냐의 차이입니다. 

 

SQL은 컬럼과 로우를 통해서 쌓은 데이터를 쿼리문을 이용해서 운영하는 방식입니다. 굉장히 정형화되어 있습니다. 우리가 흔히 사용하는 엑셀을 SQL이라고 생각하시면 됩니다. 엑셀을 열면 컬럼과 로우에 값을 입력해서 여러 수식을 사용해서 데이터를 관리합니다. 엑셀은 이쁘게 만들기가 어렵습니다.  이미 컬럼과 로우가 정해져 있어서 그 틀 안에서만 사용이 가능합니다. 

 

NoSQL은 기존의 SQL의 단점을 보완하기 위해 만든 DB입니다. 대표적으로 파이어베이스가 NoSQL입니다. 이것은 엑셀과 다른 파워 포인트로 생각하시면 좀 쉽습니다. 파워 포인트는 각각의 페이지에 알맞는 내용을 담습니다. 목차 페이지에는 목차 관련 내용이 들어가고 본문 페이지에는 본문 관련 내용이 들어갑니다. 이러한 방식을 다큐먼트 방식이라고 합니다. 

파워 포인트는 만드는 사람마다 각자만의 특성이 묻어나옵니다. 이쁘게 만드는 사람도 있고, 페이지를 최소화 하는 사람도 있고,3D입체형으로 만드는 사람도 있습니다.  이렇게 엑셀과는 다르게 표현 할 수 있는 방식이 넓은게 특징입니다. 

 

SQL = 엑셀 

NoSQL= 파워포인트 

 

 

 

 

3.그래서 뭐가 좋은데?(개인적인 의견 :수파베이스)

 

저는 수학을 못하는 찐 문과입니다. 하지만 숫자는 좋아합니다. 숫자는 곧 데이터입니다. 아래는 DB 랭킹을 보여주는 사이트 입니다. 

https://db-engines.com/en/ranking

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

 

상위 랭킹들이 관계형 DB 입니다. 그만큼 많은 사람들이 사용하고 있고  정보도 많고, 관련 서비스의 수요가 높다는 의미이기도 합니다.  

비지니스적인 관점에서 봤을 때 제가 관계형DB를 사용해야 후에 관련 서비스를 쉽게 받을 수 있다는 생각이 들었습니다. 

 

대부분의 Flutter  입문 책은 외부 서버 데이터 연동시에 파이어 베이스를 사용합니다. 그래서 대부분이 비전공자분들이 그 책을 읽고 Flutter-파이어베이스를 교과서처럼 생각하시는 것 같습니다. 

 

저도 처음에는 파이어베이스를 공부를 했으나 DB를 공부하다 보니 결국 관계형 DB를 고집하고 있습니다. 

그래서 찾아낸 수파베이스입니다. 아직 베타서비스이긴 하지만 PostgresSQL을 지원하고 있습니다. 관계형DB를 배우신 개발자라면 쉽게 익힐 수 있는 서비스입니다. 

 

4.NoSQL DB는 안좋은건가?

 

절대 아닙니다. NoSQL  기존 SQL  단점을 보완하기 위해 나온 것입니다. 몇 해 전 부터 IT업계의 AI 기술들이 속속 개발되고 있습니다. 관련 빅데이터를 처리 할 때는 NoSQL이 새로운 답안이 될 수도 있습니다. 하지만 저는 NoSQL을 사용해서 그럴 깜냥이 못됩니다. NoSQL은 SQL  보다 역사가 짧고, 기술 난이도가 높습니다.  예를 들어 서비스 하고 있는 앱에서 이벤트를 진행 합니다. 특정 조건의 유저를 찾아야 할 때 SQL 은 쿼리문으로 간단히 찾아 낼 수 있습니다.  하지만 NoSQL 은 특정 조건이 무엇이냐에 따라서 간단히 찾아 낼지 확인하기가 어렵습니다. 

 

제가 파이어베이스를 포기한 이유도 로그인 인증 , 연동 등등 구현하는 것은 쉽지만, 운영적인 측면에서는 꽤 도전적인 선택이라고 생각했기 때문입니다. 

 

5. 정리

 

비전공자분이 DB를 선택해야 한다면 저는 관계형DB를 배우시라고 추천드립니다. 백엔드 개발자분 중에서 SQL은 기본으로 하시고 NoSQL을 잘하시는 분은 계십니다만 SQL은 모르고 NoSQL만 잘하는 분은 잘 없습니다. SQL을 하셔야 주변에 쉽게 도움을 받으실 수 있습니다. 

 

 

 

728x90
반응형