Compatibilité Postgres
Cette page décrit comment Lakebase Postgres est compatible avec Postgres standard. En tant que service Postgres géré, il existe des différences et des limitations.
Prise en charge de la version Postgres
Lakebase Autoscaling prend en charge Postgres 16, Postgres 17 et Postgres 18. Postgres 17 est la version default. Pour utiliser Postgres 18, sélectionnez-le lors de la création d'un nouveau projet.
Prise en charge des extensions Postgres
Lakebase prend en charge de nombreuses extensions Postgres. Pour obtenir la liste complète, consultez les extensions Postgres.
Session, mémoire et stockage
Contexte de session
La fonctionnalité Lakebase de monter en charge à zéro ferme automatiquement les connexions inactives après une période d'inactivité.
Lorsque les connexions sont fermées, tout élément du contexte de la session, tel que les tables temporaires, les instructions préparées, les verrous consultatifs et les commandes NOTIFY et LISTEN, est perdu.
Pour éviter de perdre les contextes de niveau session, vous pouvez désactiver la mise à l'échelle à zéro. Cependant, cela signifie que votre compute s'exécute 24h/24 et 7j/7.
Mémoire
Les queries SQL et les constructions d'index peuvent générer de grands volumes de données qui pourraient ne pas tenir en mémoire. La taille de votre compute détermine la quantité de mémoire disponible.
Tables non journalisées
Les tables non journalisées sont des tables qui n'écrivent pas dans le log de Postgres (WAL). Ces tables sont stockées dans le stockage local du compute et ne sont pas persistantes après les redémarrages de compute ou lorsqu'un compute se réduit à zéro. Ceci est différent de Postgres standard, où les tables non journalisées ne sont tronquées qu'en cas de terminaison anormale du processus. De plus, les tables non journalisées sont limitées par l'espace disque local du compute. Les computes Lakebase allouent 20 GiB d’espace disque local ou 15 GiB multipliés par la taille maximale du compute (le plus élevé des deux) pour les fichiers temporaires utilisés par Postgres.
Tables temporaires
Les tables temporaires n'existent que pendant la durée de vie d'une session (ou éventuellement d'une transaction). Comme les tables non journalisées, elles sont stockées dans le stockage local du compute et limitées par l'espace disque local.
Logs Postgres
L'accès aux Logs Postgres n'est pas pris en charge.
Collecte de statistiques
Les statistiques collectées par le système de statistiques cumulées de Postgres ne sont pas enregistrées lorsqu'un compute (où Postgres s'exécute) se met à l'échelle de zéro. Pour éviter de perdre des statistiques, vous pouvez désactiver la fonctionnalité de mise à l'échelle à zéro. Cependant, la désactivation du dimensionnement à zéro signifie également que votre compute fonctionnera 24h/24 et 7j/7.
Paramètres Postgres
En tant que service Postgres géré, de nombreux paramètres de base de données sont définis en fonction de la taille du compute. Consultez tous vos paramètres de base de données en utilisant :
SHOW ALL;
Vous pouvez configurer des paramètres qui ont un contexte user au niveau de la session, de la base de données ou du rôle. Vous ne pouvez pas configurer de paramètres au niveau de l'instance.
-
Afficher les paramètres qui peuvent être définis au niveau de la session, de la base de données ou du rôle.
SQLSELECT name
FROM pg_settings
WHERE context = 'user'; -
Définissez un parameter pour la session.
SQLSET maintenance_work_mem='1 GB'; -
Définissez un paramètre pour toutes les sessions connectées à une base de données.
SQLALTER DATABASE databricks_postgres SET maintenance_work_mem='1 GB'; -
Définissez un parameter pour toutes les sessions d'un utilisateur donné.
SQLALTER USER "john@company.com" SET maintenance_work_mem='1 GB';
Encodage et classements de base de données
Encodage de la base de données
Par default, la collation C.UTF-8 est utilisée. C.UTF-8 prend en charge la gamme complète de caractères encodés en UTF-8.
L'encodage UTF8 (Unicode, encodage à 8 bits à largeur variable) est également pris en charge.
Pour afficher l'encodage et le classement de votre base de données, exécutez la query suivante :
SELECT
pg_database.datname AS database_name,
pg_encoding_to_char(pg_database.encoding) AS encoding,
pg_database.datcollate AS collation,
pg_database.datctype AS ctype
FROM
pg_database
WHERE
pg_database.datname = 'your_database_name';
Dans Postgres, vous ne pouvez pas modifier l'encodage ou le classement d'une base de données après sa création.
Classements
Une collation est un objet de schéma SQL qui mappe un nom SQL aux locales fournies par les bibliothèques installées dans le système d'exploitation.
Par default, Lakebase utilise le classement C.UTF-8. Un autre fournisseur pris en charge par Lakebase est icu, qui utilise la bibliothèque externe ICU.
Lakebase fournit une série complète de locales ICU prédéfinies au cas où vous auriez besoin de tris ou de conversions de casse spécifiques à la locale.
- Afficher tous les paramètres régionaux prédéfinis :
SELECT * FROM pg_collation;
- Créer une base de données avec un paramètre régional
icuprédéfini :
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
- Spécifiez des paramètres régionaux pour des colonnes individuelles :
CREATE TABLE my_ru_table (
id serial PRIMARY KEY,
russian_text_column text COLLATE "ru-x-icu",
description text
);
Limitations des fonctionnalités
Rôles et autorisations
- Vous ne pouvez pas accéder au système d'exploitation hôte.
- Vous ne pouvez pas vous connecter en utilisant Postgres
superuser.- Toute fonctionnalité qui nécessite
superuserprivilèges ou un accès direct au système de fichiers local n'est pas autorisée. - Le
databricks_superuserremplace le rôle Postgressuperuser. Pour plus d'information sur les privilèges associés à ce rôle, consultez Gérer les rôles.
- Toute fonctionnalité qui nécessite
Réplication
La réplication des données vers ou depuis une base de données Lakebase à l'aide de la réplication logique native de Postgres n'est pas encore disponible.
Espaces de table
Lakebase ne prend pas en charge les tablespaces Postgres. Toute tentative de création d'un tablespace avec la commande CREATE TABLESPACE entraîne une erreur. C'est en raison de l'architecture cloud gérée de Lakebase, qui n'autorise pas l'accès direct au système de fichiers pour les emplacements de stockage personnalisés.
Si vous avez des applications ou des scripts existants qui utilisent des tablespaces pour organiser les objets de base de données sur différents périphériques de stockage, vous devez supprimer ou modifier ces références lors de la migration vers Lakebase.