brunch

You can make anything
by writing

C.S.Lewis

by 플래터 Sep 12. 2022

엑셀로 온라인 서비스의 RDB 이해하기

비개발자를 위한 엑셀로 이해하는 SQL ①


VOD 강의부터 부트캠프에 이르기까지, SQL의 수요가 늘고 있다. IT 제품과 서비스를 중심으로 사업을 영위하는 조직이 증가하고 데이터 분석에 대한 수요가 증가하면서, 이제는 비단 백엔드 엔지니어와 데이터 엔지니어, 데이터 분석가가 아니더라도 "DB에서 직접 데이터를 추출해서 분석"하려는 수요가 늘기 때문이다. 


그런데 일부 강의나 아티클에서는, SQL을 통한 데이터 추출과 분석을 '누구나 할 수 있는' 것으로 소개하면서도 동시에 일반 사무직, 비개발자, 비데이터 직군이 전혀 경험해보지 않은 무엇인마냥 소개하는 아이러니한 모습을 보인다. 


그런데 비개발자, 비데이터 직군인 우리에게 데이터 추출과 조회는 정말 처음일까? 그리고 SQL은 우리가 경험해보지 못한 신세계의 개념과 기술일까? 



1. 우리는 이미 엑셀excel로 데이터를 다루고 있다   


일반 사무직부터, 사무직이 아니더라도 사무직과 일하는 현장직, 기술직 대부분-심지어는 예순 넘은 우리 아버지도-사용하는 사무 관리 솔루션이 있다. 바로 엑셀(또는 구글 스프레드 시트)이다. 


그런데 어떤 사람은 가계부를 기록하거나 여행 일정표를 만들기도 하고, 어떤 사람은 프로젝트 일정표를 만들어서 관리하기도 하고, 또 어떤 사람은 함수를 이용해 특정 양식의 문서 관리를 자동화하기도 하는 등 엑셀은 정말 다양한 용도로 사용되며, 이에 맞는 다양한 기능을 제공하고 있다.


그런데, 세부적인 활용 용도와 노하우를 제외하면, 과연 엑셀은 궁극적으로 무엇을 위한 솔루션인가? 다시 말해 엑셀이 제공하는 핵심 기능은 무엇인가? 바로 데이터의 기록과 관리다.


정확히는 엑셀은 행과 열로 이루어진 표에 데이터를 기록하고 관리-수정, 삭제, 추출-하기 위한 도구로서, 이를 위한 여러 가지 복잡한 동작을 프로그래머처럼 콘솔 창에 명령어를 입력하여 수행하는 대신, GUI 방식으로 마우스로 아이콘을 클릭하거나, 정해진 단축키를 입력하여 할 수 있게 도와주는 솔루션이다. 


엑셀 템플릿을 검색하면 등장하는 여러 종류의 차트와 표, 기타 양식들. 그러나 궁극적으로 엑셀은 데이터의 기록과 관리를 위한 솔루션이다. (출처 : 구글)



2. 엑셀과 RDBMS의 DB는 사실상 동일하다


앞서 말한 것처럼 비개발자, 비데이터 직군인 우리는 이미 엑셀excel에서 마우스 클릭과 단축키를 통해 데이터를 기록하고, 수정하고, 삭제하고, 조회하는 일을 하고 있다. 그리고 이는 우리 모두 한 번씩은 들어봤을 IT 서비스의 ‘DB(데이터베이스)’와 하등 다를 바가 없다. 


엑셀과 DB가 다를 바가 없다는 게 어떤 의미인지 이해하기 위해, 우선 우리가 평소에 사용하는 엑셀을 조금 더 자세하게 뜯어보기로 하자. 


우선 엑셀은 기본적으로 파일 ⊃ 시트 ⊃ 표(테이블) 의 형태로 구성되어있다. 파일은 말 그대로 ".xlsx"의 확장자로 끝나는 엑셀 파일을 의미하며,  하나의 파일 내에는 여러 개의 창, 또는 시트를 만들어 각기 다른 종류나 내용의 자료를 기록하고 관리한다. 그리고 하나의 시트 내에는 행row과 열column의 구조로 이루어진 표table 형태의 문서를 기록하고 관리할 수 있다.


그리고 우리는 조직마다, 팀마다, 사람마다 관리 규칙은 다르겠지 보통은 하나의 시트에는 하나의 표를 생성하고, 다시 하나의 표에는 하나의 주제에 대한 정보를 기록한다. 그리고 이와 다른 정보-예컨대 다른 연도의 자료, 다른 부서의 자료, 다른 카테고리의 자료-는 다시 다른 시트를 열어서 그 시트 안에 새로운 동일하거나 유사한 구조로 표를 만들어 기록하고, 이렇게 하나의 파일에는 여러 개의 시트와 표가 생성되어 저장된다.


엑셀에서 우리는 하나의 파일에는 여러 개의 시트를 생성하고, 각 시트에는 행과 열로 이루어진 표를 만들어 정보를 기록하고 관리한다.


그리고 우리가 다루는 모든 정보를 하나의 파일에 수십, 수백 개의 시트를 만들어 기록하기란 부적절하거나 불편하므로, 여러 개의 파일을 만들어서 위와 같은 방식으로 기록, 관리한다. 그리고 필요에 따라 파일A의 시트1과 시트2를 함께 참고하거나, 파일A의 시트1과 파일B의 시트1을 같이 참고하기도 한다.

모든 정보를 하나의 시트 또는 하나의 파일에 저장할 수 없으므로, 우리는 여러 개의 시트가 있는 여러 개의 파일을 만들어 관리하고, 필요에 따라 각 파일과 시트를 참조한다.


