[SQL] 데이터베이스와 SQL

silver0·2022년 9월 12일

SQL

목록 보기
1/2

1. 데이터 베이스

데이터 베이스는 구조화된 데이터의 모임이다.

여러 사람이 공유하고 사용할 목적으로 만들어진 정보의 집합으로 테이블이라는 정보로 구조화되어 있다.

테이블은 행, 열로 구성되고, 각 테이블은 특정 열(Feature)의 조합으로 구성된다.



2. 데이터베이스 종류

1. RDB

일반적으로 사용되는 데이터베이스이다.

  • MySQL, MariaDB. Oracle 등
  • 관계형 데이터베이스는 흔히 표현하는 행, 열로 구조화 되어 있다. 구조화된 자료는 SQL을 통해 조회 가능하다.

2. NoSQL

대용량 데이터 처리에 편리하다는 장점이 있다.

  • MongoDB, Hbase, Casandara 등
  • 관계형 데이터베이스와 다르게 행, 열로 데이터가 구조화되지 않고, 하나의 데이터를 하나의 문서로 표현한다.
    • 행(Observation)이라는 개녀모다 문서(Document)라는 개념으로 데이터를 바라본다.
  • 분산 확장이 가능해 대용량 데이터 처리에 용이하다.

NoSQL의 경우 분석 업무에서 사용하기에는 다소 불편해 분석에 필요한 데이터는 RDB형태로 변환해 분석하는 경우가 많다.

실제로 많은 인더스트리는 RDB를 통해 분석이 가능한 경우가 많다.



3. 데이터베이스와 서버

서버란 특정 목적을 위해 설정된 컴퓨터라고 이해할 수 있다.

데이터 분석 업무를 하면 보통 데이터베이스가 구축된 서버를 이용하게 된다.

서버에는 DB 서버뿐만 아니라 웹 서버, 도메인 서버 등이 있다.

서버 구조에 따라 차이가 있겠지만, 일반적으로 고객이 상품 조회를 요청할 경우 페이지는 웹 서버에 데이터를 요청하고, 서버에서 반환한 정보를 우리가 사용하는 페이지나 어플리케이션에서 확인할 수 있다. 그리고 이런 정보들은 DB 서버에 기록된다.

기록된 데이터를 이용해 우리는 고객이 언제 어떤 상품을 조회했는지 도는 구매했는지 파악하게 된다.

DB서버에 많은 내용이 기록될 수록 더 많은 것을 더 자세히 분석할 수 있다.



4. SQL

SQL은 데이터베이스에 접근하고 데이터베이스를 조작하는 언어다.

DB와 소통하기 위해서 SQL을 사용하는데, SQL을 더 사용하기 쉽게 만들어 놓은 환경을 DB GUI(Graphical User Interface) Tool이라 한다.



5. MySQL, MySQL Workbench 설치

생략



6. MySQL Workbench 구성

MySQL은 데이터베이스, MySQL Workbench는 SQL 작성을 더 용이하게 하도록 만들어진 툴이다.

  • SQL Script : 데이터베이스 조작 및 조회하기 위해 SQL을 작성하는 곳
  • Output : 실행결과 출력
  • Management : 데이터 접근 권한 등 설정
  • Database : 데이터베이스 리스트 조회


7. 서버, GUI

SQL은 데이터베이스와 사람 사이의 소통 언어다.

SQL을 통해 원하는 데이터를 조회하거나 생성한다. SQL을 처음 접하는 경우
데이터베이스 서버, Workbench(GUI)와 같은 용어가 낯설고, 각각이 어떻게 유기적으로 연결되는지 이해하기 힘들어 데이터 조회가 어렵게 느껴진다.

1) 서버

우리가 사용하는 컴퓨터를 말한다. 보통 특정 목적을 가지는 컴퓨터를 서버라고 부른다.

예를 들면, 데이터베이스 서버, 웹 서버 등이 있다.

* 웹 서버

웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받고, 웹 페이지를 반환하는 서버를 의미한다.

최근에는 클라우드 서비스(AWS, Google Cloud Platform 등)가 많이 활용된다.

클라우드 서비스(컴퓨팅)란 사용자 환경 밖에서 서비스, 컴퓨터 자원을 사용하고, 이에 대한 비용을 지불하는 서비스를 말한다.

  • 기존에 사용하던 웹 서버(물리 장비)를 사용하지 않고, 구글이나 아마존과 같은 클라우드 서비스 회사의 컴퓨터 자원을 활용하는 것.

트래픽에 따라 유동적으로 메모리, CPU 등의 자원을 조절할 수 있다는 점, 초기 막대한 인프라 구축 비용을 줄일 수 있는 것이 강점이다.

* 데이터베이스 서버

데이터베이스 서버는 데이터베이스 서비스를 다른 컴퓨터나 컴퓨터 프로그램에 제공하는 서버를 의미한다.

  • 웹 서버, DB서버가 어떻게 유기적으로 동작하는지 간단한 예시
    • A라는 고객이 액체세제 상품을 커머스 사이트에서 주문
    • 주문 상세 내역을 입력하고 바로 구매 클릭 시 웹 서버에서 해당 정보를 DB에 적재한다.
    • 해당 구매와 관련된 상세한 정보(구매 상품명, 상품 수량, 구매 금액, 구매자 정보 등)들이 DB에 저장된다.

2) DB GUI Tools

MySQL, Workbench와 같은 DB GUI Tool에서는 데이터베이스 탐색, 사용자 권한, 쿼리 작성 등을 쉽게 할 수 있는 기능들을 제공한다.



8. 분석가, SQL

데이터베이스와 SQL을 주로 다루는 직군에는 DBA(Database Administrator), 데이터 분석가가 있다. 두 직군은 SQL을 많이 활용하지만 성격상 큰 차이가 있다.

