[Computer Science] 데이터 포맷의 특징을 비교해보았습니다
Data CS
CSV
- 간단한 데이터 교환이나 스프레드시트 형식의 데이터 저장 목적
- 행 기반 저장 포맷
- 장점
- 간단함: 형식이 매우 단순해 사람이 쉽게 읽고 작성 가능
- 호환성: 대부분 스프레드시트 프로그램과 데이터베이스 시스템에서 쉽게 열고 저장 가능
- 텍스트 형식: 플랫폼에 독립적이며 다양한 프로그래밍 언어에서 쉽게 처리 가능
- 단점
- 데이터 타입 정보 없음: 모든 값이 문자열로 저장되므로, 숫자나 날짜 등 다른 데이터 타입 정보를 포함하지 않음 -구조적 제한: 계층적이거나 복잡한 데이터 구조를 표현하기 어려움
- 데이터 무결성 문제: 구분자가 데이터 값에 포함될 경우 무결성이 깨질 수 있음
Parquet
- 하둡 생태계에서 많이 사용되는 포맷
- 컬럼 기반 저장 포맷으로, 읽기가 빠르고 압축률이 좋음
- 바이너리로 저장됨
컬럼 기반 저장 포맷
특징
- 컬럼 기반 저장
- 스키마 포함: 데이터 파일에 스키마 정보를 포함해 타입과 구조를 명확히 함
- 고압축률: 동일한 컬럼 내 데이터 중복성을 활용해 높은 압축률 달성
- 컬럼 단위 접근: 쿼리 시 필요한 컬럼만 읽어들임으로써 디스크 I/O를 최소화
- 높은 쿼리 성능
- 필요한 특정 컬럼만 읽어들여 속도가 빠름
- 디스크 I/O 효율성
- 병렬 처리 최적화
- 빠른 집계 연산 (SUM, AVG 등)
- 스키마와 메타데이터 포함으로 데이터 무결성 유지 및 빠른 스캔 및 필터링
- 쓰기 성능 저하
- 행 기반 포맷에 비해 실시간 쓰기 성능이 떨어짐
- 데이터 삽입 및 갱신 작업이 비효율적
JSON
- 반정형 (Semi-Structured) 데이터 포맷
- 데이터를 구조화된 객체 또는 배열 형태로 저장
- 트리 구조를 갖는 계층적 데이터 모델을 따름
- 장점
- 가독성: 사람이 쉽게 읽고 이해할 수 있음
- 유연성: 다양한 데이터 구조를 지원하며, 계층적 데이터를 표현 가능
- 호환성: 대부분의 프로그래밍 언어와 호환되며, 웹 애플리케이션에서 널리 사용됨
- 단점
- 데이터 크기: 텍스트 기반 포맷으로, 같은 데이터를 이진 포맷으로 저장할 때보다 크기가 클 수 있음
- 파싱 성능: JSON 데이터를 파싱하는 과정이 이진 포맷에 비해 느릴 수 있음
- 타입 유효성 검사 없음: JSON 자체는 데이터 타입을 명확하게 검증하지 않으므로, 데이터 무결성을 유지하기 어려울 수 있음
특징 | CSV | Parquet | JSON |
---|---|---|---|
저장 형식 | 텍스트 | 바이너리 | 텍스트 |
데이터 타입 정보 | 없음 | 있음 | 부분적 |
압축 효율 | 낮음 | 높음 | 중간 |
읽기 성능 | 빠름 | 매우 빠름 | 중간 |
쓰기 성능 | 빠름 | 느림 | 중간 |
구조적 데이터 | 지원 부족 | 컬럼 기반, 복잡한 데이터 표현 가능 | 계층적 데이터 표현 가능 |
스키마 유효성 검사 | 없음 | 있음 | 없음 |
데이터 일관성 | 낮음 | 높음 | 중간 |
전송 효율성 | 낮음 (큰 파일 크기) | 높음 (작은 파일 크기) | 중간 |
사용 사례 | 간단한 데이터 교환 및 공유 | 대규모 데이터 분석 및 처리 | 웹 애플리케이션 데이터 전송 |