BSON 파서

BSON(Binary JSON)은 MongoDB가 문서를 저장하는 데 사용하는 바이너리 직렬화 형식입니다. ObjectId, Date, Binary, Decimal128 등 추가 타입으로 JSON을 확장합니다. 이 도구는 BSON 파일을 파싱하고 타입 정보와 함께 내용을 JSON으로 표시합니다.

사양

주요 사용 사례

  • MongoDB 덤프 파일(.bson) 검사
  • 메시지 큐 또는 캐시의 BSON 데이터 디버깅
  • MongoDB 와이어 프로토콜 캡처 분석
  • 외부 도구용 BSON을 JSON으로 변환
  • 문서 구조 및 타입 감사

기능

  • 드래그 앤 드롭 또는 파일 선택으로 BSON 바이너리 파일 파싱
  • 16진수 인코딩된 BSON 데이터 디코딩
  • ObjectId, Date, Binary, Regex, Decimal128 등 모든 BSON 타입 표시
  • 확장 JSON 표기법으로 JSON 변환
  • 문서 메타데이터 표시 (크기, 필드 수, 최대 깊이)
  • 문서에서 발견된 모든 ObjectId 및 날짜 목록
  • 바이너리 필드 크기 및 확장 타입 표시
  • 원시 바이너리 검사를 위한 Hex 뷰어

예제

단순 BSON 문서

사용해 보기 →

단일 필드를 가진 최소 BSON 문서: {"hello":"world"}

16 00 00 00 02 68 65 6c 6c 6f 00 06 00 00 00 77 6f 72 6c 64 00 00

16진수 인코딩된 BSON

사용해 보기 →

문자열, 숫자, 불리언을 포함하는 BSON 문서: {"name":"Alice","age":30,"active":true}

27 00 00 00 02 6e 61 6d 65 00 06 00 00 00 41 6c 69 63 65 00 10 61 67 65 00 1e 00 00 00 08 61 63 74 69 76 65 00 01 00

  • 16진수로 인코딩된 BSON 데이터를 직접 붙여넣어 파싱할 수 있습니다.
  • BSON 파일은 다음 명령으로 생성할 수 있습니다: mongoexport --collection=users --out=users.bson
  • ObjectId에는 타임스탬프가 포함되어 있습니다. 다음으로 추출: new ObjectId().getTimestamp()
  • BSON은 JSON보다 더 많은 타입을 지원합니다: 날짜, 바이너리, 정규식, 소수점.
  • MongoDB에서 최대 BSON 문서 크기는 16MB입니다.

이해하기 BSON 파서

BSON(Binary JSON)은 MongoDB가 내부적으로 문서를 저장하고 전송하는 데 사용하는 바이너리 직렬화 형식입니다. JSON이 모든 데이터를 문자열, 숫자, 불리언, 배열, 객체로 표현하는 반면, BSON은 데이터베이스에 필요한 추가 타입으로 확장합니다: ObjectId(12바이트 고유 식별자), Date(밀리초 정밀도 타임스탬프), Binary(임의 바이트 배열), Decimal128(정확한 십진수 연산), 정규 표현식.

BSON 문서는 길이 접두사가 붙어 있어, 각 문서와 내장 문서가 4바이트 크기 필드로 시작합니다. 이를 통해 파서가 완전히 디코딩하지 않고도 문서를 건너뛸 수 있어 효율적인 스캔과 인덱싱이 가능합니다. 각 요소는 타입 바이트로 태그되고, C-문자열로 된 필드 이름이 따라오며, 타입별 인코딩의 값이 뒤따릅니다.

MongoDB는 내부적으로 문서를 BSON으로 저장하고, 와이어 프로토콜을 통해 전송하며, mongodump로 .bson 파일로 내보냅니다. BSON을 이해하는 것은 MongoDB 애플리케이션 디버깅, 덤프 파일 분석, 와이어 프로토콜 작업에 필수적입니다. 확장 JSON 형식은 BSON 타입 정보를 보존하면서 사람이 읽을 수 있는 표현을 제공합니다.

BSON이 항상 JSON보다 작은 것은 아닙니다. 짧은 문자열과 작은 숫자는 타입 바이트와 길이 접두사 오버헤드로 인해 BSON에서 실제로 더 클 수 있습니다. BSON의 장점은 크기가 아니라 속도입니다. 길이 접두사 형식은 빠른 순회를 가능하게 하고, 확장 타입은 인코딩 규칙 없이 날짜, 바이너리 데이터, 고정밀 소수점에 대한 네이티브 지원을 제공합니다.

ObjectId는 MongoDB 문서의 기본 _id로 사용되는 12바이트 BSON 타입입니다. 4바이트 타임스탬프(에포크 이후 초), 5바이트 랜덤 값(머신/프로세스별 고유), 3바이트 증가 카운터를 포함합니다. 이 설계는 어떤 조정 없이도 분산 서버 간 고유성을 보장합니다. 내장된 타임스탬프는 ObjectId.getTimestamp()로 문서의 생성 시간을 추출할 수 있음을 의미합니다.

mongodump로 생성된 MongoDB 덤프 파일(.bson)은 원시 BSON 문서가 연결된 것입니다. 이 도구에 16진수로 인코딩된 BSON 데이터를 붙여넣어 개별 문서를 파싱할 수 있습니다. 또는 bsondump 유틸리티(MongoDB Database Tools에 포함)를 사용하여 명령줄에서 .bson 파일을 JSON으로 변환하여 대량 검사할 수 있습니다.

← 전체 도구로 돌아가기