Gestion des données

SQLite - la limace de banane des bases de données Embarqué

Actian Corporation

29 avril 2020

banane et limace de papier comme représentation de sqlite

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.

logo avatar actian

À propos d'Actian Corporation

Actian facilite l'accès aux données. Notre plateforme de données simplifie la façon dont les gens connectent, gèrent et analysent les données dans les environnements cloud, hybrides et sur site . Avec des décennies d'expérience dans la gestion des données et l'analyse, Actian fournit des solutions de de haute performance qui permettent aux entreprises de prendre des décisions basées sur les données. Actian est reconnu par les principaux analystes et a reçu des prix de l'industrie pour sa performance et son innovation. Nos équipes partagent des cas d'utilisation éprouvés lors de conférences (par exemple, Strata Data) et contribuent à des projets à code source ouvert. Sur le blog d'Actian, nous abordons des sujets tels que l'ingestion de données en temps réel, l'analyse de données, la gouvernance données, la gestion des données, la qualité des données, l'intelligence des données et l'analyse pilotée par l'IA.