<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Postgresql | Undisconnected</title>
	<atom:link href="https://undisconnected.com/category/developpement/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>https://undisconnected.com</link>
	<description>Reste connecté</description>
	<lastBuildDate>Tue, 08 Aug 2023 08:42:29 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>JSON dans PostgreSQL, une hérésie ? </title>
		<link>https://undisconnected.com/json-dans-postgresql-une-heresie/</link>
					<comments>https://undisconnected.com/json-dans-postgresql-une-heresie/#respond</comments>
		
		<dc:creator><![CDATA[Imatt]]></dc:creator>
		<pubDate>Sat, 21 Jan 2023 10:17:29 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Postgresql]]></category>
		<guid isPermaLink="false">https://undisconnected.com/?p=3057</guid>

					<description><![CDATA[<p>Eh oui, stocker des données au format JSON dans PostgreSQL c&#8217;est possible. À l&#8217;instar des…</p>
The post <a href="https://undisconnected.com/json-dans-postgresql-une-heresie/">JSON dans PostgreSQL, une hérésie ? </a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></description>
										<content:encoded><![CDATA[<p>Eh oui, stocker des données au format JSON dans PostgreSQL c&rsquo;est possible. À l&rsquo;instar des base de données NoSQL comme MongoDB, PostgresSQL peut stocker des documents au format JSON.&nbsp;</p>
<p>Mais pourquoi ?&nbsp;</p>
<p>Eh bien, d&rsquo;après-moi c&rsquo;est parce que cela offre le meilleur des 2 mondes. Il arrive souvent que dans les applications modernes, le recours au stockage de document (clé / valeur) soit très pratique. Pour enregistrer des logs, des informations rapidement accessibles, de l&rsquo;information brut et non relative &#8230; Les applications modernes ne requiert pas en tout temps des données relative.</p>
<p>Une autre raison qui me parait intéressante est que des fois, la fainéantise (ou le manque de temps) du développeur va faire que certaine données ne seront pas collectées et enregistrées en base données. Si la modélisation demande d&rsquo;ajouter 7 tables et que le schéma de la base de données devient une usine à gaz, le développeur est humain, oui, et des fois ça ne le tente pas, il préfère aller se boire une bière. C&rsquo;est alors que le type de données JSON intervient pour permettre de « jeter » un groupe de donnée au format JSON dans un champs.&nbsp;</p>
<p>Il suffit de créer un champs de type JSON ou JSONB (nous verrons la différence plus tard) et vous avez accès au stockage de donnée hiérarchique que permet JSON. Mais ce n&rsquo;est pas tout, sinon vous auriez pu mettre vos données au format JSON dans un champ de type « TEXT ». L&rsquo;important avec le type de donnée JSON est que vous allez pouvoir faire des requêtes SQL directement dans le JSON. PostgreSQL propose des fonctions et des opérateurs spécifiques au format JSON pour faire vos requêtes, et cerise sur le gâteau, c&rsquo;est très efficace et rapide.</p>
<h2>JSON ou JSONB&nbsp;</h2>
<p>Lorsque vous souhaitez enregistrer des données au format JSON dans PostgreSQL, vous avez le choix en JSON et JSONB (JSON Binary).&nbsp;</p>
<p>Les deux types de données JSON et JSONB dans Postgres sont utilisés pour stocker des données au format JSON, mais ils ont des comportements différents en ce qui concerne l&rsquo;indexation et la vérification de la validité des données.</p>
<p><strong>JSON</strong> est un type de données non indexable, ce qui signifie qu&rsquo;il n&rsquo;est pas possible d&rsquo;utiliser des index pour accélérer les requêtes qui filtrent ou trient des données JSON. Il est également moins efficace pour stocker des données qui contiennent des erreurs de syntaxe ou des valeurs non valides.</p>
<p><strong>JSONB</strong> est un type de données indexable, il permet d&rsquo;utiliser des index pour accélérer les requêtes qui filtrent ou trient des données. Il est également plus efficace pour stocker des données qui contiennent des erreurs de syntaxe ou des valeurs non valides car il vérifie la validité des données au moment de l&rsquo;insertion.</p>
<h2>Requêtes SQL sur un champs JSON dans PostgreSQL</h2>
<p>Pour cet article, nous allons nous concentrer sur les opérateurs, mais sachez qu&rsquo;ils existent aussi plein de fonctions dont vous pouvez trouver la liste dans la <a href="https://www.postgresql.org/docs/9.3/functions-json.html" target="_blank" rel="noopener">documentation de PostgreSQL</a>. Les opérateurs vous permettent de faire des requêtes SQL simple dans un champs JSON ou JSONB.</p>
<p>La flèche courte -&gt; garde le type JSON</p>
<p>La flèche longue -&gt;&gt; retourne du texte.</p>
<p>Voici le code SQL pour reproduire ce petit tutoriel vous même :&nbsp;</p>



<pre class="wp-block-code"><code lang="sql" class="language-sql">CREATE TABLE transaction (
	id serial NOT NULL PRIMARY KEY,
	message json NOT NULL
);</code></pre>



<pre class="wp-block-code"><code lang="sql" class="language-sql">INSERT INTO transaction (message)
VALUES('{ "order_id": "7856", "items": {"product": "Beer","qty": 24}}'),
      ('{ "order_id": "9801", "items": {"product": "Pizza","qty": 1}}'),
      ('{ "order_id": "10089", "items": {"product": "Wine","qty": 2}}');</code></pre>



<p>Voici un exemple de requête pour récupérer tous les order_id du champs « message » de la table « transaction ». Attention ça va aller vite : </p>



<pre class="wp-block-code"><code lang="sql" class="language-sql">SELECT message-&gt;'order_id' from transaction;</code></pre>



<p>Plutôt simple, non ? ça nous retourne 3 ligne : « 7856 », « 9801 » et « 10089 »</p>
<p>Maintenant si je souhaite obtenir les items dont le order_id est 9801, voici la requête :</p>



<pre class="wp-block-code"><code lang="sql" class="language-sql">SELECT message-&gt;'items' as items from orders WHERE message -&gt;&gt; 'order_id' = '9801';</code></pre>



<h2 class="wp-block-heading">Aller plus loin sur JSON et JSONB dans Postgres</h2>



<p>Voici une vidéo pour étendre le sujet du JSON &amp; JSONB pour Postgres : </p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Rob Conery - Document Storage Techniques with PostgreSQL and JSONB" width="500" height="281" src="https://www.youtube.com/embed/rg_GiOZ5Owk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Vous voyez la puissance du couple JSON et SQL ? C&rsquo;est super utile de pouvoir stocker des données non organisées dans un JSON et de pouvoir faire une requête SQL dans le JSON directement. C&rsquo;est un gain de temps énorme et ça peut aussi améliorer votre application puisque le SQL va pouvoir pré-mâcher les données.</p>



<p>Si vous êtes intéressé à en savoir plus sur les champs de type JSON dans Postgres et comment travailler avec ceux-ci, à voir plus d&rsquo;exemples … Laissez un commentaire et je pourrais faire un autre article plus en profondeur.</p>The post <a href="https://undisconnected.com/json-dans-postgresql-une-heresie/">JSON dans PostgreSQL, une hérésie ? </a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></content:encoded>
					
					<wfw:commentRss>https://undisconnected.com/json-dans-postgresql-une-heresie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Stocker des prix dans PostgreSQL, quel type de données ?</title>
		<link>https://undisconnected.com/stocker-des-prix-dans-postgres-sql-quel-type-de-donnees/</link>
					<comments>https://undisconnected.com/stocker-des-prix-dans-postgres-sql-quel-type-de-donnees/#comments</comments>
		
		<dc:creator><![CDATA[Imatt]]></dc:creator>
		<pubDate>Mon, 03 Feb 2020 10:32:32 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Postgresql]]></category>
		<guid isPermaLink="false">https://undisconnected.com/?p=2940</guid>

					<description><![CDATA[<p>Un petit aide mémoire pour moi-même, mais peut-être que ça servira à quelques-un d&#8217;entre vous…</p>
The post <a href="https://undisconnected.com/stocker-des-prix-dans-postgres-sql-quel-type-de-donnees/">Stocker des prix dans PostgreSQL, quel type de données ?</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></description>
										<content:encoded><![CDATA[<p>Un petit aide mémoire pour moi-même, mais peut-être que ça servira à quelques-un d&rsquo;entre vous !&nbsp;</p>
<p>Pour stocker un prix dans PostgreSQL il faut utiliser le type de données (datatype) :&nbsp;</p>



<pre class="wp-block-code"><code>NUMERIC(precision, scale)</code></pre>



<p>En pratique, par exemple : numeric(7,2) permettra de stocker un prix jusqu&rsquo;à 99999.99. Il y a donc 7 digits au maximum (precision) et 2 après la virgule. PostgreSQL fera un arrondi de tout chiffre pour stocker uniquement 2 chiffres après la virgule.</p>
<p>Pour l&rsquo;exemple, 135.784 a une « precision » de 6 et un « scale » de 3</p>
<p>Si le prix est supérieur, alors PostgreSQL retourne une erreur du type : </p>



<pre class="wp-block-code"><code>ERROR:  numeric field overflow
DETAIL:  A field with precision 5, scale 2 must round to an absolute value less than 10^3.</code></pre>The post <a href="https://undisconnected.com/stocker-des-prix-dans-postgres-sql-quel-type-de-donnees/">Stocker des prix dans PostgreSQL, quel type de données ?</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></content:encoded>
					
					<wfw:commentRss>https://undisconnected.com/stocker-des-prix-dans-postgres-sql-quel-type-de-donnees/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Postgresql &#8211; Changer le propriétaire d&#8217;une table</title>
		<link>https://undisconnected.com/postgresql-changer-le-proprietaire-dune-table/</link>
					<comments>https://undisconnected.com/postgresql-changer-le-proprietaire-dune-table/#respond</comments>
		
		<dc:creator><![CDATA[Imatt]]></dc:creator>
		<pubDate>Thu, 29 Jan 2015 15:05:12 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[propriétaire]]></category>
		<category><![CDATA[table]]></category>
		<guid isPermaLink="false">https://undisconnected.com/?p=2503</guid>

					<description><![CDATA[<p>Comme j&#8217;utilise Postgresql pour un projet en cours, je me suis dit que j&#8217;allais vous…</p>
The post <a href="https://undisconnected.com/postgresql-changer-le-proprietaire-dune-table/">Postgresql – Changer le propriétaire d’une table</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></description>
										<content:encoded><![CDATA[<p>Comme j&rsquo;utilise Postgresql pour un projet en cours, je me suis dit que j&rsquo;allais vous faire profiter de ma base de connaissance, même si pour l&rsquo;instant elle est assez rudimentaire <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Alors voici un premier :</p>
<p>Pour changer le propriétaire d&rsquo;une table, utilisez la commande :</p>
<pre class="theme:secrets-of-rock lang:pgsql decode:true ">ALTER TABLE tablename OWNER TO username</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="https://undisconnected.com/postgresql-changer-le-proprietaire-dune-table/">Postgresql – Changer le propriétaire d’une table</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></content:encoded>
					
					<wfw:commentRss>https://undisconnected.com/postgresql-changer-le-proprietaire-dune-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
