우리가 페이스북에서 '좋아요'를 누르고, 유튜브에서 구독을 하는 행위는 모두 해당 회사의 데이터베이스(Database)라는 곳에 저장됩니다. 데이터베이스는 '일정한 체계 속에 저장된 데이터의 집합'을 의미합니다. 또는 '그것을 다루는 프로그램'을 의미하기도 합니다.
현대 사회에서 많은 기업들이 이런 식으로 고객과 시장의 데이터를 수집해서 데이터베이스에 저장하고 있습니다. 이렇게 저장된 데이터는 기업이 고객과 시장을 분석해서 의사 결정을 하고, 미래 전략을 수립하는데 필요한 귀중한 자산이 되는데요.
그래서 많은 기업에서 직원들에게 데이터베이스에 저장된 데이터를 분석하는 능력을 요구하는 경우가 많아지고 있습니다. 그리고 꼭 IT 개발자가 아니더라도, 기획자, 마케터, 데이터 사이언티스트 등 많은 직군의 사람들 또한 데이터를 분석해야할 경우가 점점 많아지고 있는데요.
그렇다면 데이터베이스에 저장된 데이터는 어떻게 분석할 수 있을까요?
그 전에 데이터베이스를 어떻게 다룰 수 있는지를 큰 틀에서부터 살펴봐야 합니다. 잠깐 다음 그림을 볼까요?
이 그림에서 가장 왼쪽의 사람 아이콘은 '사용자', 가장 오른쪽의 원통 하나는 '데이터베이스' 하나를 나타냅니다. 그 사이에 DBMS라고 써있는 것이 보이죠? 이 DBMS라는 게 아주 중요한데요.
DBMS는 Database Management System의 약자로 '데이터베이스 관리 시스템'이라는 뜻을 가집니다. DBMS는 쉽게 말해서 '데이터베이스 관련 작업'을 하기 위해 사용자가 사용해야하는 프로그램을 의미합니다.
지금 그림에서는 DBMS와 데이터베이스(DATABASE)가 마치 별개인 것처럼 표시되어 있지만 이것은 여러분의 이해를 돕기 위해서 그렇게 표현한 것 뿐입니다. 실제로는 DBMS가 자신만의 방식으로 폴더/파일 구조 안에서 DATABASE를 저장하고 관리합니다.
보통 데이터베이스로 무슨 작업을 한다고 할 때는 모두 이 DBMS를 사용한다는 뜻입니다. DBMS에는 아래 그림과 같이 여러 종류가 있고, 회사마다 사용하는 DBMS가 다를 수 있습니다. 이는 DBMS마다 그 특성이 조금씩 다르기 때문인데요. 회사마다 자사의 상황에 맞는 DBMS를 선택하는 것이죠. 그리고 방금 전에 말한대로 실무적으로는 데이터베이스가 DBMS와 별도의 개념이 아니라 DBMS 안에 포함되는 것이라고 생각해야 합니다. 그래서 DBMS를 고르는 게, 곧 데이터베이스를 고르는 것이라고 할 수 있습니다.
그렇다면 이런 DBMS들은 어떻게 사용할 수 있을까요? DBMS는 SQL(Structured Query Language)이라는 언어로 사용할 수 있는데요. 사용자가 SQL로 DBMS에게 '나는 이런이런 데이터베이스 작업을 원해'라고 하면 DBMS가 그 SQL 문의 내용대로 실행을 해주는 거죠. 잠깐 아래 사진을 보세요.
이 사진을 보면 SELECT i.id부터 시작해서 가장 아랫줄의 ORDER BY AVG(star) DESC; 까지 길다란 문장이 보이죠? 뭔가 영어 문장이기는 한데 우리가 일반적으로 보는 영어 문장과는 좀 다르네요. 이것이 바로 SQL입니다. SQL은 Structured Query Language의 줄임말인데요. 위 사진에 보이는 것처럼 구조화된(Structured) 문법을 가진 언어입니다.
이렇게 SQL을 쓰고 실행하면, DBMS가 이 SQL을 읽어서 그 의미대로 데이터베이스 관련 작업을 하고, 그 결과를 사용자에게 보여주게 되는 겁니다.
자, 정리해볼게요.
(1) 데이터베이스라는 걸 다룰려면 DBMS라는 프로그램을 사용해야하고,
(2) DBMS를 사용하려면 SQL이라는 언어를 쓸 줄 알아야합니다.
이것을 초반에 말한 내용과 결합하면 결국 이런 의미가 되겠죠?
대다수의 기업들이 데이터베이스에 데이터를 체계적으로 저장하고 있습니다. → 많은 회사에서 이렇게 저장된 데이터를 분석할 수 있는 사람을 요구하고 있습니다. → 많은 회사에서 SQL을 사용할 줄 아는 사람을 요구하고 있습니다
.
따라서 꼭 개발자가 될 사람이 아니라해도, 많은 분들이 SQL을 사용할 줄 알아야 할 겁니다.
참고로, SQL은 파이썬, 자바 같은 일반적인 프로그래밍 언어와는 조금 다른 성격의 언어입니다. SQL은 데이터베이스 관련 작업이라는 특정 분야에 특화된 언이인데요. 이렇게 특정 도메인(영역)에 특화된 언어를 Domain-Specific Language(도메인 특화 언어, 줄여서 DSL)라고 합니다. 그러니까 SQL은 업무 자동화 프로그램을 만들거나, 게임을 만들 수도 있는 파이썬 같은 프로그래밍 언어에 비해 좀더 특수한 분야에서, 한정적으로 사용되는 언어인 거죠.
그렇다면 SQL은 일반 프로그래밍 언어에 비해 범용성이 떨어지니까 굳이 배우지 않아도 되는 걸까요? 절대 그렇지 않습니다
.
일단 데이터베이스를 제대로 사용하려면 SQL 말고는 그 방법이 없습니다. 일반적인 프로그램을 만들 때는 같은 걸 만든다고 해도, 파이썬으로도 할 수 있고, 자바로도 할 수가 있는 경우가 많지만, 데이터베이스 분야에서는 SQL 말고는 답이 없는 거죠. 그래서 데이터 분석을 해야하는 분들은 SQL을 필히 배우셔야 합니다. 이 말을 보면 그냥 '엑셀(Excel)'을 잘 쓰면 되는 거 아닌가?라고 생각하는 분들이 있을 수도 있는데요. 엑셀 또한 데이터를 저장하고 분석할 때 유용한 프로그램이지만
(1) 데이터베이스만큼 많은 용량의 데이터를 나타낼 수 없다는 점
(2) 데이터베이스를 직접 다룰 때보다는 실시간 데이터를 다루기가 힘들다는 점
(3) 같은 결과를 만들어낼 때 오히려 SQL 보다도 난이도가 높은 경우가 생긴다는 점
등의 한계가 있습니다. 물론, SQL과 엑셀 프로그램을 둘다 잘 다루는 게 가장 좋겠죠!
그렇다면 개발자 입장에서 SQL은 어떨까요? 개발자는 데이터베이스에 저장된 데이터를 분석하는 정도가 아니라 본인이 처음부터 데이터베이스를 구축하고 테이블을 설계할 수 있어야합니다. 따라서 그 어떤 직군보다도 SQL을 제대로 배워야하죠. 요즘은 데이터베이스를 다뤄야할 때 굳이 SQL 문을 직접 쓰지 않아도, 프로그래밍 언어 코드만 쓰면, 자동으로 SQL로 변환해서 실행해주는 모듈들이 잘 발전된 상태입니다.
하지만 이런 것들이 있다고 해도 여러분이 SQL을 쓸 줄 모르면 데이터베이스에 관한 지식이 없기 때문에 그 모듈 자체를 잘 활용하는 것이 불가능합니다. 그래서 일단은 SQL을 제대로 배우고 나서 그런 모듈들을 사용하는 방향으로 나아가는 것이 올바른 방향인데요.
이처럼 어느 직군에게나 SQL은 꽤나 큰 중요성을 갖고 있는 언어라고 할 수 있습니다.
SQL은 한번 배울 때, 그것에 관한 배경 지식, 기본적인 사용법과 그 원리 등에 대해서 확실하게 배워둬야 합니다. 그렇게 제대로 배우고나면 나중에는 배우지 않은 내용도 스스로 찾아볼 수 있을 정도의 능력을 갖출 수 있게 됩니다. 그렇지 않고 '이렇게 하면 이게 실행된다.' 정도의 수준으로만 배우면, 매번 똑같은 SQL 공부만 하고 실무 능력은 전혀 향상되지 않을지도 모릅니다.
이번에 코드잇에서 데이터베이스, DBMS, SQL의 개념을 상세히 설명하고, SQL을 실무에서 바로 사용할 수 있을 정도로 상세히 알려주는, 'SQL로 배우는 데이터 분석' 토픽을 출시했는데요. 코드잇과 함께, 데이터베이스에 저장된 데이터를 SQL로 분석하는 방법을 제대로 익혀봅시다.
코드잇에서 SQL 데이터베이스 무료로 시작해보세요 :-)