DP-900 시험에서 "워크로드와 역할" 파트는 생각보다 자주 나옵니다. "이 시나리오는 OLTP인가 OLAP인가?"와 "이 작업을 담당하는 사람은 누구인가?"를 묻는 문제들입니다. 딱딱한 정의보다 실생활 비유로 이해하면 훨씬 오래 기억됩니다.
OLTP vs OLAP: 은행으로 이해하기
OLTP와 OLAP는 데이터를 어떻게 사용하는가에 따른 두 가지 방식입니다. 은행을 예시로 들어보겠습니다.
OLTP (Online Transaction Processing) — 창구 직원
은행 창구에 앉아 있는 직원을 상상해 보세요. 고객이 오면 입금, 출금, 이체 같은 업무를 처리합니다. 한 번에 한 건씩, 빠르게, 정확하게 처리해야 합니다. 고객이 이체를 요청하면, 그 이체가 100% 성공하거나 100% 실패해야 합니다. 중간 상태(돈이 빠져나갔는데 받는 쪽에 안 들어간 상태)는 절대 있어서는 안 됩니다.
이것이 OLTP입니다. 일상적인 업무 트랜잭션을 빠르고 안전하게 처리하는 방식입니다. 데이터는 항상 최신 상태이고, 쿼리는 간단하며, 읽기/쓰기가 빈번하게 발생합니다.
OLTP 특징 정리: 목적: 일상적인 업무 트랜잭션 처리 (주문, 결제, 예약 등) 데이터 상태: 현재, 최신 데이터 쿼리 유형: 단순하고 빠른 쿼리 (특정 주문 조회, 재고 업데이트 등) 데이터 변경: 빈번한 INSERT, UPDATE, DELETE 동시 사용자: 수천~수만 명이 동시에 접근 Azure 서비스: Azure SQL Database, Azure Cosmos DB
OLAP (Online Analytical Processing) — 본부 분석팀
이번엔 은행 본부의 분석팀을 상상해 보세요. 전국 수백 개 지점에서 쌓인 수년간의 거래 데이터를 분석합니다. "올해 1분기 강남 지역 30대 고객의 평균 예금액은 얼마인가?", "어떤 상품이 어느 지역에서 가장 많이 팔렸나?" 같은 복잡한 질문에 답합니다.
이것이 OLAP입니다. 데이터는 대용량이고 과거 이력을 포함하며, 쿼리는 복잡하고 대량의 데이터를 스캔합니다. 결과가 나오는 데 몇 분이 걸려도 괜찮습니다. 여기서 중요한 것은 속도보다 깊이 있는 분석입니다.
OLAP 특징 정리: 목적: 복잡한 분석 쿼리, 의사결정 지원 데이터 상태: 과거 이력 데이터, 집계 데이터 쿼리 유형: 복잡하고 오래 걸리는 쿼리 (추세, 패턴 분석) 데이터 변경: 드물게 발생 (주로 읽기 전용) 동시 사용자: 소수의 분석가 Azure 서비스: Azure Synapse Analytics, Azure Analysis Services
OLTP vs OLAP 비교표
| 항목 | OLTP (창구 직원) | OLAP (본부 분석팀) | |------|----------------|-----------------| | 목적 | 일상 트랜잭션 처리 | 복잡한 분석 쿼리 | | 데이터 | 최신, 상세 기록 | 과거 이력, 집계 데이터 | | 쿼리 특성 | 단순하고 빠름 | 복잡하고 대용량 스캔 | | 변경 빈도 | 매우 잦음 | 드묾 (주로 읽기) | | 예시 업무 | 주문 처리, 결제, 예약 | 매출 보고서, 고객 세분화 분석 | | Azure 서비스 | Azure SQL Database | Azure Synapse Analytics |
!OLTP vs OLAP
ACID 속성: 트랜잭션이 안전한 이유
OLTP 시스템에서 트랜잭션의 신뢰성을 보장하는 것이 바로 ACID 속성입니다. 은행 계좌 이체를 예시로 각 속성을 이해해 봅시다.
시나리오: 철수가 영희에게 10만 원을 이체합니다. 이 과정에는 두 단계가 있습니다. ① 철수 계좌에서 10만 원 차감, ② 영희 계좌에 10만 원 추가.
Atomicity (원자성) — 전부 아니면 전무
① 단계가 성공했는데 ② 단계 도중 서버가 다운됐다고 상상해 보세요. 철수 계좌에서 돈은 빠졌는데 영희에게 돈이 들어오지 않았습니다. 이런 상황이 발생하면 안 됩니다.
원자성은 트랜잭션의 모든 단계가 전부 성공하거나, 하나라도 실패하면 전체가 취소(롤백)되도록 보장합니다. 중간 상태는 존재하지 않습니다.
Consistency (일관성) — 규칙은 항상 지켜진다
은행에는 규칙이 있습니다. "잔액이 0원 미만이 될 수 없다"는 규칙입니다. 트랜잭션이 성공하더라도 이 규칙을 위반한다면 허용되지 않습니다.
일관성은 트랜잭션 전후로 데이터가 항상 정해진 규칙(제약 조건)을 만족하도록 보장합니다.
Isolation (격리성) — 동시에 진행되어도 서로 간섭 없음
수백만 명이 동시에 계좌 이체를 합니다. 서로의 트랜잭션이 뒤엉키면 심각한 문제가 생깁니다. A와 B가 동시에 같은 계좌에서 출금을 시도하면 어떻게 될까요?
격리성은 동시에 진행되는 트랜잭션들이 서로의 중간 결과를 볼 수 없도록 격리합니다. 각 트랜잭션은 마치 혼자 실행되는 것처럼 보입니다.
Durability (지속성) — 완료된 것은 영원히 기록된다
이체가 성공했다는 확인 메시지를 받은 직후 서버가 폭발한다면? 데이터가 사라져서는 안 됩니다.
지속성은 커밋(완료)된 트랜잭션의 결과가 시스템 장애가 발생해도 영구적으로 저장되도록 보장합니다.
| ACID 속성 | 한마디 설명 | 이체 예시 | |----------|-----------|---------| | Atomicity (원자성) | 전부 성공 또는 전부 취소 | 차감+추가가 동시에 성공하거나 둘 다 취소 | | Consistency (일관성) | 규칙은 항상 지켜짐 | 잔액이 마이너스가 되는 이체는 불가 | | Isolation (격리성) | 동시 트랜잭션 간 간섭 없음 | 동시 출금 시도 시 순서대로 처리 | | Durability (지속성) | 완료된 것은 영구 저장 | 성공 후 정전이 와도 기록 보존 |
데이터 역할: DBA, 엔지니어, 분석가
데이터를 다루는 사람들에게는 각자 다른 역할이 있습니다. 시험에서는 "이 작업은 누가 담당하는가?"를 자주 묻습니다.
데이터베이스 관리자 (DBA, Database Administrator)
DBA는 건물 관리인과 같습니다. 건물(데이터베이스)이 항상 정상적으로 운영되도록 유지보수하는 사람입니다.
주요 업무: 데이터베이스 설치, 설정, 업그레이드 백업 및 복원 계획 수립·실행 (장애 발생 시 데이터 복구) 접근 권한 관리 (누가 어떤 데이터를 볼 수 있는지) 성능 모니터링 및 튜닝 (쿼리가 느리면 원인 파악 및 최적화) 보안 패치 적용
한 마디로: 데이터베이스의 운영과 보안을 책임지는 사람
데이터 엔지니어 (Data Engineer)
데이터 엔지니어는 데이터 고속도로를 건설하는 사람입니다. 데이터가 어디서 어디로 어떻게 흘러가야 하는지 설계하고 만듭니다.
주요 업무: 데이터 파이프라인 설계·구축 (소스에서 목적지까지 데이터 이동 자동화) ETL/ELT 프로세스 개발 (데이터 추출, 변환, 적재) 데이터 레이크, 데이터 웨어하우스 구축 및 관리 데이터 품질 보증 (데이터가 정확하고 일관되게 흐르도록) Apache Spark, Azure Data Factory 같은 도구 활용
한 마디로: 데이터가 필요한 곳에 제때 정확하게 도달하도록 인프라를 만드는 사람
데이터 분석가 (Data Analyst)
데이터 분석가는 탐정입니다. 이미 정제된 데이터를 받아 그 안에서 의미 있는 패턴과 인사이트를 찾아냅니다. "왜 이번 달 매출이 떨어졌는가?", "어느 지역에서 어떤 상품이 잘 팔리는가?" 같은 비즈니스 질문에 데이터로 답합니다.
주요 업무: SQL, Python, Excel로 데이터 조회 및 분석 데이터 시각화 (Power BI, Tableau로 차트·대시보드 제작) 비즈니스 보고서 작성 트렌드와 패턴 발견
한 마디로: 데이터에서 비즈니스 인사이트를 발견하고 시각화해 전달하는 사람
세 역할 비교
| 역할 | 비유 | 주요 도구 | 책임 영역 | |------|------|----------|---------| | DBA | 건물 관리인 | SQL Server, Azure SQL | DB 운영, 보안, 백업 | | 데이터 엔지니어 | 고속도로 건설자 | Azure Data Factory, Spark | 파이프라인, ETL, 인프라 | | 데이터 분석가 | 탐정 | Power BI, SQL, Excel | 분석, 시각화, 보고서 |
시험 핵심 정리
"빠른 트랜잭션 처리, 최신 데이터" -- OLTP
"복잡한 분석 쿼리, 과거 이력 데이터" -- OLAP
"OLTP에서 사용하는 Azure 서비스" -- Azure SQL Database
"OLAP에서 사용하는 Azure 서비스" -- Azure Synapse Analytics
"전부 성공 또는 전부 취소" -- ACID의 Atomicity (원자성)
"트랜잭션 전후로 데이터 규칙 만족" -- ACID의 Consistency (일관성)
"동시 트랜잭션 간 격리" -- ACID의 Isolation (격리성)
"완료된 트랜잭션은 영구 저장" -- ACID의 Durability (지속성)
"DB 운영, 백업, 접근 권한 관리" -- DBA
"데이터 파이프라인 설계·구축, ETL" -- 데이터 엔지니어