Azure DP-900은 Azure 데이터 서비스의 기초 지식을 검증하는 시험입니다. 처음 이 시험을 접하면 "데이터 유형이 뭐지? 파일 형식은 왜 이렇게 많아?" 하는 생각이 드실 수 있습니다. 걱정하지 마세요. 일상 속 비유를 통해 하나씩 쉽게 이해해 보겠습니다.
데이터 유형: 정형, 반정형, 비정형
데이터에는 세 가지 유형이 있습니다. 우리 주변의 익숙한 것들로 생각해 보면 쉽습니다.
정형 데이터 (Structured Data)
정형 데이터는 엑셀 스프레드시트처럼 행(가로줄)과 열(세로줄)로 딱 정해진 형태에 맞춰 저장된 데이터입니다. 모든 행은 같은 열(항목)을 가지고 있어서, 마치 표에 칸칸이 채워진 정보처럼 깔끔합니다.
예를 들어, 온라인 쇼핑몰의 회원 테이블을 떠올려 보세요. 이름, 이메일, 전화번호, 가입일이라는 칸이 정해져 있고, 모든 회원은 이 칸에 맞춰 정보가 들어갑니다. 이것이 정형 데이터입니다. 관계형 데이터베이스(RDBMS)가 이 유형을 저장하는 데 최적화되어 있습니다.
반정형 데이터 (Semi-structured Data)
반정형 데이터는 엑셀처럼 딱 떨어지는 표는 아니지만, 나름의 구조(태그, 키)를 가지고 있는 데이터입니다. 쇼핑 영수증을 상상해 보세요. 영수증마다 항목이 다를 수 있습니다. 어떤 영수증에는 할인 정보가 있고, 어떤 것에는 없죠. 하지만 "품목", "가격", "날짜" 같은 키워드로 정보를 찾아볼 수 있습니다.
대표적인 예시가 JSON과 XML 파일입니다. JSON은 웹 API(앱과 앱이 정보를 주고받는 방식)에서 가장 많이 사용되는 형식입니다. 같은 유형의 데이터라도 항목이 조금씩 달라도 되는 유연함이 특징입니다.
비정형 데이터 (Unstructured Data)
비정형 데이터는 아무런 정해진 구조가 없는 데이터입니다. 사진, 동영상, 음성 파일, 이메일 본문, PDF 문서 등이 여기에 해당합니다. 컴퓨터가 사진 속에 "이름: 홍길동, 나이: 30"처럼 정보를 자동으로 읽어낼 수 없습니다. 비정형 데이터는 전 세계 데이터의 80% 이상을 차지합니다.
| 유형 | 특징 | 예시 | |------|------|------| | 정형 데이터 | 고정된 행/열 구조 | 고객 테이블, 주문 내역 | | 반정형 데이터 | 유연한 키/태그 구조 | JSON, XML, YAML | | 비정형 데이터 | 구조 없음 | 이미지, 동영상, 음성, PDF |
파일 형식: CSV, JSON, Parquet 그 외
데이터를 파일로 저장할 때는 목적에 따라 다양한 형식을 사용합니다. 각각 어떤 상황에서 쓰는지 알아봅시다.
CSV (Comma-Separated Values)
가장 단순한 형식입니다. 이름처럼 쉼표(,)로 값을 구분합니다. 메모장으로 열 수 있을 만큼 사람이 읽기 쉬운 형태입니다. 엑셀에서 "다른 이름으로 저장 → CSV"를 하면 바로 이 형식이 됩니다.
활용: 소규모 데이터 교환, 엑셀과의 호환, 간단한 데이터 가져오기/내보내기
JSON (JavaScript Object Notation)
키-값 쌍으로 데이터를 표현합니다. 중괄호 안에 정보를 담고, 중첩(안에 또 {}가 들어가는) 구조도 가능합니다. 웹 서비스 API가 데이터를 주고받을 때 사용하는 표준 형식입니다.
활용: 웹 API, 앱 설정 파일, 반정형 데이터 저장
Parquet
열(column) 기반으로 데이터를 저장하는 형식입니다. 일반 파일이 행 단위로 데이터를 저장한다면, Parquet는 열 단위로 저장합니다. "매출 금액" 열만 읽고 싶다면, 다른 열 데이터는 건드리지 않아도 됩니다. 이 덕분에 대용량 데이터 분석 쿼리에서 압도적으로 빠릅니다. 압축 효율도 뛰어납니다.
활용: Azure Data Lake, Synapse Analytics, Spark를 이용한 대규모 분석
ORC (Optimized Row Columnar)
Parquet와 유사하게 열 기반 형식입니다. Hadoop과 Hive 생태계에서 최적화되어 있습니다.
활용: Hadoop 기반 분석, Hive 쿼리
Avro
행(row) 기반으로 데이터를 저장하며, 스키마 정보를 파일 안에 함께 포함합니다. 스키마가 바뀌어도(새 필드 추가 등) 이전 데이터와 호환됩니다. 이 특성 덕분에 실시간으로 데이터가 계속 흘러오는 스트리밍 환경에 적합합니다.
활용: Kafka, 실시간 스트리밍 파이프라인
XML (eXtensible Markup Language)
태그()로 데이터를 감싸는 형식입니다. 사람이 읽기 쉽고 자기 설명적이지만, 파일 크기가 커지는 단점이 있습니다.
활용: 레거시(구형) 시스템과의 연동, 설정 파일
| 형식 | 저장 방식 | 핵심 장점 | 주요 사용처 | |------|----------|----------|-----------| | CSV | 행 기반 | 단순, 호환성 좋음 | 데이터 교환 | | JSON | 키-값 | 유연한 구조 | API, 웹앱 | | Parquet | 열 기반 | 분석 쿼리 고속 | 대규모 분석 | | ORC | 열 기반 | Hive 최적화 | Hadoop 생태계 | | Avro | 행 기반 | 스키마 진화 지원 | 스트리밍 | | XML | 태그 기반 | 자기 설명적 | 레거시 시스템 |
데이터베이스 유형: 관계형 vs 비관계형
데이터를 저장하는 창고인 데이터베이스에도 두 가지 큰 유형이 있습니다.
관계형 데이터베이스 (Relational Database)
정형화된 서류 캐비닛을 상상해 보세요. 서랍마다 이름표가 붙어 있고, 서랍 안에는 동일한 양식의 서류들이 가지런히 정렬되어 있습니다. 서로 다른 서랍(테이블)끼리도 연결 고리(키)를 통해 참조할 수 있습니다.
관계형 DB는 SQL(Structured Query Language)이라는 언어로 데이터를 조회합니다. 테이블 간에 기본 키(Primary Key)와 외래 키(Foreign Key)로 관계를 정의합니다. 데이터 무결성(정확성)이 중요한 금융, 의료, ERP 시스템에서 많이 쓰입니다.
Azure 대표 서비스: Azure SQL Database, Azure Database for MySQL/PostgreSQL
비관계형 데이터베이스 (Non-relational / NoSQL)
이번엔 커다란 자루(Bag)를 상상해 보세요. 자루 안에는 모양이 제각각인 물건들이 뒤섞여 있습니다. 정해진 서랍 형태는 없지만, 필요한 것을 빠르게 꺼낼 수 있습니다. 유연하고 대용량 처리에 강합니다.
NoSQL에는 4가지 유형이 있습니다.
키-값 저장소 (Key-Value Store): 사전처럼 키와 값의 쌍으로 데이터를 저장합니다. 매우 빠른 조회가 특징입니다. 캐시(임시 저장), 세션 관리에 주로 사용됩니다. 예시: Redis, Azure Cache for Redis
문서 저장소 (Document Store): JSON 같은 문서 형태로 데이터를 저장합니다. 각 문서가 서로 다른 구조를 가져도 됩니다. 소셜 미디어 게시글, 상품 카탈로그처럼 항목마다 속성이 다른 데이터에 적합합니다. 예시: MongoDB, Azure Cosmos DB (Core API)
열 패밀리 저장소 (Column-family Store): 관련된 열들을 묶어 함께 저장합니다. 쓰기 성능이 매우 뛰어나 로그 데이터, IoT 센서 데이터처럼 대량으로 빠르게 쌓이는 데이터에 적합합니다. 예시: Apache Cassandra, Azure Cosmos DB (Cassandra API)
그래프 저장소 (Graph Store): 데이터 간의 관계(엣지)를 중심으로 저장합니다. "A가 B를 팔로우한다", "A와 B는 친구다"처럼 관계가 복잡하게 얽혀있는 소셜 네트워크 분석에 탁월합니다. 예시: Neo4j, Azure Cosmos DB (Gremlin API)
| 유형 | 비유 | 특징 | 예시 | |------|------|------|------| | 키-값 | 번호표-물품 보관함 | 초고속 단순 조회 | Redis | | 문서 | 각기 다른 양식의 서류 | 유연한 JSON 구조 | Cosmos DB | | 열 패밀리 | 관련 열 묶음 | 대량 쓰기 최적 | Cassandra | | 그래프 | 관계도/지도 | 복잡한 관계 분석 | Neo4j |
데이터 레이크 vs 데이터 웨어하우스
데이터를 대규모로 저장하고 분석할 때 자주 등장하는 두 가지 개념입니다.
데이터 레이크 (Data Lake)
이름 그대로 '호수'입니다. 강, 빗물, 지하수 등 다양한 곳에서 흘러온 물이 한 곳에 모이듯, 여러 형태의 원시(Raw) 데이터가 그대로 쌓입니다. 정형, 반정형, 비정형 데이터를 모두 받아들이고, 나중에 필요할 때 원하는 형태로 꺼내 씁니다. 이를 "읽기 시 스키마 적용(Schema-on-Read)"이라고 합니다.
Azure 서비스: Azure Data Lake Storage Gen2 (ADLS Gen2)
데이터 웨어하우스 (Data Warehouse)
이번엔 잘 정돈된 '창고'입니다. 외부에서 들어온 원자재(원시 데이터)를 가공·정제한 뒤, 창고에서 지정된 위치에 깔끔하게 정렬해 보관합니다. 데이터를 저장할 때 이미 스키마(구조)가 정의되어 있어야 합니다. 이를 "쓰기 시 스키마 적용(Schema-on-Write)"이라고 합니다. BI 보고서나 정형화된 분석에 최적화되어 있습니다.
Azure 서비스: Azure Synapse Analytics (Dedicated SQL Pool)
| 항목 | 데이터 레이크 | 데이터 웨어하우스 | |------|-------------|----------------| | 저장 데이터 | 원시 데이터 (모든 형식) | 정제된 정형 데이터 | | 스키마 적용 시점 | 읽을 때 (Schema-on-Read) | 쓸 때 (Schema-on-Write) | | 유연성 | 매우 높음 | 낮음 (엄격한 구조) | | 주요 용도 | 탐색적 분석, ML 학습 | BI 보고서, 정형 분석 | | Azure 서비스 | ADLS Gen2 | Synapse Dedicated SQL Pool |