.YAML 파일이란?
YAML 파일은 유니코드 기반 데이터 직렬화 언어인 YAML(YAML Ain’t Markup Language) 언어로 구성됩니다. 구성 파일, 인터넷 메시징, 객체 지속성 등에 사용됩니다. YAML은 파일에 .yaml 확장자를 사용합니다. 구문은 특정 프로그래밍 언어와 무관합니다. 기본적으로 YAML은 인간 상호 작용을 위해 설계되었으며 최신 프로그래밍 언어와 잘 작동합니다. 임의의 기본 데이터 구조 직렬화 지원으로 YAML 파일의 가독성이 향상되었지만 구문 분석 및 파일 생성 프로세스가 약간 복잡해졌습니다.
간략한 역사
YAML은 2001년에 처음 제안되었으며 Clark Evans, Ingy dot Net 및 Oren Ben-Kiki에 의해 개발되었습니다. YAML은 처음에 마크업 언어로서의 목적을 나타내기 위해 “또 다른 마크업 언어"를 의미한다고 했습니다. 나중에 데이터 지향적인 목적을 나타내기 위해 “YAML Aint Markup Language"로 용도가 변경되었습니다.
YAML 파일 형식
YAML 파일은 다음 데이터 유형으로 구성됩니다.
- 스칼라: 스칼라는 문자열, 정수, 부울 등과 같은 값입니다.
- 시퀀스: 시퀀스는 각 항목이 하이픈(-)으로 시작하는 목록입니다. 목록을 중첩할 수도 있습니다.
- 매핑: 매핑은 값과 함께 키를 나열하는 기능을 제공합니다.
구문
- 공백: 공백 들여쓰기는 중첩 및 전체 구조를 나타내는 데 사용됩니다.
이름: 존 스미스
연락하다:
집: 1012355532
사무실: 5002586256
주소:
거리: |
123 토네이도 골목
스위트 16
도시: 이스트 센터빌
상태: KS
- 댓글: 댓글은 “#” 기호로 시작하여 작성됩니다.
# YAML 주석입니다.
- 목록: 하이픈(-)은 각 구성원이 별도의 줄에 있는 목록 구성원을 나타내는 데 사용됩니다. 목록 멤버는 쉼표(,)로 구분된 멤버와 함께 대괄호([…])로 묶일 수도 있습니다.
- A
- B
- C
[A,B,C]
- 연관 배열: 연결 배열은 중괄호({…})로 둘러싸여 있습니다. 키와 값은 콜론(:)으로 구분하고 각 쌍은 쉼표(,)로 구분합니다.
{name: John Smith, age: 20}
- 문자열: 문자열은 큰따옴표(”) 또는 작은따옴표(’)를 사용하거나 사용하지 않고 작성할 수 있습니다.
샘플 문자열
"샘플 문자열"
'샘플 문자열'
- 스칼라 블록 콘텐츠: 스칼라 콘텐츠는 다음을 사용하여 블록 표기법으로 작성할 수 있습니다.
- |: All live breaks are significant.
- >: Each line break is folded to space. It removes the leading whitespace for each line.
데이터: |
YAML
(YAML은 마크업 언어가 아닙니다)
데이터 직렬화 언어입니다
데이터: ?
YAML(YAML은 마크업 언어가 아님)
데이터 직렬화 언어입니다
- 여러 문서: 여러 문서는 단일 스트림에서 세 개의 하이픈(—)으로 구분됩니다. 하이픈은 문서의 시작을 나타냅니다. 하이픈은 문서 내용에서 지시문을 구분하는 데에도 사용됩니다. 문서의 끝은 세 개의 점(…)으로 표시됩니다.
---
문서 1
---
문서 2
...
- 유형: 값의 유형을 지정하기 위해 이중 느낌표(!!)를 사용합니다.
a: !!플로트 123
b: !!str 123
- 태그: 메모에 태그를 지정하려면 앰퍼샌드(&)를 사용하고 해당 노드를 참조하려면 별표(*)를 사용합니다.
이름: 존 스미스
청구처: &id01
거리: |
123 토네이도 골목
스위트 16
도시: 이스트 센터빌
상태: KS
배송처: *id01
- 지시문: YAML 문서는 스트림의 지시문 앞에 올 수 있습니다. 지시문은 퍼센트 기호(%)로 시작하고 그 뒤에 이름과 공백으로 구분된 매개변수가 옵니다.
%YAML 1.2
---
문서 내용
YAML 파일 예
여기에서 docker yaml 파일 예시를 볼 수 있습니다.
topology:
database_node_name: docker_controller
docker_controller_node_name: docker_controller
self_service_portal_node_name: docker_controller
kvm_compute_node_names: kvm_compute1
docker_compute_node_names: docker_compute1
YAML 대 JSON
기본적으로 JSON과 YAML은 모두 사람이 읽을 수 있는 데이터 교환 형식을 제공하도록 개발되었습니다. YAML은 JSON 형식의 상위 집합으로 구현됩니다. YAML 파서를 사용하여 JSON을 파싱할 수 있음을 의미합니다. 비록 이 이론의 실제적인 구현이 조금 까다롭긴 하지만. 따라서 YAML과 JSON 간의 몇 가지 기본적인 차이점은 다음과 같습니다.
YAML | JSON |
---|---|
직렬화된 데이터를 파싱하는 복잡하고 시간 소모적인 프로세스 | 단순한 디자인으로 JSON 직렬화된 데이터를 빠르고 쉽게 파싱 |
커뮤니티 지원 감소 | 더 큰 커뮤니티 지원 및 인기 |
댓글 지원 | 댓글을 지원하지 않습니다 |
다른 데이터 객체의 참조를 사용하는 기능 | 개체 참조로 복잡한 구조를 직렬화할 수 없음 |
계층 구조는 이중 공백 문자를 사용하여 표시됩니다. 탭 문자는 허용되지 않습니다 | 객체와 배열은 중괄호와 대괄호로 표시됩니다. |
문자열 따옴표는 선택 사항이지만 작은 따옴표와 큰 따옴표를 지원합니다. | 문자열은 큰 따옴표로 묶어야 합니다. |
루트 노드는 유효한 데이터 유형 중 하나일 수 있습니다. | 루트 노드는 배열 또는 개체여야 합니다. |