30. Objets larges
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.
30.1. Introduction
Tous les objets larges sont placés dans une seule table système
appelée pg_largeobject. PostgreSQL™ supporte aussi un système de
stockage appelé «
TOAST
» qui stocke automatiquement
les valeurs ne tenant pas sur une page de la base de données dans
une aire de stockage secondaire par table. Ceci rend partiellement
obsolète la fonctionnalité des objets larges. Un avantage restant
des objets larges est qu'il autorise les valeurs de plus de 2 Go en
taille alors que les champs TOAST peuvent être d'au plus 1 Go. De plus, les
objets larges peuvent être modifiés au hasard en utilisant une API
de lecture/écriture qui est plus efficace que la réalisation de
telles opérations utilisant TOAST.