SQLite - la limace de banane des bases de données Embarqué
Au début du mois, j'ai lancé une série d'articles consacrés à SQLite. Le premier article examinait les avantages offerts par SQLite par rapport aux fichiers plats et aux bases de données SQL d'entreprise, plus lourdes à gérer – et il est vrai que SQLite présente des avantages indéniables par rapport à ces deux solutions. Jusqu'à un certain point. Et ce point, c'était il y a cinq ans.
Voici le problème : si vous êtes développeur d’applications mobiles ou IoT, ou si vous étendez vos activités du cloud vers la périphérie avec des applications et des données distribuées,gestion des données locale Embarqué gestion des données une fonctionnalité essentielle, et c’est là que SQLite s’est distingué pendant des années. Mais sigestion des données locale et Embarqué gestion des données nécessaire – voire cruciale – pour gestion des données modernes gestion des données en périphérie, telle qu’elle est mise en œuvre dans SQLite, elle s’avère insuffisante. gestion des données moderne gestion des données en périphérie gestion des données la capacité de traiter et d'analyser les données localement, de les partager en peer-to-peer, de les transférer entre des passerelles, d'autres machines intelligentes, et même de les renvoyer vers le cloud – et SQLite n'a jamais été conçu pour répondre à ces exigences.
Mettons de côté les défis posés par les exigences en matière de données partagées et distribuées – nous y reviendrons dans le prochain article – et examinons simplement les limites de SQLite dans le domaine du traitement des données locales, en commençant par l'une des plus importantes : les performances.
SQLite est tout simplement lent.
Il y a dix-huit mois, nous avons réalisé des tests de performances sur Actian Zen — notre base de données Embarqué « Zero-DBA » Embarqué — par rapport à la dernière version de SQLite, et avons constaté que Zen était jusqu’à deux fois plus rapide, selon l’opération effectuée. En fait, pour les suppressions indexées, elle était trois fois plus rapide. Nous avons effectué une comparaison à conditions égales, en exécutant les deux sur un Raspberry Pi 3, un petit ordinateur monocarte basé sur ARM que vous pouvez acheter sur Amazon pour moins de 50 $. Zen Core et SQLite sont tous deux gratuits, et vous pouvez effectuer ce test vous-même.
Bon, d’accord, la lenteur de SQLite n’est pas vraiment une nouveauté. Tout le monde dans la communauté SQLite sait que SQLite est d’une lenteur exaspérante. Alors pourquoi est-il resté si populaire ? Concrètement, c’était en grande partie la seule option disponible. Il y a trois raisons à cela. Premièrement, c’est un logiciel open source qui existe depuis plus de deux décennies, il est donc très connu. Deuxièmement, il est intégré à de nombreux kits de développement open source, notamment Android. Enfin, de nombreux fournisseurs de bases de données ont, à un moment ou à un autre, repackagé et rebaptisé SQLite en tant qu’édition « mobile » (voir MongoDB et Couchbase). Il existe même quelques start-ups qui apposent littéralement leur marque sur SQLite et vendent des services autour de celui-ci comme seule offre sur le marché.
C'est là que nous revenons à ces limites : les performances médiocres qui suffisaient il y a cinq ans ne seront tout simplement plus suffisantes pour les cinq prochaines années (sans parler de la période qui suivra). Et les problèmes de performances de SQLite ne feront que s'aggraver : les gestion des données à la périphérie deviendront de plus en plus complexes avec le temps, même pour Embarqué .
Il faut tenir compte du besoin croissant de persistance des données au niveau local. Il ne s'agit plus seulement d'une simple mise en cache. La persistance des données est désormais nécessaire pour le traitement local des données, très gourmand en ressources, et pour l'apprentissage automatique non supervisé. Dans ces scénarios, nous assistons à un afflux massif de streaming entrant que SQLite n'est tout simplement pas assez robuste pour gérer. De plus, nous constatons une augmentation des besoins en calcul impliquant requête, l'extraction et l'analyse de modèles existants provenant de la base de données locale et/ou de celles de pairs externes ou de passerelles en amont.
Et il ne s'agit pas seulement d'une question de volume de streaming ou de complexité des analyses effectuées. Il y a également le problème de plusieurs applications utilisant simultanément le même ensemble de données – ou même d'un seul consommateur en amont s'abonnant et copiant des données provenant de plusieurs éditeurs en aval. Ces deux cas exigent un niveau de simultanéité , d'un point de vue architectural, dépasse les capacités de SQLite. Au mieux, on peut dire que SQLite tente de simuler simultanéité verrouillant l'ensemble de la table de données pour tous les utilisateurs autres que celui qui est en train de la lire ou de l'écrire – même si cette lecture ou cette écriture ne concerne qu'une seule ligne – au lieu du verrouillage granulaire qu'une véritable base de données SQL conforme à ACID devrait fournir. Il en résulte que SQLite crée goulots d’étranglement sérieux goulots d’étranglement les demandes et les volumes de données augmentent dans les cas d’utilisation concrets de l’IoT et des appareils mobiles.
Augmenter la puissance de la plateforme informatique qui sous-tend SQLite n'améliorera que très modestement les performances de ce vétéran. Ce dont gestion des données moderne gestion des données en périphérie gestion des données , c'est d'un guépard, alors que SQLite n'est qu'un escargot.
Et aucun de ces scénarios n'est le fruit d'un avenir lointain. Les entreprises sont déjà confrontées à ces défis aujourd'hui, dans des contextes impliquant des réseaux IoT comptant des milliers de capteurs et de passerelles en amont. Certains de nos concurrents sont eux aussi confrontés à ces défis, et ils sont de plus en plus nombreux à vouloir abandonner SQLite comme moteur mobile.
Si vous avez comparé SQLite à d'autres bases de données ou constaté une évolution des performances de votre application lors du passage des fichiers plats à SQLite, n'hésitez pas à nous en faire part. Vous pouvez m'écrire à l'adresse lewis.carr@actian.com.
Enfin, si vous êtes prêt à reconsidérer SQLite, découvrez Actian Zen. Vous pouvez également tester gratuitement Zen Core, qui est exempt de droits d'auteur pour le développement et la distribution.