data serialization parquet protobuf big-data json binary file-extensions

데이터 직렬화 형식 가이드: Parquet, Avro, Proto 및 기타

읽기 쉬운 JSON부터 고성능 바이너리 형식까지. .parquet, .avro, .proto, .ndjson, .cbor, .bson 및 .har 파일 확장자의 차이점을 알아보세요.

2026-04-11

데이터 직렬화 형식 가이드: Parquet, Avro, Proto 등

데이터 엔지니어링 및 소프트웨어 개발의 세계에서 데이터를 저장하고 전송하는 방식은 매우 중요합니다. JSON은 가독성 덕분에 웹 API의 왕으로 통하지만, 빅데이터 처리, 고주파 메시징 또는 특수 디버깅에는 너무 크거나 느린 경우가 많습니다.

이 가이드에서는 기본 JSON 및 CSV 이외에 데이터 직렬화에 사용되는 특수 파일 확장자를 살펴봅니다.


빠른 참조표: 데이터 직렬화 형식

확장자 전체 이름 형식 주요 사용 사례
.ndjson, .jsonl 줄 바꿈으로 구분된 JSON 텍스트 (ASCII) 로그 파일, 데이터 스트리밍, 빅데이터 가져오기
.parquet Apache Parquet 바이너리 (열 지향) 빅데이터 분석 (Hadoop, Spark, AWS S3)
.avro Apache Avro 바이너리 (행 지향) 스키마를 포함한 데이터 직렬화 (Kafka)
.proto Protocol Buffers 텍스트 (DSL) gRPC 인터페이스 및 데이터 구조 정의
.bson Binary JSON 바이너리 MongoDB 저장 및 데이터 교환
.cbor Concise Binary Object Representation 바이너리 IoT, 저대역폭 환경
.har HTTP Archive 텍스트 (JSON) 브라우저의 네트워크 요청 디버깅
.edn Extensible Data Notation 텍스트 (Lisp 방식) Clojure 생태계, 메타데이터 설정

1. 스트림 친화적 JSON (.ndjson, .jsonl)

표준 JSON은 파싱을 위해 전체 파일을 메모리로 읽어 들여야 합니다([로 시작하고 ]로 끝남). 이는 100GB 로그 파일의 경우 불가능한 일입니다.

  • NDJSON / JSONL: 각 줄이 유효하고 독립적인 JSON 객체입니다.
  • 왜 사용하나요? 전체 파일을 로드하지 않고도 파일을 한 줄씩 읽을 수 있습니다. 파일이 잘리거나 손상되어도 데이터 세트 전체가 아닌 마지막 줄만 손실됩니다.

2. 빅데이터 열 지향 저장소 (.parquet, .orc)

기존 데이터베이스는 데이터를 행 단위로 저장합니다. 분석 데이터베이스는 종종 열 지향(Columnar) 저장소를 선호합니다.

  • Parquet: 빅데이터의 산업 표준입니다. 데이터를 열 단위로 저장하기 때문에 데이터를 훨씬 더 효과적으로 압축할 수 있으며 특정 쿼리에 필요하지 않은 열은 "건너뛸" 수 있습니다.
  • ORC: Optimized Row Columnar. Parquet과 유사하지만 주로 Apache Hive 생태계에서 사용됩니다.

3. 스키마 우선 직렬화 (.avro, .proto)

키 이름("first_name")이 모든 레코드에서 반복되는 JSON과 달리, 스키마 우선 형식은 "규칙"과 "데이터"를 분리합니다.

  • Avro: 스키마는 JSON으로 저장되지만 데이터는 바이너리입니다. 속도가 빠르고 스키마 진화를 지원하기 때문에 Apache Kafka의 표준으로 사용됩니다.
  • Protobuf (.proto): Google에서 개발했습니다. .proto 파일에 데이터 구조를 정의하면 컴파일러가 선호하는 언어의 코드를 생성합니다. gRPC의 중추 역할을 합니다.

4. 바이너리 JSON 대안 (.bson, .cbor, .msgpack)

JSON의 유연성은 좋지만 더 빠른 속도나 더 작은 파일 크기가 필요하다면 바이너리 형식이 정답입니다.

  • BSON: MongoDB에서 내부적으로 사용됩니다. JSON보다 더 많은 데이터 유형(날짜 및 바이너리 데이터 등)을 지원합니다.
  • CBOR: 매우 작고 효율적으로 설계되었습니다. 대역폭의 1바이트가 중요한 IoT(사물 인터넷) 장치에서 널리 사용됩니다.
  • MessagePack: CBOR과 유사하며, "JSON 같지만 빠르고 작은" 형식입니다.

5. 특수 형식 (.har, .edn)

  • HAR (HTTP Archive): Chrome 또는 Firefox DevTools에서 네트워크 추적을 "내보내기"한 적이 있다면 그것이 바로 .har 파일입니다. 실제로는 탐색 세션의 모든 헤더, 쿠키 및 응답 본문을 포함하는 거대한 JSON 파일일 뿐입니다.
  • EDN: 주로 Clojure 진영에서 사용됩니다. 사용자 정의 유형(태그)과 더 복잡한 데이터 구조를 기본적으로 지원하기 때문에 JSON보다 강력합니다.

이 파일들을 보는 방법

  • NDJSON/JSONL: 아무 텍스트 편집기나 jq 명령줄 도구를 사용하세요.
  • Parquet: 전용 뷰어나 Python 라이브러리(pandas 또는 fastparquet 등)가 필요합니다.
  • Protobuf: 일반적으로 바이너리 데이터를 디코딩하려면 .proto 정의 파일이 필요합니다.
  • HAR: Chrome/Firefox DevTools로 다시 드래그 앤 드롭하거나 온라인 HAR 뷰어를 사용할 수 있습니다.

자주 묻는 질문 (FAQ)

Q: 왜 Parquet 파일이 CSV보다 작나요?

A: Parquet은 "딕셔너리 인코딩" 및 "런 길이 인코딩"과 같은 고급 압축 기술을 사용합니다. 데이터를 열 단위로 저장하기 때문에 열 내의 값("국가" 등)이 동일한 경우가 많아 텍스트 파일에 비해 엄청난 압축률을 얻을 수 있습니다.

Q: .proto 파일을 편집할 수 있나요?

A: 네, .proto 파일은 데이터 구조를 정의하는 사람이 읽을 수 있는 텍스트 파일입니다. 하지만 여기서 생성된 바이너리 데이터를 직접 "편집"할 수는 없습니다. 컴파일된 코드를 사용해야 합니다.

Q: .bson은 JSON과 같나요?

A: 완전히 같지는 않습니다. BSON은 JSON과 유사한 데이터를 포함하지만 표준 JSON이 지원하지 않는 Buffer, Long, Decimal128과 같은 유형도 추가된 바이너리 표현입니다.


Tool3M 관련 도구

  • JSON CSV 변환기: 구조화된 데이터를 평면 테이블로 변환합니다.
  • 바이너리 직렬화 가이드: Protobuf 및 MessagePack에 대해 자세히 알아보세요.