반면 우리가 흔히 이야기하는 DB에는 크게 두 가지 종류-RDBMS 방식과 NoSQL 방식-가 있는데, 이 중에서도 비개발자, 비데이터 직군으로서 우리가 가장 흔히 접하거나 관심을 갖게 되는 대상은 RDBMS 방식의 DB이다.


RDBMS의 사전적 정의는 '관계형 데이터베이스 관리 시스템 (relational database management system, RDBMS)'으로, 1) 관계형 2) 데이터베이스 그리고 3) 관리 시스템을 하나씩 간단히 짚어보자.


우선 데이터 베이스란 말 그대로 우리가 말하는 DB를 이야기한다. 엑셀과 마찬가지로 정해진 행row과 열colums의 형태로 정보를 기록하여 저장하는데, 이러한 행과 열의 구조를 우리는 엑셀에서와 마찬가지로 테이블Table이라 부르고, 이러한 테이블을 모아둔 곳이 바로 데이터베이스, DB다. 


관리 시스템이란 말 그대로 관리하는 시스템이므로 특별할 점이 없다. 예컨대 우리가 앞서 살펴본 엑셀Excel 역시도 문서를 작성하고 관리하는 시스템이니까.


그렇다면 '관계형'이란 대체 무엇일까? 이 역시 엑셀과 전혀 다를 바 없다. 우리가 앞서 살펴보았듯이, 우리는 하나의 파일에 여러 개의 시트와 표를 만들어 서로 참고하기도 하고, 때로는 각기 다른 파일 안에 있는 시트를 서로 비교하며 참고하기도 한다. 이렇게 하나의 시트는 다른 시트와 참고할 수 있게끔 '관계'가 있는데 이게 바로 '관계형'이다. 


하나의 DB 안에는 여러 개의 Table이 있고 각각의 Table은 서로를 참조할 수 있게끔 '관계'가 있다. 이게 바로 RDBMS의 핵심이다.


그리고 이는 결국 앞서 살펴본 엑셀의 파일과 시트, 표의 개념 및 구조와 모두 동일하다.


결국 RDBMS의 DB와 테이블, 엑셀의 파일과 시트/테이블은 동일한 개념과 구조다. 우리는 이미 RDBMS 방식의 DB를 이해하고, 사용하고 있다.



3. 엑셀과 RDBMS의 DB는 그럼 무엇이 다를까?


그렇다면 과연 RDBMS의 DB와 우리가 흔히 사용하는 엑셀 사이에는 어떤 차이가 있을까? 사실 다른 점을 말하기 시작하면 한도 끝도 없다. 둘은 엄연히 다른 솔루션이고, 사용되는 환경과 디테일한 기능이 모두 다르니까.


그러나 비개발자, 비데이터 직군, 다시 말해 일반 사무직으로서 우리가 정보를 기록하고, 수정하고, 삭제하고, 조회하거나 추출하는 차원에서만 생각해보면 엑셀과 RDBMS의 DB의 차이는 크게 아래와 같다.


1. 

   엑셀에선 마우스 클릭과 단축키로 하던 일을 DB에서는 명령어로 입력해야 한다. 그 명령어를 다루는 언어를 우린 SQL이라고 부른다. 이에 따라 엑셀은 입력, 조회, 수정, 삭제 등의 복합적인 작업을 마우스로 슥슥 선택하고 드래그하여 진행하고 이를 바로바로 눈에 볼 수 있어 직관적인 반면, SQL은 오로지 명령어로 진행하기 때문에 동일한 작업도 다소 추상적이거나 복잡해 보인다.


엑셀은 상단의 각종 메뉴를 클릭하거나 단축키를 통해 복잡한 기능을 간단히 실행시킬 수 있는 반면, SQL은 이에 해당하는 명령어를 직접 모두 구현해야 한다.


2.  

   엑셀에서는 하나의 시트에서 사용자가 바로 새로운 시트를 열고, 표를 만들고, 이 안의 데이터를 조회하고, 입력하고, 수정하고, 삭제할 수 있다. 다시 말해 사용자에게 모든 권한이 주어진다. 반면 온라인 서비스의 DB에서는 보통 이러한 권한을 나눠두고 제한한다.  

  예컨대 엑셀에서도 외부인에게는 ‘보기 권한’만 부여해 파일을 공유하는 것처럼, 일반적인 경우에는 DB를 설계하고 관리하는 개발자(백엔드 엔지니어)는 자신 외에 나머지에게는 DB의 테이블을 ‘조회’할 수 있는 권한만 주고 이에 정보를 직접 입력하거나 수정, 삭제할 수 있는 권한은 다른 이에게 주지 않는다.


엑셀에선 보통 사용자가 시트와 테이블의 생성, 수정, 삭제, 조회를 모두 하는 반면 RDBMS의 DB는 권한을 엄격히 분리, 제한한다.



이러한 차이에도 불구하고, 결국 비개발자, 비데이터 직군으로서 사용하거나 관심을 갖는 엑셀에서의 데이터 기록 및 관리와 RDBMS에서의 데이터 기록 및 관리는 큰 맥락에서 동일하고, 특히나 우리가 DB와 SQL에 관심을 두는 목적은 이미 존재하는 데이터의 ‘조회’를 하는 것이므로, 


이어지는 글에서는 우리가 평소 사용하던 엑셀의 기능과 이를 사용하는 맥락, 노하우, 디테일을 바탕으로 초~중급 수준의 SQL 명령어를 용례와 함께 하나둘씩 살펴보고자 한다.



더 많은 지식과 경험, 노하우가 궁금하다면

홈페이지 방문하기

뉴스레터 구독하기

매거진의 이전글 프로젝트 설계 및 관리에 관한 개념의 맥락 이해하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari