내 잡다한 노트

OLTP DB vs OLAP DB ( 예시 쿼리 ) 본문

DB

OLTP DB vs OLAP DB ( 예시 쿼리 )

peanutwalnut 2025. 2. 11. 10:28

OLTP DB (온라인 트랜잭션 처리)

목적:

  • 실시간 데이터 입력, 수정, 삭제 등 빈번한 CRUD(생성, 읽기, 업데이트, 삭제) 작업
  • 빠른 응답 속도와 높은 동시성 보장

예시 쿼리:

  1. 신규 주문 생성 (INSERT)
    • 주문 테이블에 신규 주문을 추가하는 쿼리로, 트랜잭션 내에서 처리되어야 전체 주문 데이터의 일관성을 유지합니다.
       
      INSERT INTO orders (order_id, customer_id, order_date, status) VALUES ('ORD12345', 'CUST001', NOW(), 'pending');
  2. 주문 상태 업데이트 (UPDATE)
    • 주문의 상태를 변경하는 작업은 빠른 응답과 동시성 제어가 중요합니다.
       
      UPDATE orders SET status = 'completed' WHERE order_id = 'ORD12345';
  3. 사용자 정보 조회 (SELECT)
    • 단일 레코드 또는 소수의 레코드를 빠르게 조회하는 작업.
       
      SELECT * FROM customers WHERE customer_id = 'CUST001';
  4. 주문 취소 (DELETE)
    • 주문 취소와 같이 특정 레코드를 삭제하는 작업.
       
      DELETE FROM orders WHERE order_id = 'ORD12345';

특징:

  • 짧은 응답 시간과 높은 빈도의 트랜잭션 처리
  • 데이터의 정확성과 일관성을 보장하기 위한 강력한 트랜잭션 관리가 필요

OLAP DB (온라인 분석 처리)

목적:

  • 대량의 데이터 집계, 분석, 리포팅
  • 복잡한 쿼리, 다차원 분석, 대규모 데이터 스캔

예시 쿼리:

  1. 일별 매출 집계 (GROUP BY, 집계 함수 사용)
    • 대량의 주문 데이터를 날짜별로 집계하여 분석하는 쿼리입니다.
       
      SELECT order_date, SUM(total_amount) AS daily_sales FROM orders GROUP BY order_date ORDER BY order_date;
  2. 고객별 구매 패턴 분석 (JOIN 및 집계)
    • 고객과 주문 데이터를 조인하여 고객별 구매 건수와 총 구매 금액을 계산합니다.
       
      SELECT c.customer_id, c.name, COUNT(o.order_id) AS order_count, SUM(o.total_amount) AS total_spent FROM customers c JOIN orders o ON c.customer_id = o.customer_id GROUP BY c.customer_id, c.name ORDER BY total_spent DESC;
  3. 시간대별 트래픽 분석 (윈도우 함수, 집계)
    • 웹 로그 데이터를 시간대별로 집계하여 분석하는 쿼리. 복잡한 집계 및 윈도우 함수 사용 사례입니다.
       
      SELECT hour, COUNT(*) AS hits, AVG(COUNT(*)) OVER () AS avg_hits FROM web_logs GROUP BY hour ORDER BY hour;
  4. 다차원 분석을 위한 피벗 쿼리 (CASE문 활용)
    • 지역별로 특정 기간 동안의 매출을 피벗 형태로 집계하는 예시입니다.
       
      SELECT region, SUM(CASE WHEN order_date BETWEEN '2025-01-01' AND '2025-01-31' THEN total_amount ELSE 0 END) AS jan_sales, SUM(CASE WHEN order_date BETWEEN '2025-02-01' AND '2025-02-28' THEN total_amount ELSE 0 END) AS feb_sales FROM orders GROUP BY region;

특징:

  • 대규모 데이터 스캔 및 복잡한 집계 연산을 처리
  • 응답 시간이 상대적으로 길어도 전체 배치 처리나 주기적 리포트 생성에 적합
  • 데이터 적재(ETL) 후 별도의 분석 전용 DB나 데이터 웨어하우스에서 수행하는 경우가 많음

'DB' 카테고리의 다른 글

DB Connection  (0) 2025.02.17
DB 관련 직업들과 역할  (0) 2025.02.13
DB에서 Join의 필요성  (0) 2025.02.06
NoSQL과 SQL 기반 DB 비교  (0) 2025.02.04
DB와 관련된 기본 용어  (0) 2025.01.27