PostgreSQL JSONB DataType et fonctions

PostgreSQL JSONB DataType et fonctions

Comme dans le 9.2 version, PostgreSQL a ajouté un type de données JSON assez basique. Sous la couverture, le type de données JSON est le texte, avec une vérification que la disposition est peut-être une entrée JSON correcte similaire à XML. Finalement, l'équipe a constaté que le volume de traitement JSON et de recherche spécialisée nécessaire dans PostgreSQL aurait été difficile ou rationnel à appliquer sur un type textuel de données. Par conséquent, ils ont créé une représentation binaire du type de données JSON avec une gamme complète d'opérateurs et de méthodes. Voici le type de données JSONB. Le type de données JSONB est en effet une disposition de stockage binaire polyvalente avec une capacité complète de traitement, d'indexation et de recherche. En conséquence, il pré-traite les informations JSON à une disposition intérieure, qui n'a qu'une seule valeur par clé et ignore un espace ou une dépression supplémentaire, ou vous pouvez dire l'indentation. Dans ce guide, vous apprendrez à interagir avec le formulaire de données JSONB dans PostgreSQL, ainsi que certains opérateurs et méthodes pratiques pour traiter les données JSONB.

Le type de données dont vous aurez probablement besoin et que vous choisissez d'utiliser est JSONB, pas la version précoce JSON, qui n'est utilisée que pour la compatibilité en arrière. Alors, ouvrez le shell de commande PostgreSQL et fournissez les noms, la base de données, le port et le nom d'utilisateur du serveur.

Exemple 01:

Voici une courte illustration des variations entre les deux types de données. Nous devons créer un tableau «nouveau» avec l'une de ses colonnes doit être le type de données «JSON» comme suit:

>> Créer une table nouvelle (clé primaire en série ID, Val JSON);

Insérez certaines valeurs dans la colonne 'Val'.

>> Insérer dans de nouvelles valeurs (val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"key": "valeur"') ;

Utilisation de l'opérateur '@>'

Une fois que nous essayons de rechercher des entrées avec un entier dans la liste de colonnes «Extra», nous recevons toujours un message d'erreur comme annexé ci-dessous.

>> Sélectionner * dans New Where Val @> '11';

Oui. JSON est juste du texte et n'est pas très efficace, et il ne contient pas de configuration de l'opérateur. Laissez le contenu est modifié en JSONB.

>> alter table new alter colonne Val type jsonb;

Exécutez maintenant la même requête dans le shell, et le résultat montre une ligne ayant le numéro «11» dans son tableau comme indiqué ci-dessous.

>> Sélectionner * dans New Where Val @> '11';

Exemple 02:

Laissez-nous utiliser un «sac» de table à utiliser dans nos illustrations jusqu'à ce que nous commencions à parler des méthodes et des opérateurs utilisables pour le type de données PostgreSQL JSONB. Une de ses colonnes, e.g. Le type de données «marque» doit être «JSONB» comme suit:

>> Créer un sac de table (id série primaire en série, marque JSONB pas nul);

Nous utiliserons la déclaration d'insertion SQL suivante pour ajouter des informations dans la table PostgreSQL 'sac':

>> Insérer dans les valeurs du sac (marque) ('"name": "gucci", "couleur": ["rouge", "noir"], "prix": 10000, "vendu": true,]') , ('"name": "allure", "couleur": ["rouge", "gris"], "prix": 85000, "vendu": false,]'), ('"name": "Kidza", "couleur": ["noir", "blanc"], "prix": 75000, "vendu": vrai,] ');

Vous pouvez voir que les données ont été ajoutées sous la forme d'un dictionnaire, e.g., clés et valeurs.

Les éléments de ce tableau «sac» peuvent être vus en utilisant une phrase sélectionnée, comme on le voit ci-dessous:

>> sélectionner * dans le sac;

Utilisation de l'opérateur '->'

Recherchez les valeurs de la colonne «marque» via la clé «nom» en utilisant l'opérateur «->» dans notre requête. Il va récupérer tous les enregistrements du «nom» clé de la colonne «marque». La sortie sera affichée dans la nouvelle colonne «marque». La sortie finale apparaîtra comme annexée ci-dessous. Comme vous pouvez le voir, nous avons trois valeurs: «Gucci, allure, kidza« pour le nom de clé ».

>> Sélectionner la marque -> 'nom' comme marque de sac;

Utilisation de l'opérateur '->' en utilisant la clause

Reprenons toutes ces lignes de la table «sac» où la colonne «marque» a la valeur «vraie» pour sa clé «vendue». La requête de cette sélection est la suivante:

>> sélectionner * dans le sac où marque -> 'vendu' = 'true';

Là, vous voyez, la requête a obtenu deux lignes seulement à partir du «sac» de table car elle n'a que deux rangées ayant une valeur «vrai» pour la clé «vendue».

Fonctions postgresql JSONB:

Avec les informations JSONB, il semble y avoir une variété de méthodes intégrées qui peuvent être utilisées. Jetons un coup d'œil.

JSONB chaque fonction:

La fonction JSONB prend les données et la convertit en paire key_value. Considérez la requête suivante de la méthode JSONB_EACH où nous avons fourni des valeurs. Les données JSON de plus haut niveau sont étendues à une série de combinaisons de valeurs clés dans le résultat. Nous avons deux paires de valeurs clés, comme indiqué ci-dessous.

>> sélectionnez JSONB_EACH ('"Name": "allure", "Vendu": "True"' :: JSONB);

Fonction des touches d'objet JSONB:

Maintenant, nous allons jeter un œil à la fonction jsonb_object_keys. Cette fonction prend les données, et elle-même sépare et identifie les valeurs clés dedans. Essayez la requête SELECT ci-dessous, dans laquelle nous avons utilisé la méthode JSONB_Object_keys et a fourni certaines valeurs. Cette méthode ne renverra que les clés du document JSON de niveau JSON pour les données particulières, comme indiqué ci-dessous.

>> sélectionnez JSONB_OBJECT_KEYS ('"Name": "Kidza", "Vendu": "True"' :: JSONB);

Fonction de chemin d'extrait JSONB:

La fonction de chemin d'extrait JSONB prend le chemin pour montrer la valeur des résultats. Essayez la requête ci-dessous dans le shell de commande, où nous avons fourni la «marque» comme chemin vers JSONB JSONB_EXTRAT_PATH Méthode. À partir de la sortie présentée dans l'image ci-dessous, vous pouvez voir que le «gucci» est une valeur renvoyée au chemin «nom» du chemin.

>> Sélectionnez JSONB_EXTRACT_PATH ('"Name": "Gucci", "Vendu": true' :: JSONB, 'name');

JSONB jolie fonction:

Si vous souhaitez afficher vos fichiers JSON avec une disposition facile à lire, alors la fonction JSONB Pretty est la meilleure option. Essayez la requête ci-dessous, et vous obtiendrez une sortie simple.

>> sélectionnez JSONB_PRETTY ('"Name": "allure", "Vendu": false' :: JSONB);

Conclusion:

Lorsque vous stockez des informations JSONB dans les bases de données PostgreSQL, vous obtenez le meilleur résultat possible: la simplicité et la fiabilité d'une base de données NoSQL combinée aux avantages d'une base de données relationnelle. En utilisant de nombreux opérateurs et méthodes, nous avons démontré comment utiliser le PostgreSQL JSONB. Vous serez capable de travailler avec les données JSONB en utilisant nos illustrations comme référence.