W dużym uproszczeniu – JSON to tekst a JSONB to kod binarny.
JSON
W tym formacie dane są zapisywane za pomocą zwykłego tekstu – co sprawia, że zapis jest szybki. Lecz operacje na strukturze JSON są wolne ponieważ wymagają uprzedniego przetworzenia/dekompozycji.
JSONB
W tym formacie dane zapisywane są za pomocą kodu binarnego – co sprawia, że zapis jest wolny. Lecz dzięki uprzedniemu przetworzeniu/dekompozycji operacje na strukturze JSON są bardzo szybkie.
Uwaga!!!
Przetworzenie/dekompozycja która się odbywa przy zapisie do bazy danych powoduje:
– redukcję duplikatów (jeśli jest więcej niż jeden klucz o tej samej nazwie, tylko ostatni zostanie zachowany)
– utracenie kolejności kluczy (jeśli mieliśmy klucze „name”, „surname”, to nie koniecznie otrzymamy je w tej samej kolejności przy odczycie)
Format JSON pozwala na powyższe, z racji tego, że jest zapisywany jako zwykły tekst.
Warto zajrzeć
1. https://www.postgresql.org/docs/current/datatype-json.html