Benchmarking Real-Time Database Synchronisation Architectures: REST Polling, WebSocket Push, and CockroachDB CDC
Cet article présente un benchmark contrôlé comparant les architectures de polling REST, de push WebSocket et de CDC de CockroachDB pour la synchronisation de bases de données en temps réel, révélant que si le push WebSocket offre la latence médiane la plus faible et que le polling REST fournit des délais bornés prévisibles, le CDC offre des médianes compétitives mais souffre d'une latence de queue significative due au batching et à des incompatibilités de protocoles spécifiques.
Article original sous licence CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Dans le monde du logiciel moderne, il existe un désir croissant pour des applications qui donnent l'impression de vivre sur votre appareil, même lorsque vous n'êtes pas connecté à Internet. Cette approche, souvent appelée logiciel « local-first » (priorité au local), vous permet de modifier un document ou de mettre à jour une liste en mode hors ligne, les modifications attendant d'être envoyées vers un serveur central une fois que votre connexion est rétablie. Le défi réside dans le moment où la connexion est restaurée : comment l'ordinateur décide-t-il quelle version des données est la bonne, et à quelle vitesse peut-il mettre à jour le serveur central sans faire attendre l'utilisateur ? Pour que cela fonctionne de manière fluide, le système a besoin d'un moyen fiable pour écouter les nouvelles informations et les livrer instantanément. Si la mise à jour est trop lente, l'utilisateur ressent une latence ; si le système est trop complexe, il épuise la batterie ou plante. La question fondamentale pour les ingénieurs est de savoir comment construire ce mécanisme d'écoute : l'appareil doit-il demander constamment au serveur si quelque chose a changé, le serveur doit-il diffuser les changements immédiatement, ou la base de données elle-même doit-elle tenir un journal de chaque action pour être lu plus tard ?
Un chercheur de l'Institut indien de technologie de Kharagpur s'est mis en demeure de tester ces trois stratégies courantes côte à côte pour voir laquelle est la plus performante dans un environnement contrôlé. L'étude a comparé une méthode où le client vérifie les mises à jour à intervalles de temps fixes, une méthode où le serveur pousse les changements instantanément via une connexion permanente, et une méthode où la base de données diffuse un journal de chaque changement aux abonnés. Pour garantir un test équitable, le chercheur a construit trois systèmes distincts qui semblaient identiques pour l'utilisateur mais utilisaient des rouages internes différents. Un système utilisait une base de données standard avec une simple boucle de « pointage ». Un autre utilisait la même base de données mais y ajoutait un déclencheur qui émettait un signal dès qu'un changement se produisait. Le troisième système utilisait une base de données distribuée différente, conçue pour diffuser son propre historique. L'objectif était de mesurer le temps exact nécessaire pour qu'un changement effectué par un utilisateur traverse le système et apparaisse sur l'écran de l'auditeur, en testant tout, d'un utilisateur unique jusqu'à cinquante utilisateurs écrivant simultanément.
Les résultats ont brossé un tableau clair de la manière dont chaque méthode se comporte sous pression. Le système qui reposait sur le serveur diffusant les changements instantanément via une connexion permanente s'est avéré être le plus rapide. Dans les meilleurs cas, un changement apparaissait sur l'écran de l'auditeur en seulement deux millisecondes, et même lorsque cinquante personnes écrivaient en même temps, le délai dépassait rarement soixante-trois millisecondes. Cette méthode maintenait sa vitesse de manière remarquablement constante, les mises à jour les plus lentes arrivant tout de même en moins d'un quart de seconde. La méthode reposant sur le client demandant des mises à jour toutes les cent millisecondes était prévisible mais plus lente. Parce que le client devait attendre son tour pour demander, le délai moyen était d'environ soixante millisecondes, mais il ne pouvait jamais être plus rapide que le temps entre les vérifications. Lorsque de nombreux utilisateurs écrivaient simultanément, ce temps d'attente augmentait, poussant le délai moyen à plus de cent millisecondes. Le système utilisant le journal interne de changements de la base de données a montré une performance mitigée. Bien que la mise à jour typique soit arrivée rapidement, souvent en moins d'une seconde, le système a souffert de retards sévères pour les quelques mises à jour les plus lentes. Occasionnellement, un changement mettait plus de deux secondes à arriver, et dans certains cas, le délai s'étirait à plus de trois secondes et demie.
Le chercheur a découvert que les mises à jour les plus lentes dans le système basé sur le journal n'étaient pas un défaut de l'idée même de journalisation des changements, mais le résultat de la manière dont le logiciel spécifique était connecté. Le système utilisait une solution de contournement pour lire le journal de la base de données car l'outil de connexion standard ne parlait pas correctement la langue de la base de données. Cette solution de contournement nécessitait de démarrer un nouveau processus chaque fois que la connexion était interrompue, ce qui ajoutait une pénalité lourde d'un à quatre secondes au délai. Sans cet obstacle technique spécifique, la méthode basée sur le journal aurait pu bien mieux performer, mais dans ce test, les longs délais la rendaient inappropriée pour des applications où les utilisateurs attendent un retour instantané. L'étude a également confirmé une règle simple pour la méthode de vérification : plus vous attendez entre les vérifications, plus le délai moyen augmente. Si un système vérifie toutes les cinquante millisecondes, l'attente moyenne est d'environ trente-six millisecondes ; s'il attend cinq cents millisecondes entre les vérifications, l'attente moyenne bondit à plus de trois cents millisecondes.
Ces conclusions offrent un guide pratique pour construire des logiciels qui doivent rester synchronisés. Pour les applications où la vitesse est critique, comme les outils d'édition collaborative où les utilisateurs tapent ensemble en temps réel, la méthode où le serveur pousse les changements instantanément est le choix évident. Elle offre le délai le plus bas et la performance la plus constante, même lorsque de nombreuses personnes utilisent le système simultanément. La méthode où le client vérifie les mises à jour à intervalles réguliers est une option solide pour des applications plus simples où un délai de quelques centaines de millisecondes est acceptable, ou là où maintenir la connexion ouverte est difficile, comme sur des appareils mobiles tentant d'économiser la batterie. La méthode qui diffuse le journal de la base de données est puissante pour déplacer de grandes quantités de données ou créer des sauvegardes, mais l'implémentation spécifique testée ici était trop lente et imprévisible pour un usage interactif. L'étude conclut que bien que les trois méthodes fonctionnent, le meilleur choix dépend entièrement de la priorité accordée à la réactivité instantanée ou à la simplicité opérationnelle.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.