Postgres 9.2
L'avantage de la nouvelle fonctionnalité est double. Les colonnes de typejson
vérifient la validité de son contenu afin que le contenu de la colonne soit automatiquement JSON valide et vous obtenez une erreur si vous essayez d'écrire autre chose dessus.
Et vous avez des fonctions de base pour créer un JSON valide à la volée à partir de lignes ou de tableaux - ce qui est un cas d'utilisation très courant.
Je cite Andrew Dunstan sur la liste pgsql-hackers :
À un certain stade, il y aura peut-être des fonctions de traitement json (par opposition à la production json), mais pas en 9.2.
J'ai utilisé cette citation avant sous cette question connexe sur SO .
Postgres 9.3
.. apporte enfin un certain nombre de fonctions et d'opérateurs. Consultez la page de manuel pour les fonctions JSON .
Réponse connexe sur SO:
@ Mettra en place un article de blog. Voir commentaire ci-dessous.
Postgres 9.4
Assurez-vous de vérifier le nouveau jsonb
type avec une multitude de nouvelles fonctionnalités.
Surtout, le stockage binaire décomposé permet un stockage plus petit sur le disque et un opérateur d'égalité pour jsonb
(contrairement json
), ce qui rend possible un certain nombre d'opérations supplémentaires (comme DISTINCT
ou un UNIQUE
index).
Pourtant, plus de fonctions ont été ajoutées pour json
et jsonb
. json_to_record()
, json_to_recordset()
etc. Plus dans les notes de version.
En résumé, le type de données JSON (ainsi que l'extension et le type de données HSTORE plus anciens) vous permettent d'utiliser PostgreSQL comme un magasin de données "sans schéma" (ou de combiner des données relationnelles et non relationnelles "sans schéma"), au lieu de avoir à recourir à certaines des autres options NoSQL (comme MongoDB). Vous gagnez même des choses que vous ne pouvez pas faire avec MongoDB, comme l'indexation filtrée, l'indexation des expressions, etc. Le seul inconvénient est que PostgreSQL ne prend pas en charge le partitionnement prêt à l'emploi comme le fait MongoDB ... cependant, je se demandent vraiment à quelle fréquence le partage est vraiment nécessaire. Avec une base de données PostgreSQL 9.3 bien configurée, des ressources O / S suffisantes et des index d'expressions filtrées raisonnablement bien pensés, vous devriez facilement être en mesure de récupérer des lignes sans schéma dans la plage de 0,25 milliseconde.
HTH, Dave Sisk
la source
Fondamentalement, je vois trois cas d'utilisation ici:
Le premier peut être fait directement à partir de PostgreSQL sans aucun addon nécessaire. Vous devriez pouvoir faire quelque chose comme:
Cela peut ensuite être utilisé pour créer des tableaux imbriqués, etc. dans votre sortie et éviter beaucoup de problèmes d'analyse désordonnés du côté de l'application.
le second passe des données complexes dans la base de données pour traitement. Actuellement, il n'y a pas de fonctions intégrées pour faciliter cela, mais avec des addons comme pl / v8js, vous pouvez programmer votre base de données en Javascript et utiliser json comme format d'échange. Cela peut permettre la création d'interfaces plus riches dans votre base de données. Notez que puisque vous pouvez indexer des sorties de fonction, vous pouvez l'utiliser pour créer des index d'aspects de JSON à stocker dans votre base de données.
Le troisième est un domaine que nous prévoyons de l'utiliser dans LedgerSMB. L'idée est que nous pourrions vouloir permettre aux intégrateurs de systèmes de stocker des informations très simples avec les comptes clients. Cela pourrait ensuite être emballé dans un champ JSON qui serait stocké. Cela ne pourrait pas être directement interrogé par les applications principales, mais si les gens voulaient l'ajouter à l'aide de pl / v8js, cela pourrait être fait pour les entreprises individuelles utilisant le logiciel.
la source