JSONB, BSON

agnusdei·2025년 7월 27일
0

ICT

목록 보기
29/96

📘 기본 개념

항목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 🚩

0개의 댓글