SQLite - la limace de banane des bases de données Embarqué
Actian Corporation
29 avril 2020

Au début du mois, j'ai lancé une série de blogs sur SQLite. Le premier examinait les avantages de SQLite par rapport aux fichiers plats et aux bases de données SQL d'entreprise - et il offre effectivement des avantages distincts par rapport à ces deux types de bases de données. Jusqu'à un certain point. Et ce point, c'était il y a cinq ans.
Voici le problème : si vous êtes un développeur mobile ou IoT, ou si vous vous étendez du cloud à la périphérie avec des applications et des données distribuées, lagestion des données locale et Embarqué gestion des données est une capacité critique, et c'est là que SQLite s'est distingué pendant des années. Mais si lagestion des données locale et Embarqué gestion des données est nécessaire - voire critique - pour les systèmes modernes de gestion des données en périphérie, telle qu'elle est mise en œuvre dans SQLite, elle est insuffisante. La gestion des données moderne gestion des données exige la capacité de traiter et d'analyser les données localement, de les partager d'égal à égal, de déplacer les données entre les passerelles, d'autres machines intelligentes, et même de les renvoyer dans le nuage - et SQLite n'a jamais été conçu pour répondre à ces exigences.
Mettant de côté les défis posés par les exigences en matière de données partagées et distribuées - nous les aborderons dans le prochain article - examinons les limites de SQLite dans le domaine du traitement des données locales, en commençant par l'une des plus importantes, à savoir les performances.
SQLite est tout simplement lent.
Il y a dix-huit mois, nous avons effectué des tests de performance d'Actian Zen - notre base de données Embarqué Nano Zéro DBA - contre ladernière distribution SQLite et avons constaté que Zen était plus rapide de deux ordres de grandeur, en fonction de l'opération exécutée. Pour les suppressions indexées, Zen était plus rapide de trois ordres de grandeur. Nous avons comparé les deux logiciels sur un Raspberry Pi 3, un petit ordinateur monocarte à base d'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.
D'accord, la lenteur de SQLite n'est pas vraiment une nouvelle. Tout le monde dans la communauté SQLite sait que SQLite est douloureusement lent. Alors pourquoi est-il resté si populaire ? D'un point de vue pratique, il a largement été le seul jeu en ville. Il y a trois raisons à cela. Tout d'abord, il s'agit d'un logiciel libre qui existe depuis plus de vingt ans et qui est donc largement connu. Deuxièmement, il est fourni avec 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, emballé et rebaptisé SQLite en tant qu'édition "mobile" (lire : MongoDB et Couchbase). Il existe même quelques startups qui apposent littéralement leur étiquette sur SQLite et vendent des services autour de cette base comme seule offre sur le marché.
C'est ici que nous revenons à ces limites : Les performances léthargiques qui étaient suffisantes il y a cinq ans ne le seront tout simplement pas pour les cinq prochaines années (et encore moins pour les années suivantes). Et les problèmes de performance de SQLite ne feront qu'empirer : les tâches de gestion des données à l'Edge deviendront de plus en plus difficiles au fil du temps, même pour les applications Embarqué .
Considérez le besoin accru de persistance des données locales. Il ne s'agit plus d'une simple mise en cache. Aujourd'hui, la persistance des données est nécessaire pour le traitement des données locales à forte intensité de calcul et pour l'apprentissage automatique non supervisé. Dans ces scénarios, nous assistons à un déluge de données streaming entrantes que SQLite n'est tout simplement pas assez robuste pour gérer. En outre, nous constatons une augmentation des demandes de calcul impliquant la requête, l'extraction et l'analyse de modèles existants à partir de la base de données locale et/ou de celles de pairs externes ou de passerelles en amont.
Et ce n'est pas seulement une question de volume de données streaming ou de sophistication des analyses effectuées. Il y a aussi le problème des applications multiples qui utilisent simultanément le même ensemble de données - ou même un seul consommateur en amont qui souscrit et copie des données de plusieurs éditeurs en aval. Ces deux cas requièrent un niveau de simultanéité qui, du point de vue de l'architecture, est hors de portée de SQLite. Au mieux, on peut dire que SQLite tente de simuler la simultanéité avec un verrou sur l'ensemble de la table de données pour tous les utilisateurs autres que celui qui est en train de lire ou d'écrire dessus - même si cette lecture ou cette écriture ne concerne qu'une seule ligne - au lieu du verrou granulaire qu'une véritable base de données SQL conforme à ACID devrait fournir. Le résultat final est que SQLite crée de sérieux goulots d'étranglement lorsque les demandes et les volumes de données augmentent dans les cas d'utilisation pratiques de l'IoT et du mobile.
L'augmentation de la puissance de la plate-forme de calcul derrière SQLite n'améliorera les performances de cet outil vieillissant que dans une certaine mesure. Ce dont la gestion des données moderne gestion des données a besoin, c'est d'un guépard, et ce que nous avons dans SQLite, c'est une limace de banane.
Et aucun de ces scénarios n'est une scène d'un futur lointain. Les entreprises rencontrent ces défis aujourd'hui dans des situations impliquant des grilles IoT avec des milliers de capteurs et des passerelles en amont. Certains de nos concurrents sont également confrontés à ces défis, car ils sont de plus en plus nombreux à vouloir abandonner SQLite comme moteur mobile.
Si vous avez testé SQLite par rapport à d'autres bases de données ou si vous avez constaté un changement dans les performances de votre application lorsque vous êtes passé de l'utilisation de fichiers plats à SQLite, n'hésitez pas à nous le faire savoir. N'hésitez pas à m'envoyer un message à l'adresse lewis.carr@actian.com.
En attendant, je vous invite à lire mon prochain blog sur ce que l'utilisation quasi omniprésente de SQLite comme base de données mobile a signifié pour le partage des données et le mouvement du mobile et de l'IoT à la périphérie vers le nuage et le centre de données.
Enfin, si vous êtes prêt à reconsidérer SQLite, renseignez-vous sur Actian Zen. Vous pouvez également vous familiariser gratuitement avec Zen Core, qui est libre de droits pour le développement et la distribution.
S'abonner au blog d'Actian
Abonnez-vous au blogue d'Actian pour recevoir des renseignements sur les données directement à vous.
- Restez informé - Recevez les dernières informations sur l'analyse des données directement dans votre boîte de réception.
- Ne manquez jamais un article - Vous recevrez des mises à jour automatiques par courrier électronique pour vous avertir de la publication de nouveaux articles.
- Tout dépend de vous - Modifiez vos préférences de livraison en fonction de vos besoins.