Format Atlas

비교

Avro와 JSON

Apache Avro는 스키마 기반 직렬화 시스템으로, 간결한 바이너리 인코딩과 스키마를 포함하는 객체 컨테이너 파일을 제공합니다. JSON은 사람이 읽을 수 있는 텍스트 교환 형식이며 Avro도 JSON 인코딩을 정의합니다.

어떤 형식을 선택해야 할까요?

스키마로 관리되는 간결한 레코드와 writer/reader 스키마 해석이 필요하면 Avro를 고려하세요. 텍스트로 확인하기 쉽고 폭넓은 애플리케이션 상호운용성이 중요하면 JSON을 선택하세요.

적합한 경우 Avro

정의된 스키마로 레코드 교환

  • 스키마 버전을 관리하는 이벤트와 데이터 파이프라인

적합한 경우 JSON

웹 API, 설정 파일 및 데이터 교환

  • 구조화된 데이터 전달

기본 정보

항목AvroJSON
확장자.avro.json
MIME 유형application/avroapplication/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 인코딩과 컨테이너 또는 메시지 프레이밍을 확인하세요.

자세히 보기

참고 자료 및 사양