Image de couverture : pg_lake vs Lakebase : quand « PostgreSQL + Lakehouse » ne veut pas dire la même chose
tech

pg_lake vs Lakebase : quand « PostgreSQL + Lakehouse » ne veut pas dire la même chose

14 May 2026
6 min de lecture
47 vues
Sébastien Muler

pg_lake vs Lakebase : quand « PostgreSQL + Lakehouse » ne veut pas dire la même chose

Snowflake et Databricks proposent chacun une solution qu'ils présentent comme « PostgreSQL intégré à un lakehouse ». Les noms se ressemblent, le positionnement marketing aussi. Pourtant, sous le capot, ces deux approches sont presque opposées. Comprendre cette différence est essentiel avant de choisir l'architecture de votre pipeline de données.

Cet article s'appuie sur l'analyse de Christophe Pettus publiée sur The Build.


Deux philosophies radicalement différentes

pg_lake (Snowflake) : PostgreSQL étendu vers l'extérieur

pg_lake est une extension de PostgreSQL, pas une réécriture. Le moteur reste un binaire Postgres standard et non modifié. Les tables heap classiques continuent d'exister dans des fichiers heap, le MVCC fonctionne exactement comme vous le connaissez, et le WAL (Write-Ahead Log) écrit toujours sur disque local.

Ce que pg_lake ajoute, c'est la capacité de définir des tables Iceberg — stockées sous forme de fichiers Parquet dans un object storage — et de les interroger comme s'il s'agissait de tables natives. PostgreSQL lui-même agit en tant que catalogue Iceberg. Pour les scans analytiques lourds, les requêtes sont déléguées à un processus auxiliaire exécutant DuckDB, spécialisé dans le traitement colonnaire.

L'architecture ressemble à ceci :

[ Client SQL ]
      |
[ PostgreSQL (binaire standard) ]
      |              \
[ Heap tables ]   [ Tables Iceberg → Parquet / Object Storage ]
                        |
                   [ DuckDB (sidecar analytique) ]

Ce qui est préservé : la compatibilité transactionnelle complète sur les tables heap, la sémantique MVCC native, l'écosystème d'extensions Postgres.

Ce qu'il faut garder en tête : les tables Iceberg ne bénéficient pas du même niveau de garanties transactionnelles ACID que les tables heap. Ce sont deux types de stockage cohabitants, avec des comportements différents.


Lakebase (Databricks) : PostgreSQL avec le moteur de stockage remplacé

Lakebase adopte une stratégie inverse. La couche de calcul est bien un binaire Postgres — vous utilisez le même SQL, les mêmes drivers, les mêmes outils. Mais le moteur de stockage a été entièrement remplacé par celui de Neon, la startup acquise par Databricks en 2025.

Neon dissocie le compute du storage : les données ne vivent plus dans des fichiers heap locaux, mais dans un système de stockage distribué basé sur des pages, conçu pour le cloud. Cela permet une scalabilité quasi-instantanée, la mise en veille des instances, et une facturation à l'usage.

L'architecture ressemble à ceci :

[ Client SQL ]
      |
[ PostgreSQL (surface de programmation) ]
      |
[ Moteur de stockage Neon (distribué, cloud-native) ]
      |
[ Object Storage / Pages distribuées ]

Ce qui est préservé : l'interface SQL PostgreSQL, la compatibilité des drivers et des outils clients.

Ce qu'il faut garder en tête : vous n'êtes plus sur un PostgreSQL standard. Le comportement en termes de latence, de durabilité et de garanties transactionnelles dépend de l'implémentation Neon, qui peut diverger sur des cas limites de MVCC ou de crash recovery.


L'impact concret sur vos données et vos requêtes

Cohérence des données

Avec pg_lake, la cohérence transactionnelle est forte sur les tables heap classiques. Mais dès que vous mélangez des écritures sur des tables heap et des tables Iceberg dans une même transaction, vous sortez du périmètre ACID standard. Les garanties dépendent de l'implémentation de la couche Iceberg et de la façon dont les commits sont coordonnés.

Avec Lakebase, le modèle transactionnel est celui de Neon. Neon est conçu pour être compatible PostgreSQL, mais la séparation compute/storage introduit des subtilités : les snapshots, la gestion des pages en mémoire, et le comportement en cas de failover ne sont pas identiques à ceux d'un PostgreSQL classique sur disque local.

Règle pratique : si la cohérence transactionnelle stricte est votre priorité absolue (transactions financières, données critiques), pg_lake sur des tables heap est plus proche du comportement PostgreSQL que vous maîtrisez déjà.

Performances de requêtage

pg_lake excelle pour les requêtes analytiques sur de grands volumes grâce à la délégation vers DuckDB. Pour les requêtes OLTP classiques, vous restez sur PostgreSQL standard avec ses performances habituelles. L'optimiseur doit cependant décider quand déléguer à DuckDB et quand exécuter localement — une complexité supplémentaire à surveiller.

Lakebase est optimisé pour les workloads cloud-native où l'élasticité prime : scale-up rapide, mise en veille des instances inutilisées, multi-tenant. La latence sur les premières requêtes après une période d'inactivité peut être plus élevée (cold start), ce qui est inhérent à l'architecture Neon.


Quel choix pour quel contexte ?

Critère pg_lake (Snowflake) Lakebase (Databricks)
Compatibilité Postgres ✅ Binaire standard ⚠️ Surface SQL seulement
ACID sur toutes les tables ⚠️ Selon le type de table ⚠️ Dépend de Neon
Analyse de grands volumes ✅ Via DuckDB Dépend du workload
Élasticité cloud Limitée ✅ Native
Intégration Iceberg native Indirecte
Prévisibilité du comportement ✅ Plus proche du Postgres standard À valider selon vos cas limites

Choisissez pg_lake si vous avez des workloads mixtes OLTP/analytique, que vous tenez à la compatibilité comportementale de PostgreSQL, et que vos données lakehouse sont principalement en lecture avec des écritures ponctuelles.

Choisissez Lakebase si vous construisez une application cloud-native nécessitant une forte élasticité, que vous êtes déjà dans l'écosystème Databricks, et que la surface SQL PostgreSQL suffit sans dépendance au moteur interne.


Conclusion

Le terme « PostgreSQL » est devenu un label marketing autant qu'une description technique. pg_lake et Lakebase sont deux réponses valides à des problèmes différents — mais les confondre peut conduire à des choix d'architecture aux conséquences importantes sur la cohérence de vos données et les performances de vos requêtes.

Avant d'adopter l'une ou l'autre solution, posez-vous les bonnes questions : quelle est votre tolérance aux divergences comportementales par rapport à PostgreSQL standard ? Quelles sont vos garanties transactionnelles minimales ? Votre workload est-il principalement OLTP, analytique, ou mixte ?

Ces décisions d'architecture ont des impacts durables. Chez MulerTech, nous accompagnons les équipes techniques dans ces choix d'infrastructure data, notamment pour les projets Symfony nécessitant une intégration avec des systèmes de stockage distribués.

Partager cet article