1) DBA(Database Administrator)

데이터베이스 관리자는 한 조직 내에서 데이터베이스를 설치, 구성, 업그레이드, 관리, 감시하는 일을 맡은 사람이다.

  • 자료 복구 - 백업
  • 보전 - 데이터 보전(Database preservaiton)
  • 보안 - 접근 제어
  • 사용 가능
  • 성능

2) 개발 및 테스트 지원

데이터베이스 관리자는 크게 보면 DB를 운영하고 책임지는 관리자를 의미한다.

3) DBA의 경우

  • 데이터 조회 목적으로 SQL을 사용
  • 테이블 생성 및 관리
  • 데이터 접근 권한 결정
  • 사용자 권한 부여
  • 데이터베이스 전체 관리

4) 데이터 분석가의 경우

  • 데이터베이스를 사용하는 유저
  • 데이터를 조회하기 위한 SQL 사용
  • 복잡한 로직의 데이터를 조회하는 경우가 많음


9. SQL 쿼리 작성법

1) 문법, 작성법 완벽하게 숙지하기

SQL문법은 간단하다. 다수의 쿼리가 SELECT, FROM, WHERE, GROUP BY, JOIN으로 작성되므로, 각 절의 기능을 정확히 알고 있다면 쉽게 데이터를 조회할 수 있다. 하지만 문법, 작성법을 완벽하게 숙지하지 못한다면, 단 하나의 데이터도 조회할 수 없다. 따라서 문법과 기능을 직접 실습해 보면서 100% 내 것으로 만든 뒤 실습을 진행하는 것이 효율적인 학습 방법이라 생각된다.

2) 절차 먼저 고민해보기

SQL을 이용해 데이터를 조회할 때 가장 중요한 부분은 정확성과 속도다.

이를 보장하려면 먼저 어떤 데이터가 필요하고, 어떤 형식으로 데이터를 가공, 결합해 데이터를 추출할지 절차를 생각해 보는 것이 중요하다.

  • 요청사항
    • 각각의 국가의 연도별 구매자 수를 출력하세요.
  • 절차
    • 데이터 탐색
      • 국가 정보, 구매 정보는 어떤 테이블에 존재하는가?
      • 2개 정보가 다른 테이블에 존재한다면 어떻게 결합할 것인가?
      • 컬럼에 중복되는 값이 존재하는가?
    • 쿼리 작성
      • 고객 테이블과 매출 테이블을 결합한다.
      • 국가 컬럼, 연도 컬럼으로 데이터를 그룹핑한다.
      • 구매자 수를 카운트한다.

이러한 과정을 의식적으로 연습하는 것이 중요하다.

다양한 요청을 접하고 추출 절차를 정리하다 보면, 정확성을 확보하면서 더 빠르게 데이터를 추출할 수 있다.

3) 데이터 정합성, 정확성

정합성이란, 다양한 데이터베이스 내에 데이터 중복 등으로 인한 불일치가 없는 상태를 말한다.

복잡한 쿼리를 작성하고 분석을 진행할수록 정합성을 맞추기는 쉽지 않다.

하지만 정합성이 확보되지 않은 데이터는 아무런 쓸모가 없다.

그렇기 때문에 쿼리 작성 시 가장 조심하고 집중해야 하는 부분이 데이터의 정합성이다.

  • 부분 합과 전체 합 비교하기

    보통의 분석은 전체에서 부분으로 진행이 된다.

    예를 들어, 분기 리포트를 작성한다면, 가장 궁금한 것이 무엇일까? 분기의 매출일 것이다.

    그 다음 궁금한 것은 무엇일까? 월별 매출이다.

    이처럼 분석은 전체에서 부분으로 진행되는데, 부분의 합(월 매출 총합)이 전체의 합(매출 총합)과 일치하지 않는다면, 쿼리의 어떤 부분이 잘못되었는지 찾아야 하고, 다시 작업해야 한다.

    만약 분석 막바지에 이런 오류를 발견한다면, 엄청난 비용을 지불하고 다시 분석을 진행해야 한다.

    그렇기 때문에 항상 다음 과정으로 넘어갈 때 부분 합과 전체 합이 일치하는지 확인하는 과정을 수시로 해 주는 것이 중요하다.


  • 분석하기 편한 형태로 데이터 가공하기

    매번 분석할 데이터를 새로 생성해서 분석하면 실수하기 쉽다. 쿼리는 사람이 작성하는 것이므로 Human Error가 언제든 발생할 수 있다.

    이런 실수의 확률을 줄이기 위해서 분석하기 편한 형태로 전체 데이터를 미리 가공하고, 가공된 데이터만 사용해 분석하는 것을 추천한다.

    최대한 새로운 쿼리를 작성하지 않고 분석하는 것이 데이터 정합성을 확보하는 방법이다.


  • Review하기

    보통 개발 조직에서 개발자들은 코드 작성자의 실수를 찾아내는 목적, 로직 개선 방향을 논의하기 위해 코드를 리뷰한다. 하지만 분석 조직의 경우 코드 리뷰를 하지 않는 경우가 많다. 본인의 실수를 본인이 발견하기는 어렵다.

    만약 SQL을 잘못 작성해 회사의 중요한 IR 자료에 수치가 잘못 들어간다면 회사 입장에서 크나큰 손해가 아닐 수 없다. 그렇기 때문에 분석 조직 내부에서도 서로의 쿼리를 리뷰하고, 실수를 미연에 방지하는 문화가 필요하다.




📖 Reference

  • 『SQL로 맛보는 데이터 전처리 분석』 - 노수영, BJPUBLIC
profile
작은 일이라도 꾸준히 노력하면 큰 뜻을 이룰 수 있다

0개의 댓글