Traitement des données JSON : Redis revoit sa copie
Dans sa volonté de dépasser son champ d’action d’origine, la mise en cache de données, Redis a revu et corrigé son interprétation du traitement des JSON avec la mise à jour de RedisJSON et de RediSearch.
Le 15 mars, Redis (qu’il ne faut plus appeler Redis Labs) a lancé RedisJSON 2.0, une technologie de base de données qui offre aux utilisateurs de nouvelles possibilités d’accès aux données en temps réel.
Redis développe une technologie NoSQL open source de mise en cache des données en mémoire qui sert de base à ses services commerciaux d’accélération des données et de base de données pour les entreprises sur site et dans le cloud.
L’éditeur, basé à Mountain View, en Californie, a été très actif en 2021. Il a levé 110 millions de dollars ainsi qu’un lot de fonctionnalités.
Redis a d’abord publié RedisJSON en 2017, c’est-à-dire un support pour les documents JSON (JavaScript Object Notation).
Avec la nouvelle mise à jour (en réalité lancée en novembre, Redis a publié la version 2.0.7 en mars 2022), l’éditeur entend aller au-delà du simple support de JSON pour offrir une base de données orientée documents à part entière. Celle-ci intègre la technologie RediSearch, permettant d’indexer, de requêter et de chercher les documents JSON en mémoire. Avec son édition entreprise, l’éditeur affirme que les clients peuvent profiter de ces capacités avec le même niveau de SLA et la géodistribution active-active.
Le système de Redis inclut des modules de stockage de données clé-valeur pour de multiples types de données, notamment des données orientées graphes et des séries chronologiques, ainsi que JSON, assure Sanjeev Mohan, fondateur de SanjMo, une société de conseil. Il explique que RedisJSON stocke les données JSON avec une approche qui améliore les performances de lecture et d’écriture pour permettre une haute disponibilité.
« Redis a commencé comme un cache en mémoire, mais il a régulièrement étendu ses fonctionnalités pour devenir un système de stockage de données multimodèle », rappelle-t-il.
Accélérer les capacités d’une base de données JSON in-memory
L’un des principaux objectifs de Redis est de prendre en charge l’utilisation des données en temps réel, déclare Yiftach Shoolman, directeur technique et cofondateur de l’entreprise. Cela inclut des cas d’usage comme l’analyse de la cybersécurité et la production de tableaux de bord opérationnels, entre autres.
Le module RedisJSON 1.0 initial permettait de mettre en cache et d’accélérer les données JSON. Toutefois, le CTO indique qu’il ne permettait pas aux utilisateurs de mettre à jour les données à l’aide d’expressions JSONPath.
JSONPath est un langage de requête pour JSON, inspiré de XPath pour XML mis en place par Stefan Goessner en 2007. Il permet de sélectionner et d’extraire des portions d’informations d’un document JSON. La première méthode implémentée par Redis demeure fonctionnelle, mais n’est plus frein à l’adoption pour les développeurs habitués à employer les expressions JSONPath.
En outre, RedisJSON 1.0 ne prenait pas totalement en charge l’indexation et la recherche de données stockées dans ce format.
Cela a changé avec RedisJSON 2.0, qui intègre la capacité de recherche ainsi que la possibilité d’indexer les données JSON dans le cadre d’un déploiement de bases de données Redis. Là, l’éditeur entend reproduire les fonctionnalités d’un Apache Lucene ou plus vraisemblablement d’un Elasticsearch.
Le service RedisJSON 2.0 s’intègre à RediSearch, qui s’exécute pour indexer en permanence les données JSON, précise M. Shoolman. Il faut installer les deux modules dans une même instance de la version 6.0, ou plus, de la base de données pour accéder à ses fonctionnalités.
Pour renforcer les capacités de la base de données JSON, Redis a réécrit RedisJSON 2.0 dans le langage de programmation open source Rust afin d’améliorer la sécurité et les performances. RedisJSON 1.0 était écrit en C.
L’éditeur n’a pas seulement adapté Rust. Il utilisait serde-JSON, un framework consacré à la sérialisation et la désérialisation des structures de données Rust, mais lui a finalement préféré ijson, un remplaçant bien moins gourmand en mémoire.
De la mise en cache à tous les usages
Yifatch ShoolmanDirecteur technique et cofondateur de Redis
Redis a débuté en tant que couche de mise en cache et l’une des principales approches de déploiement de la technologie de l’éditeur est l’accélération des requêtes.
Le SGBD est aussi utilisé comme une base front-end, où les données d'un système d'enregistrement sont répliquées ou mises en cache avec Redis pour améliorer les performances.
En outre, un nombre croissant d’organisations utilisent Redis comme une base de données à part entière, vante Yifatch Shoolman.
« Aujourd’hui, la majorité de nos clients n’utilisent pas seulement les fonctionnalités de mise en cache », affirme-t-il. « La mise en cache est un excellent début, mais nous permettons bien plus que cela ».
C’est également la prétention de SingleStore (MemSQL) et d’HazelCast, deux concurrents de l’éditeur né en Israël.