데이터 표현 형식
XML, JSON, YAML, Properties는 모두 데이터를 저장하고 전송하기 위한 형식이다.
XML, JSON, YAML, Properties와 같은 형식은 일반적으로 데이터 표현 형식(Data Representation Formats) 또는
구성 파일 형식(Configuration File Formats)이라고 불린다.
각각의 특징과 사용 사례를 쉽게 정리해보자.
1. XML (Extensible Markup Language)
특징
- 태그 기반의 데이터 형식.
- 계층적 구조를 가지며, 데이터를 트리 형태로 표현.
- 사람과 기계 모두 읽을 수 있지만, 태그가 많아 가독성이 낮음.
- 유효성 검사를 위해 DTD나 XSD와 함께 사용 가능.
- 데이터 교환 표준으로 초기 웹 서비스와 설정 파일에서 많이 사용됨.
예제
<person>
<name>John</name>
<age>30</age>
<email>john@example.com</email>
</person>
장점
- 구조가 명확하고 유연함.
- 복잡한 데이터 표현에 적합.
- 데이터 스키마를 정의하여 유효성을 검증 가능.
단점
- 문법이 복잡하고 길이가 길어 비효율적.
- 가독성이 떨어짐.
사용 사례
- 초기 SOAP 웹 서비스
- 설정 파일(예: Spring의 applicationContext.xml)
2. JSON (JavaScript Object Notation)
특징
- 키-값 쌍으로 데이터를 표현하는 경량 데이터 교환 형식.
- 객체 형태로 표현하며, 배열도 지원.
- 간결하고 가독성이 높아 XML을 대체하는 주요 형식으로 사용됨.
- 언어 독립적이며, 대부분의 프로그래밍 언어에서 쉽게 파싱 가능.
예제
{
"name": "John",
"age": 30,
"email": "john@example.com"
}
장점
- 간결하고 가독성이 좋음.
- 대부분의 언어와 쉽게 통합 가능.
- API 데이터 교환에서 널리 사용.
단점
- 스키마를 명시적으로 정의할 수 없음.
- XML에 비해 메타데이터 표현이 제한적.
사용 사례
- REST API 데이터 교환.
- 프론트엔드와 백엔드 간 데이터 전송.
3. YAML (YAML Ain’t Markup Language)
특징
- 사람이 읽기 쉬운 데이터를 표현하기 위한 데이터 직렬화 형식.
- 들여쓰기 기반 계층 구조 표현.
- JSON과 호환되며, 주로 설정 파일에서 사용됨.
- 공백과 들여쓰기에 민감함.
예제
person:
name: John
age: 30
email: john@example.com
장점
- 간결하고 직관적이며 가독성이 뛰어남.
- JSON보다 사람이 읽기 쉬운 구조.
- 중첩된 데이터를 표현하기 쉬움.
단점
- 공백과 들여쓰기에 민감하여 에러 발생 가능.
- JSON처럼 널리 사용되지 않음.
사용 사례
- 설정 파일(예: Spring Boot의 application.yml, Kubernetes).
- DevOps 도구의 설정(예: Ansible, Docker Compose).
4. Properties (Java Properties 파일)
특징
- Java 기반 애플리케이션에서 주로 사용되는 키-값 형식의 설정 파일.
- 간단하고 경량.
- 구조적 데이터 표현이 제한적.
예제
name=John
age=30
email=john@example.com
장점
- 간단하고 가볍다.
- Java에서 바로 파싱 가능 (java.util.Properties).
단점
- 계층적 구조를 표현할 수 없음.
- 데이터가 복잡해질수록 비효율적.
사용 사례
- Java 애플리케이션의 설정 파일(예: application.properties).
- 간단한 설정 저장.
비교하기
특성 | XML | JSON | YAML | Properties |
가독성 | 낮음 | 좋음 | 매우 좋음 | 보통 |
표현 가능성 | 복잡한 데이터도 표현 가능 | 중첩 데이터 표현 가능 | 중첩 데이터 표현 가능 | 단순 키-값만 표현 가능 |
크기 | 크다 | 작다 | 작다 | 매우 작다 |
계층 구조 | 지원 | 지원 | 지원 | 미지원 |
공백 민감도 | 없음 | 없음 | 있음 | 없음 |
주요 사용처 | 초기 웹 서비스, 설정 파일 | REST API, 데이터 교환 | 설정 파일, DevOps | Java 설정 파일 |
정리
- XML: 복잡한 데이터 표현과 스키마 기반 유효성 검사가 필요한 경우.
- JSON: 가독성과 간결함이 중요한 API 데이터 교환.
- YAML: 사람이 읽기 쉬운 설정 파일.
- Properties: Java 애플리케이션의 간단한 설정 파일.
'복습' 카테고리의 다른 글
[Java 복습] 컬렉션 프레임워크 전체 정리 (0) | 2024.05.20 |
---|---|
[Java 복습] 컬렉션 유틸 (0) | 2024.05.20 |
[Java 복습] 정렬 Comparable, Comparator (0) | 2024.05.20 |
[Java 복습] 직접 구현해보는 Iterator (0) | 2024.05.20 |
[Java 복습] Deque와 Stack, Queue 자료 구조 (0) | 2024.05.19 |