JSONB, BSON

agnusdei·2025년 7월 27일

ICT

목록 보기
29/144

📘 기본 개념

항목JSONBBSON
정식 명칭JSON BinaryBinary JSON (Binary JavaScript Object Notation)
사용 환경PostgreSQL (특히 jsonb 타입 컬럼)MongoDB
목적JSON 데이터를 효율적으로 저장하고 인덱싱 및 검색 성능 개선MongoDB에서 데이터를 효율적으로 저장하고 조회 성능 향상

🔍 주요 차이점

항목JSONBBSON
저장 형식바이너리 형식으로 파싱된 JSON을 내부적으로 트리 구조로 저장JSON을 바이너리로 변환한 형태로 Key-Value 쌍 저장
데이터 타입 지원JSON에서 지원하는 기본 타입 (string, number, object, array, boolean, null)JSON 타입 + 추가 타입 (e.g., Date, Binary, ObjectId, Int32, Int64, Decimal128)
정렬 방식Key 순서를 무시함 (key 순서 보존 안됨)Key 순서를 보존
인덱싱GIN (Generalized Inverted Index) 등을 통해 다양한 JSON 속성에 인덱스 설정 가능MongoDB의 복합 인덱스 및 중첩 필드 인덱싱 지원
Null 처리null 값과 존재하지 않는 키를 구분함null과 없는 필드를 구분할 수 있음 (쿼리에서는 차이 주의 필요)
확장성 및 스키마스키마리스 지원, 하지만 RDBMS 특성상 명시적인 구조 권장완전한 스키마리스 구조, 필드가 문서마다 달라도 무방

🛠 사용 예시

JSONB (PostgreSQL)

CREATE TABLE items (
    id serial PRIMARY KEY,
    data jsonb
);

SELECT * FROM items WHERE data @> '{"type": "book"}';

BSON (MongoDB)

db.items.insertOne({ type: "book", price: 10 });
db.items.find({ type: "book" });

🧾 요약

항목JSONBBSON
사용처PostgreSQLMongoDB
확장성제한적 확장 (RDBMS 기반)유연한 확장 (NoSQL 기반)
성능복잡 쿼리에 강함 (인덱싱 구조 활용 시)대량 문서 처리에 최적화
스키마약간의 스키마 필요성 존재완전한 스키마리스

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글