ElectricSQL, une synchronisation active-active Postgres vers SQLite pour les applications "local-first", sort sa version v0.6, r�solvant la r�plication partielle dynamique.

Voici la version v0.6 d'ElectricSQL. Une couche de synchronisation "local-first" (local d'abord) qu'on peut utiliser pour construire des applications r�actives, en temps r�el, capables de fonctionner hors ligne, directement sur Postgres. Cette version est centr�e sur Postgres avec un mod�le de synchronisation bas� sur la forme et une biblioth�que d'acc�s aux donn�es s�curis�e.

Electric - La synchronisation pour les applications modernes

ElectricSQL est une couche de synchronisation local-first qui fonctionne avec votre mod�le de donn�es existant et r�sout la r�plication partielle dynamique. Elle prend en charge l'�volution r�elle des sch�mas et fournit des API de synchronisation et d'acc�s aux donn�es expressives et s�res.

Pour �tre honn�te, nous voulions aussi nous appuyer sur nos recherches sur la pr�servation des invariants dans un syst�me de base de donn�es AP pour faire du vrai SQL avec int�grit� dans un environnement local-first. De plus, nous voulions construire un syst�me qui soit open source et con�u pour l'auto-h�bergement, de sorte qu'il soit facile � adopter sans le verrouillage que l'on obtient avec les services propri�taires et h�berg�s. Nous n'en sommes qu'au d�but, mais le code est en place et le syst�me fonctionne. Vous pouvez l'utiliser d�s aujourd'hui pour cr�er des applications r�actives, en temps r�el et en local. En utilisant Postgres et SQLite standard.

Par couche de synchronisation, nous entendons une r�plication active-active bidirectionnelle avec une coh�rence transactionnelle causale+ entre Postgres dans le nuage (g�n�ralement !) et SQLite sur l'appareil local.
Les applications lisent et �crivent des donn�es directement depuis et vers une base de donn�es SQLite locale int�gr�e. Les �critures d�clenchent imm�diatement la r�activit�, de sorte que les donn�es sont visibles et que les composants se redessinent instantan�ment. Les donn�es sont ensuite synchronis�es en arri�re-plan par Postgres, en temps r�el, entre les utilisateurs et les appareils.

Par cons�quent, les applications cr��es avec Electric sont instantan�ment utilisables, supportent naturellement la collaboration multi-utilisateurs en temps r�el et fonctionnent par d�faut hors ligne. Comme il s'agit d'un syst�me sans conflit et sans retour en arri�re, les applications g�rent naturellement la concurrence et les �critures qui se chevauchent.


Directement sur Postgres

Electric est construit sur le logiciel libre standard Postgres. Postgres est la base de donn�es centrale, la source de durabilit� et le plan de contr�le pour g�rer la propagation des donn�es (DML) et le sch�ma de la base de donn�es (DDL) � vos applications local-first. Ce sch�ma est ensuite utilis� pour g�n�rer un client de base de donn�es � s�curit� de type avec prise en charge des invariants relationnels.

Electric est con�u pour fonctionner avec les mod�les de donn�es Postgres existants. Cela signifie qu'il fonctionne aussi bien pour les nouvelles applications que pour les applications existantes. L'objectif est de pouvoir int�grer Electric � Postgres pour un acc�s local instantan�, de la m�me mani�re que vous pouvez int�grer Hasura ou PostgREST pour des API GraphQL ou REST instantan�es.

Invariants relationnels standard

L'un des principaux objectifs de conception d'ElectricSQL est de fournir un v�ritable support SQL.

Nous en sommes encore aux premi�res �tapes du d�veloppement. Pour l'instant, par exemple, la prise en charge des invariants est limit�e � l'int�grit� r�f�rentielle � l'aide de compensations. Cependant, notre objectif est de supporter*:
  • tous les types de donn�es Postgres int�gr�s, les types de donn�es d'extension les plus courants et un m�canisme d'extension pour prendre en charge des types de donn�es arbitraires
  • tous les invariants relationnels, y compris l'int�grit� r�f�rentielle, l'int�grit� r�f�rentielle � travers les fronti�res de r�plication, les contraintes uniques et les contraintes de v�rification.

