Arrêtez de construire des bases de données
(sqlsync.dev)La complexité de la gestion des données
- Les ingénieurs frontend finissent par se rendre compte de la nécessité de mettre en cache les données d’API.
- Au départ, tout commence par un simple stockage de données, mais à mesure que les demandes de fonctionnalités augmentent, on en vient à implémenter un cache de données, des index manuels, des mutations optimistes (
optimistic mutations), une invalidation récursive du cache, etc. - Ces fonctionnalités ressemblent au fonctionnement interne d’une base de données et, dans les applications frontend complexes, on finit par construire une base de données spécialisée pour le domaine.
Les bases du cache
- Tout commence par le stockage du résultat des requêtes API dans des variables locales.
- Dans les applications web utilisant des frameworks déclaratifs, les données sont stockées dans des variables afin d’éviter des requêtes API inutiles.
- L’étape suivante consiste à déplacer le cache vers une couche plus haute ou à l’externaliser en dehors de l’arbre de l’UI.
Accélérer grâce aux index
- En organisant les données d’une certaine manière, on peut réduire le travail de l’application et améliorer l’expérience utilisateur.
- On constate que l’optimisation des données côté frontend ressemble au fonctionnement interne d’un moteur de base de données.
- La structure des données est améliorée en stockant les données par ID et en créant des index permettant de retrouver rapidement des éléments par date.
Mutations optimistes
- Il s’agit de simuler localement l’effet d’une action donnée sans attendre la réponse du serveur.
- Cela donne l’impression que l’interface utilisateur réagit immédiatement, mais si le serveur renvoie un résultat différent, l’UI doit annuler les modifications.
- Les défis incluent la duplication de la logique entre client et serveur, la gestion d’erreurs asynchrones et l’ajustement des changements après redémarrage de l’application.
Invalidation récursive du cache
- Les données apparaissent à plusieurs endroits du cache, et il faut l’invalider correctement après une mise à jour afin qu’il reste cohérent avec le serveur.
- L’UI doit savoir quelles parties du cache sont concernées par chaque mutation, ce qui peut devenir fragile à grande échelle.
- Combinée aux mutations optimistes, cette situation rend encore plus difficile la duplication de la logique serveur côté client afin d’anticiper les changements du serveur.
En train de construire une base de données ?
- Dans les applications frontend suffisamment complexes, on finit par construire de nombreuses fonctionnalités de gestion des données, ce qui détourne du temps consacré à satisfaire les utilisateurs et à résoudre les problèmes métier.
- Une alternative est proposée : une stack de base de données optimisée pour le frontend.
Présentation de SQLSync
- SQLSync a été développé comme une stack de base de données optimisée pour le frontend, basée sur SQLite.
- SQLSync est conçu pour résoudre les problèmes de gestion des données et permettre aux développeurs de se concentrer sur les fonctionnalités propres à leur application.
- SQLSync fournit un cache durable, toutes les capacités de SQLite, des mutations optimistes, une invalidation intelligente du cache et des requêtes réactives.
L’avis de GN⁺
Le point le plus important de cet article est le phénomène par lequel, à mesure que la complexité des applications frontend augmente, les développeurs finissent par implémenter eux-mêmes des fonctionnalités similaires à celles d’une base de données. Ce travail consomme leur temps et les éloigne du développement de fonctionnalités qui apportent une vraie valeur aux utilisateurs. Des stacks de base de données optimisées pour le frontend, comme SQLSync, proposent une approche innovante pour résoudre ce problème. Cet article est intéressant parce qu’il met en lumière un problème fondamental des approches traditionnelles de gestion des données et explore une nouvelle solution permettant aux développeurs de travailler plus efficacement.
1 commentaires
Avis Hacker News
Compréhension d’un ami créateur de projet
Expérience avec un logiciel de gestion de projet dans une ancienne entreprise
Les problèmes qui disparaissent quand on abandonne les SPA
Avis du créateur de SQLSync
Ne pas donner aux utilisateurs un modèle mental différent de la réalité
Le principe selon lequel ce qui est mesurable est géré, et le sophisme des coûts irrécupérables
Le problème de la synchronisation d’état entre client et serveur
Comparaison avec les bibliothèques ORM
Différence entre les bases de données frontend et backend
Tentative similaire avec SignalDB