Alex - stock.adobe.com

SingleStoreDB 8 embarque WebAssembly

L’éditeur met à jour sa base de données HTAP avec une nouvelle technologie d’accélération des requêtes de données JSON et une prise en charge de WebAssembly.

Cette version marque la plus grande mise à jour de SingleStoreDB depuis 2019. Il y a trois ans, SingleStore était encore connu sous le nom de MemSQL.

MemSQL 7.0 en 2019 a introduit la technologie SingleStore. Celle-ci offre des capacités transactionnelles et analytiques dans la base de données unifiée. L’éditeur a changé de nom pour devenir SingleStore en 2020 et a régulièrement développé sa plateforme.

Avec SingleStoreDB 8.0, l’éditeur ne veut pas « seulement » prendre en charge les charges de travail analytiques et transactionnelles, ainsi que les données JSON. SingleStore cherche maintenant à aider les développeurs à créer plus facilement des applications, avec le support de WebAssembly (Wasm).

Aller sur les terres de MongoDB et d’Oracle

SingleStore vise désormais le marché des bases de données orientées documents. Il offre la possibilité de rendre les tables sous forme de documents JSON et de capturer les données JSON dans des colonnes spécialement formatées pour l’analyse approfondie à grande vitesse, selon Carl Olofson, analyste chez IDC.

L’analyste rappelle qu’IDC a défini ce concept par l’expression « traitement analytique transactionnel hybride (HTAP) », tandis que Forrester Research le qualifie de translytique.

La base de données du fournisseur a d’abord été pensée comme un système de traitement des transactions en ligne en mémoire avant de devenir ce système HTAP.

Pour cela, SingleStoreDB repose sur une architecture de données avec une optimisation basée sur les lignes et les colonnes pour accélérer les requêtes, rappelle Shireesh Thota, vice-président senior de l’ingénierie chez SingleStore. Avec la version 8.0, SingleStore optimise également la façon dont il traite les données JSON dans les colonnes.

L’éditeur a exploité des techniques d’optimisation du stockage et d’indexation des données JSON. Le résultat de ces améliorations est une augmentation des performances pour les requêtes contre les données JSON qui peuvent être jusqu’à 100 fois plus rapides que les versions précédentes de SingleStoreDB, selon Shireesh Thota.

« L’idée de pouvoir exécuter des requêtes analytiques sur des données opérationnelles en direct prend de l’ampleur et devient un attribut important. »
Carl OlofsonAnalyste, IDC

« L’idée de pouvoir exécuter des requêtes analytiques sur des données opérationnelles en direct prend de l’ampleur et devient un attribut important, donc la capacité de SingleStore à répondre à ce concept devrait également être un atout », assure Carl Olofson.

SingleStore est en concurrence avec un certain nombre de bases de données translytiques, notamment AlloyDB de Google, MySQL HeatWave d’Oracle et PingCAP. L’un des principaux défis de SingleStoreDB et des autres acteurs du marché est de permettre un niveau de performance équivalent pour les charges de travail analytiques et transactionnelles.

SingleStore adopte Wasm

Quant à WebAssembly, il s’agit d’un format d’instruction binaire pouvant être compilé pour s’exécuter sur une machine virtuelle généralement intégrée à un navigateur Web.

Même si la machine virtuelle d’un navigateur Web a été pensée pour le code JavaScript, Wasm permet d’exécuter du code C, C++, Rust ou Python pratiquement à la même vitesse que si le code était compilé pour un client lourd.

Mais Wasm a été adapté pour les « environnements non-Web » ou de grandes applications, comme une base de données.

Dans une base de données, les capacités personnalisées sont souvent intégrées dans des fonctions définies par l’utilisateur (UDF). Le support de Wasm va au-delà des UDFs et fournit une nouvelle forme d’extensibilité pour les développeurs exploitant SingleStoreDB, avance Shireesh Thota.

Avec les UDFs, les développeurs écrivent la logique de l’application dans le langage de requête SQL. En revanche, la promesse de Wasm est qu’il peut justement supporter plusieurs langages, indique-t-il.

Avec son intégration, l’implémentation Wasm de SingleStoreDB 8.0 supportera le code écrit en C, C++ et Rust.

Concrètement, il s’agit de faire passer les binaires Wasm pour des fonctions UDF ou des TVF (User Defined Table-Valued Functions).

À la création d’une fonction Wasm, il convient de sélectionner l’interface binaire d’application (Application Binary Interface ou ABI). De manière générale, celle-ci définit la manière dont les programmes écrits dans différents langages de programmation peuvent communiquer entre eux en appelant des fonctions et en passant des paramètres. Ici, l’ABI définit la manière dont les fonctions Wasm sont appelées par des requêtes SQL.

Selon Sireesh Thota, l’éditeur prévoit d’ajouter le support de Python dans une future mise à jour de SingleStoreDB.

SingleStore supporte l’ABI « basique » de Wasm et, par défaut, l’ABI « canonique ». L’ABI de base prend en charge les entiers en 32 bits et 64 bits ainsi que les nombres à virgules flottantes. Cette dernière supporte un plus grand nombre de types de données.

Autre point à noter, une fois importée dans la base de données, une fonction Wasm ne peut ni être extraite de SingleStoreDB ni être obtenue par rétro-ingénierie. La portabilité, grand avantage de WebAssembly, est à sens unique. Il faudra donc penser à faire des copies des binaires avant de les implanter.

Pour approfondir sur Base de données