Hacker News 의견
  • JSONB에 대한 혼란이 많음

    • JSONB는 JSON 데이터 타입과 매우 유사하게 애플리케이션에 사용됨.
    • 애플리케이션은 여전히 JSON 문자열을 읽고 쓰지만, 실제 JSONB 내용은 보지 못함.
    • 동일한 SQL 함수들이 jsonb_ 접두사를 가지고 사용 가능함.
    • JSON 데이터 타입은 디스크에 JSON으로 저장되지만, JSONB는 특별한 바이너리 형식으로 저장됨.
    • JSON 데이터 타입은 작업을 수행하기 위해 전체 JSON을 파싱해야 하지만, JSONB는 파싱 단계를 건너뛰고 디스크 형식에 직접 작업을 수행할 수 있음.
    • 단순히 SQLite에서 전체 JSON 블롭을 읽고 쓰는 경우 JSON 데이터 타입이 적합하지만, SQL을 사용하여 데이터를 쿼리하거나 조작하는 경우 JSONB가 더 적합함.
  • JSONB는 Postgres에서 제공하는 포맷으로, 일반 JSON에 비해 읽기 성능이 향상되어 권장됨.

  • 문서 저장소의 목적을 이해하는 데 몇 년이 걸렸으며, POC(Proof of Concept) 구축에 탁월함.

    • JSON 지원 강화는 SQLite를 적합한 문서 저장소로 만드는 데 도움이 될 것임.
    • Protobuf 메시지를 직렬화 및 역직렬화하여 전체 타입 지원을 받고, 이 컬럼을 JSONB로 만들지 않으면 검색 가능한 데이터를 다른 컬럼으로 펼칠 필요 없이 이 컬럼을 필터링할 수 있음.
  • SQLite의 릴리스 프로세스에 대한 궁금증.

    • 최신 릴리스는 3.44이며, JSONB는 사전 릴리스 스냅샷에 포함됨.
    • Cloudflare의 D1과 Fly.io에서 이 기능을 사용하고 싶지만, SQLite 버전이 공개되지 않았거나 맞춤화되었을 수 있음.
    • API 변경 사항이 SQLite 호환 덤프/쿼리 파일을 가져올 수 있다는 Cloudflare의 약속을 깨뜨릴 수 있음.
  • JSONB를 사전 릴리스 스냅샷이나 플레이그라운드에서 시도할 수 있음.

  • JSONB 사양의 핵심 아이디어는 각 요소가 크기와 타입을 포함하는 헤더로 시작한다는 것임.

    • JSON 사양에 크기 표시를 추가하는 것이 JSON 처리에 필요한 메모리를 줄일 수 있음을 제안함.
  • MongoDB의 BSON에 익숙하지만 JSONB는 아님.

    • JSONB와 BSON의 차이점에 대해 설명하는 블로그 글을 참조함.
  • JSONB는 성능에 영향을 미침.

    • 많은 사람들이 Postgres에서 JSONB를 알고 있을 것임.
    • PGConf NYC 2021에서 Oleg Bartunov가 발표한 'Jsonb 성능 이해' 강연을 보는 것을 권장함.
    • Jsonb 성능 이해 강연 영상
  • 여러 행에 걸쳐 JSON 데이터를 압축하는 방법이 있었으면 함.

    • 매우 유사한 블롭이 각 행에 있으며, 많은 유사한 블롭을 여러 행에 걸쳐 저장 공간을 줄이는 방법이 필요함.
  • 내부 형식에도 불구하고 애플리케이션에서 즉시 사용 가능함.

    • 예를 들어 Python에서의 일괄 삽입에 있어서 행 당 삽입 호출에는 눈에 띄는 오버헤드가 있음.
    • JSONB는 CTE(Common Table Expressions)를 사용하여 성능을 개선할 수 있음.
    • json_each는 애플리케이션에서 JSONB BLOB으로 바인딩된 매개변수를 받아들일 수 있음.