veilletech.fr
13 nov. Feed du jour
#08 POSTGRES Article

OrioleDB : un Postgres sans tuples morts, en bêta

Les tables qui gonflent ont peut-être trouvé leur moteur.

OrioleDB, moteur de stockage open source pour Postgres, passe en bêta publique sur Supabase : journal d'annulation au lieu des tuples morts, tables organisées par clé primaire, identifiants de transaction sur 64 bits. Sur le banc de l'éditeur, il fait environ 1,8 fois mieux que le stockage classique quand les données dépassent la mémoire. Pas encore prêt pour la production.

3 min de lectureintermédiairevidéo 1:14
Partager
Sommaire7 sections
  1. Ce qui se passe
  2. Le problème visé
  3. Ce qu'OrioleDB change
  4. Les chiffres, et d'où ils viennent
  5. Les limites de la bêta
  6. Comment l'essayer
  7. À retenir

Ce qui se passe

Supabase ouvre en bêta publique, sur tous ses plans et au prix de Postgres standard, OrioleDB, un moteur de stockage open source pour Postgres. Il se choisit à la création d'un projet. La bêta embarque OrioleDB beta19 sur Postgres 17.11. Redimensionnement, réplicas en lecture, montées de version et sauvegardes planifiées fonctionnent ; la production, pas encore.

Le problème visé

Le stockage par défaut de Postgres, le heap, ne modifie jamais une ligne sur place : chaque mise à jour écrit une nouvelle version et laisse l'ancienne derrière elle, un tuple mort. Comme les index pointent vers l'emplacement physique de la ligne, la nouvelle version demande en général une entrée dans chaque index, même ceux dont la colonne n'a pas bougé. VACUUM et l'autovacuum nettoient ; quand ils prennent du retard, tables et index gonflent et les requêtes lisent plus de pages. D'où les réglages d'autovacuum par table, les VACUUM programmés ou pg_repack.

Ce qu'OrioleDB change

Il se branche par la Table Access Method, l'interface de Postgres pour les moteurs de stockage : chaînes de connexion, Auth, politiques RLS et bibliothèques clientes ne bougent pas.

Les chiffres, et d'où ils viennent

Ils sortent de DBArena, le banc de Supabase — donc de l'éditeur —, avec une charge dérivée de TPC-C, non comparable aux résultats TPC-C officiels. Code, méthode et résultats bruts sont publics.

Les gains attendus portent sur les tables souvent modifiées ou purgées (statuts de commande, stocks, files de jobs, sessions), les données plus grosses que la mémoire, la forte concurrence et les lectures par clé primaire. Une charge surtout en lecture qui tient en mémoire verra peu de différence.

Les limites de la bêta

Comment l'essayer

En local, avec la CLI Supabase 2.119.0 ou plus :

Terminal
supabase init --use-orioledb

Les nouvelles tables utilisent alors OrioleDB, sans syntaxe particulière. Rejouez votre propre charge avant de conclure, ce que recommande aussi l'éditeur.

Source : Supabase, en anglais. Code : orioledb/orioledb.