비교
Avro와 JSON
Apache Avro는 스키마 기반 직렬화 시스템으로, 간결한 바이너리 인코딩과 스키마를 포함하는 객체 컨테이너 파일을 제공합니다. JSON은 사람이 읽을 수 있는 텍스트 교환 형식이며 Avro도 JSON 인코딩을 정의합니다.
어떤 형식을 선택해야 할까요?
스키마로 관리되는 간결한 레코드와 writer/reader 스키마 해석이 필요하면 Avro를 고려하세요. 텍스트로 확인하기 쉽고 폭넓은 애플리케이션 상호운용성이 중요하면 JSON을 선택하세요.
적합한 경우 Avro
정의된 스키마로 레코드 교환
- 스키마 버전을 관리하는 이벤트와 데이터 파이프라인
적합한 경우 JSON
웹 API, 설정 파일 및 데이터 교환
- 구조화된 데이터 전달
기본 정보
| 항목 | Avro | JSON |
|---|---|---|
| 확장자 | .avro | .json |
| MIME 유형 | application/avro | application/json |
| 주요 용도 | 정의된 스키마로 레코드 교환 | 웹 API, 설정 파일 및 데이터 교환 |
| 여는 방법 | Avro 지원 도구로 스키마, 필드, 형식 및 레코드를 확인하세요. | 텍스트 편집기, IDE 또는 JSON 지원 뷰어로 엽니다. |
| 내보내기 또는 변환 | JSON이나 Parquet으로 변환할 때 필드명, 형식, null, 논리 유형, 레코드 수 및 스키마 호환성을 확인하세요. | 애플리케이션이나 변환 도구로 CSV 등의 형식으로 변환할 수 있습니다. |
용도별 선택
스키마 버전을 관리하는 이벤트와 데이터 파이프라인
정의된 스키마로 레코드 교환
Avro구조화된 데이터 전달
웹 API, 설정 파일 및 데이터 교환
JSON핵심 사항 1
Avro 바이너리 인코딩은 스키마를 따르며 객체 컨테이너 파일은 데이터 블록과 스키마 메타데이터를 저장합니다. JSON은 RFC 8259의 텍스트 형식이고 Avro에는 별도의 JSON 인코딩도 있습니다.
차이 자세히 보기핵심 사항 2
Avro를 읽으려면 writer 스키마가 필요하며 reader 스키마와 해석할 수 있습니다. JSON 문법은 데이터 스키마를 요구하지 않지만 애플리케이션에서 별도로 정할 수 있습니다.
차이 자세히 보기차이 자세히 보기
생산자와 소비자가 관리되는 스키마를 공유하고 간결한 레코드가 유용하면 Avro를 사용하세요. 사람이 확인할 수 있는 텍스트 인터페이스와 폭넓은 도구 지원에는 JSON을 사용하세요. 정확한 인코딩을 지정하고 변환 시 타입과 스키마 동작을 검증하세요.
- Avro는 스키마에 따라 값을 인코딩하며 컨테이너 파일에는 데이터 블록과 스키마 메타데이터가 들어갑니다. JSON은 텍스트 문법입니다. Avro도 JSON 인코딩을 정의하므로 단순한 바이너리 대 텍스트 구분은 정확하지 않습니다.
- Avro 스키마 해석은 호환성 규칙에 따라 writer와 reader 스키마를 연결할 수 있습니다. JSON 문서는 내장 스키마 없이도 소비될 수 있어 검증은 보통 애플리케이션 계약에 달립니다.
- JSON 숫자, null, 배열, 객체는 Avro union, bytes, timestamp 등과 일대일 대응하지 않을 수 있습니다. 기본값, 누락값, 숫자 정밀도, 문자 인코딩, 스키마 호환성을 확인하세요.
자주 묻는 질문
Avro는 항상 바이너리이고 JSON은 항상 텍스트인가요?
아닙니다. Avro는 주로 바이너리 인코딩을 사용하지만 JSON 인코딩도 정의합니다. 실제 Avro 인코딩과 컨테이너 또는 메시지 프레이밍을 확인하세요.