brunch

기획을 위한 최소한의 개발 지식 (7)

데이터베이스

by Innobanker

목차


✅ 컴퓨터의 구성 요소와 운영체제

프로그래밍 언어

✅ 네트워크, 클라이언트, 서버

✅ 스크래핑, API, JSON

✅ App 과 Web

✅ 네이티브, 리액티브, 웹앱, 하이브리드

✅ 데이터베이스 ⬅︎

✅ 프레임워크, 라이브러리

✅ 개발팀 협업 방법

✅ 클라우드


문과생도 쿼리를 모르면 일을 하기 어려운 세상이다. 왠만한 의사결정은 데이터를 기반으로 하기 때문이다. 그래서 쿼리를 짜고 열심히 돌리다가 기획자는 쿼리를 돌리는 스킬 보다는 (1) 쿼리를 통해 어떤 형태의 결과 데이터를 뽑고 싶은지를 명확하게 정의하고 (2) 참신한 가설과 해석을 통해 남들과 차별화되고 유의미한 결론을 내리는 능력이 더 중요하다는 걸 깨닫게 되었다. 왜냐면 데이터베이스는 데이터 아키텍처와 개발자가 같이 만드는 거니까 기획자는 그 구조와 장단점을 잘 이해하고 어떻게 활용할 지 고민하는 데에 좀더 시간을 쓰면 된다.


나 같은 경우에는 데이터베이스를 구조적으로 개편하는 프로젝트를 맡으면서 조금 더 공부하게 되었는데, 이쪽 분야도 생각보다 방대해서 역시나 뼈대를 잡고 조금씩 필요할 때마다 알아 나가는 게 좋은 것 같다.


☑️ 데이터의 무결성 : 데이터는 아주 작은 결점도 없어야 한다. 특히 금융처럼 돈이나 개인정보에 관련한 데이터는 아주 작은 오차로도 큰 피해와 혼선을 가져오기 때문에 절대로 틀려서는 안 된다.


☑️ 관계형 데이터베이스 : RDB(Relational Database). 쿼리를 한 번만 돌려 보면 알겠지만 table 별로 엑셀로 치면 '열'에 해당하는 column 으로 구분해서 데이터를 위에서 아래로 쌓아 나간다. 어디까지나 텍스트 형태의 데이터에 관한 이야기다. 한 table 에 모든 정보를 담는다면 원하는 정보를 찾는 데 너무 많은 시간이 소요되기 때문에 table 내에서 데이터에 번호를 매기고 table 간에 연결해 주는 방식으로 데이터를 구조화 한다. 그러면 원하는 정보가 담겨 있는 table만 호출하면 되기 때문에 효율성이 높아진다. 이 table 간의 관계가 포함된 dataset 전체를 Schema 혹은 Database 라고 부른다. SQL, Oracle DB, MySQL, MariaDB 등 많은 관계형 데이터베이스 관리 시스템 중에서 선택적으로 사용한다.


☑️ 데이터 저장 위치 : 서버와 클라이언트는 모두 컴퓨터이기 때문에 데이터를 저장할 수 있다. 알람 앱에 설정한 기상시간처럼 네트워크 연결 없이도 데이터가 저장되면 클라이언트에 저장한 것이고, 반대는 서버에 저장한 것이다. 에버노트 처럼 두 곳 모두에 저장된 경우도 있는데 이 경우 클라이언트와 서버의 데이터를 서로 맞추는 '동기화' 과정이 필요하다. 어디에 저장되어 있는지 겉으로 구분하기 어려운 경우 API 문서를 보면 알 수 있다.


'로컬에 있다' = '내부 DB에 저장하고 있다' = '네이티브에서 가져왔다' = '클라이언트에 데이터가 있다.'

'API로 요청해야 된다' = '(그냥) DB에 있다' = '서버에 데이터가 있다.'


거의 다른 나라 말을 통역하는 것 같다. 겉핥기 식으로 개념을 익혔는데 실무할 때 개발자분들이 쓰는 표현에 당황해서 못 알아들은 경험이 있다. 다음부턴 당황하지 말자. 이 정도 봤는데 모르면 물어봐도 된다.


☑️ 이미지 데이터 : 용량 및 업데이트 빈도 등에 따라 저장 위치 즉 주소가 다르다. 자주 업데이트 해야 하는 이미지라면 클라이엔트에 저장할 경우 앱을 업데이트 해야만 바뀌기 때문에 서버에 저장해 두고 필요할 때마다 API를 통해 호출하는 것이 효율적이다. 인스타그램 처럼 이미지를 고객이 만들어내는 경우 고객의 계정 정보에 관계 관리를 통해 한 치의 오차 없이 저장해야 하기 때문에 이미지 주소를 DB에 넣어서 관리한다. 반대로 서비스에서 제공하는 아이콘 등의 이미지는 대부분 클라이언트에 저장하고, 변경하고 싶은 경우 파일을 변경하거나 다른 주소를 지정하면 된다.


관계형 데이터에 대해서는 실무에서 경험해 봐서 어느 정도 아는데 어떤 데이터를 어디에 저장하는 지는 상세하게 정리한 적이 없어 도움이 많이 되었다. 다음에 혹시 이미지 수정이 필요할 경우 어디에 데이터가 저장되어 있는지 먼저 파악하고 나서 담당자를 찾고 요청할 수 있을 것 같다.


참고 자료


<비전공자를 위한 이해할 수 있는 IT 지식>, 최원영, 2021.02.01., T.W.I.G.


keyword
작가의 이전글기획을 위한 최소한의 개발 지식 (6)