Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
PostgreSQL a des fonctionnalités concernant les objets larges, fournissant un accès style flux aux données utilisateurs stockées dans une structure spéciale. L'accès en flux est utile pour travailler avec des valeurs de données trop larges pour être manipuler convenablement en entier.
Ce chapitre décrit l'implémentation, la programmation et les interfaces du langage de requêtes pour les données de type objet large dans PostgreSQL. Nous utilisons la bibliothèque C libpq pour les exemples de ce chapitre mais la plupart des interfaces natives de programmation de PostgreSQL supportent des fonctionnalités équivalentes. D'autres interfaces pourraient utiliser l'interface des objets larges en interne pour fournir un support générique des valeurs larges. Ceci n'est pas décrit ici.
POSTGRES 4.2, le prédécesseur indirect de
PostgreSQL, supportait trois implémentations
standards des objets larges : par des fichiers externes au serveur
POSTGRES, par des fichiers externes gérés par le
serveur POSTGRES et par des données stockées
dans la base de données POSTGRES. Ceci a causé
une énorme confusion parmi les utilisateurs. Du coup, seul le
support des objets larges en tant que donnée stockée dans la base de données
a été conservé dans PostgreSQL. Bien qu'il soit
plus lent en accès, il fournit une intégrité stricte des données. Pour des
raisons historiques, le schéma de stockage est référencé comme
Inversion large objects (vous apercevrez le terme
inversion utilisé occasionnellement pour signifier aussi un objet large).
Depuis PostgreSQL 7.1, tous les objets larges
sont placés dans une table système appelée
pg_largeobject
.
PostgreSQL 7.1 a introduit un mécanisme (nom de code << TOAST >>) qui permet à des données d'être bien plus larges que des pages de données individuelles. Ceci rend l'interface des objets larges partiellement obsolète. Un des avantages restant de l'interface des objets larges est qu'il permet des tailles importantes, avec un maximum de 2 Go alors que les champs TOAST ne peuvent gérer qu'un maximum de 1 Go. De plus, les objets larges peuvent être manipulés élément par élément bien plus facilement que des champs ordinaires de données, donc les limites pratiques sont considérablement différentes.
Précédent | Sommaire | Suivant |
Exemples de programmes | Niveau supérieur | Fonctionnalités d'implémentation |