PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/03/2014 05:21:41

Jiff
Membre

Questions sur le type BYTEA

Salut forumers,
.
n'ayant jamais utilisé ce type, j'ai quelques questions dessus. Le but étant de stocker/restituer des PDF:
.
1- Existe-t-il une/des fonctions PG permettant de directement passer d'une string à un BYTEA et inversement dans les différents formats?
.
2- Sachant que mes PDF sont très efficacement re-compressés avant stockage (avec gs), quel format de HEX ou ESCAPE est celui qui prendra le moins de place sur le disque?  (au vu de la doc je dirais ESCAPE, mais comme rien n'est dit là-dessus…)
Précision, la colonne BYTEA sera logiquement altérée de la sorte: SET STORAGE EXTERNAL.
.
3- Vu ce qui est expliqué dans la doc sur les types de stockage, les PDF ne devraient normalement pas pénaliser les requêtes sur cette table, non? (il n'y a pas que le BYTEA, il y a aussi au moins une 20aine d'autres colonnes).
.
4- Je viens de m'apercevoir que l'on peut indexer une colonne de type BYTEA et ça m'intéresse (NULL|NOT NULL == yapa|ya un PDF stocké dans la colonne), cependant est-ce que l'index utilise tout le contenu du BYTEA ou pas? (ne risque-t-il pas de grossir démesurément, auquel cas un BOOLEAN de présence ou pas du PDF serait nécessaire?)
.
Merci d'avance.

Dernière modification par Jiff (06/03/2014 05:36:38)

Hors ligne

#2 07/03/2014 00:24:37

gleu
Administrateur

Re : Questions sur le type BYTEA

1. Non. Vous pouvez coller une chaîne dans un bytea. Après tout, un bytea n'est qu'une chaîne de caractères qui accepte aussi des octets qui ne sont pas des caractères.

2. Les formats hexa et escape ne sont pas des formats de stockage. Ce sont des formats en sortie (donc affichage).

3. Tant que vous ne faites pas de SELECT * ou que vous ne réclamez pas explicitement ce champ, non, en effet.

4. Il en utilise au moins une grosse partie. De toute façon, d'après ce que vous expliquez, vous ne voulez pas indexer le bytea. Vous voulez indexer sa présence ou son absence. Donc plutôt un CREATE INDEX ON la_table(une_colonne) WHERE colonne_bytea IS NULL; par exemple.


Guillaume.

Hors ligne

#3 07/03/2014 00:53:39

Jiff
Membre

Re : Questions sur le type BYTEA

1+2. Donc juste des strings en I/O; c'est beaucoup plus simple que je ne pensais.
.

3. Tant que vous ne faites pas de SELECT * ou que vous ne réclamez pas explicitement ce champ, non, en effet.

Ça existe des gens qui font un 'SELECT *' en dehors des vérifications manuelles en ligne de Cde???
.
4. Flûte, j'utilise la même chose pour certains BOOLEAN et je n 'ai même pas pensé à le faire là sad
.
Merci pour ces éclaircissements.

Hors ligne

#4 08/03/2014 00:04:06

gleu
Administrateur

Re : Questions sur le type BYTEA

Ça existe des gens qui font un 'SELECT *' en dehors des vérifications manuelles en ligne de Cde???

Malheureusement, oui. Encore plus malheureusement, ils sont nombreux.


Guillaume.

Hors ligne

Pied de page des forums