Nous nous appuyons ici sur des recherches dont nous sommes les auteurs et que nous mettons en �uvre sous la forme de Rich-CRDT.
R�plication partielle dynamique

Strat�gies de synchronisation

Lorsque vous construisez des applications locales ou hors ligne, vous pouvez choisir d'employer un certain nombre de strat�gies de synchronisation. Des requ�tes �pingl�es aux abonnements en direct, en passant par le filtrage bas� sur les lignes ou sur les sch�mas.

Nom : 1.jpg
Affichages : 65133
Taille : 93,4 Ko

Avec Electric, nous avons travaill� dur pour concevoir un syst�me o� vous pouvez exprimer tous ces diff�rents mod�les. Pour ce faire, nous utilisons une primitive appel�e Shapes.
Synchronisation bas�e sur les formes

Une forme est un ensemble de donn�es li�es qui sont synchronis�es sur l'appareil local. Elle est d�finie par :
  • une table, dans votre sch�ma DDL �lectrifi�, comme les projets
  • une requête, avec des clauses where utilis�es pour filtrer les lignes de cette table
  • un arbre d'inclusion, un graphe acyclique dirig� de donn�es li�es (comme le graphe d'association que vous pourriez inclure avec une requ�te ORM).


Vous pouvez synchroniser des formes larges et peu profondes, telles qu'un petit ensemble de colonnes provenant de toutes les lignes d'une table. Vous pouvez synchroniser des formes imbriqu�es profondes, telles qu'un projet individuel avec tout son contenu connexe.

Avec cette version v0.6, Electric publie la premi�re it�ration de l'impl�mentation de ce syst�me. L'impl�mentation actuelle :
  • fournit la fonction s�curis�e sync()
  • charge efficacement les formes
  • d�duplique les formes qui se chevauchent
  • maintient des abonnements de formes r�silients et persistants

Les where-clauses filtr�es et les include-trees sont � venir dans la v0.6. Apr�s cela, nous �tendrons la s�mantique de l'abonnement et de la r�tention et nous nous pencherons sur la prise en charge de la segmentation des donn�es.
Nom : 2.jpg
Affichages : 4492
Taille : 37,2 Ko

Des applications modernes, locales-first

Nous esp�rons que cela vous donne une id�e de la version v0.6 d'ElectricSQL. C'est une synchronisation pour les applications modernes. Par les inventeurs des CRDT. Que vous pouvez utiliser pour construire des applications r�actives, en temps r�el, locales d'abord en utilisant des technologies open-source standard.
Avec ElectricSQL, vous obtiendrez des applications qui sont :
  • rapides, instantan�es : sans d�calage ni chargement de spinners
  • naturellement en temps r�el : avec un support natif pour la collaboration multi-utilisateurs
  • naturellement hors ligne : avec des garanties de simultan�it� et d'int�grit� sans conflit
  • naturellement local-first : avec la propri�t� des donn�es int�gr�e et la synchronisation dans le nuage en option.

Ainsi, vous utilisez des technologies open-source standard :
  • Postgres open source standard pour le backend
  • SQLite open source standard (avec prise en charge compl�te de SQL) sur le front-end

Li� � un protocole de socket web Protobuf open source et � un service de synchronisation Elixir open source qui tire parti de la concurrence et de la r�silience de BEAM.

Source : Electric

Et vous ?

Que pensez-vous de cette mise � jour de ElectricSQL ?

Voir aussi :

PostgreSQL 16 est disponible, la derni�re version de la base de donn�es open source apporte des am�liorations au parall�lisme des requ�tes et � la r�plication logique

IvorySQL : un PostgreSQL open source compatible avec Oracle, pourrait r�pondre au besoin de migrer des applications Oracle vers l'open source Postgres

Google aurait pour objectif de s'emparer d'une partie des charges de travail d'Oracle en proposant un service de migration vers PostgreSQL gr�ce � un ensemble de services et d'outils d'automatisation