jsonb

jsonb
jsonb stocke les données sous une forme binaire décomposée, non pas comme une chaîne ASCII/UTF-8, mais comme un code binaire. Il est donc légèrement plus lent à l'entrée en raison du surcoût de conversion, mais nettement plus rapide à traiter, puisqu'il n'y a pas besoin de reparsage.
le jsonb prend également en charge l'indexation, ce qui peut constituer un avantage significatif.
jsonb ne préserve pas les espaces blancs, ne préserve pas l'ordre des clés d'objet et ne conserve pas les clés d'objet dupliquées. Si des clés en double sont spécifiées dans l'entrée, seule la dernière valeur est conservée.
Il est recommandé que les applications stockent les données " JSON comme " jsonb, à moins qu'il n'y ait des besoins très spécifiques, tels que des hypothèses héritées sur l'ordre des clés d'objet.
La RFC 7159 autorise les chaînes " JSON à contenir des séquences d'échappement Unicode désignées par " \uXXXX. La fonction d'entrée pour 'jsonb ne permet pas les échappements Unicode pour les caractères non-ASCII (ceux au-dessus de U+007F) à moins que l'encodage de la base de données ne soit UTF8. le jsonb rejette le " \u0000. La raison en est que '\u0000 ne peut pas être représenté dans le type de texte PostgreSQL's. jsonb insiste pour que toute utilisation de paires de substituts Unicode pour désigner des caractères en dehors du plan multilingue de base Unicode soit correcte. Les échappements Unicode valides sont convertis en caractères ASCII ou UTF8 équivalents pour le stockage ; cela inclut le pliage des paires de substituts en un seul caractère.
Lors de la conversion d'une entrée textuelle " JSON en " jsonb, les types primitifs décrits par la RFC 7159 sont effectivement mis en correspondance avec les types natifs de PostgreSQL. jsonb rejette les nombres qui sont en dehors de la plage du type de données numériques de PostgreSQL.