Déplacez-vous sur Memcached et Redis, voici Hollow de Netflix

Après deux ans d'utilisation interne, Netflix propose un nouveau projet open source comme une option puissante pour mettre en cache des ensembles de données qui changent constamment.

Hollow est une bibliothèque et un ensemble d'outils Java destinés à la mise en cache en mémoire d'ensembles de données d'une taille allant jusqu'à plusieurs gigaoctets. Netflix dit que l'objectif de Hollow est triple: il est destiné à être plus efficace pour stocker les données; il peut fournir des outils pour générer automatiquement des API pour un accès pratique aux données; et il peut analyser automatiquement les modèles d'utilisation des données pour se synchroniser plus efficacement avec le back-end.

Gardons ça entre nous

La plupart des scénarios de mise en cache des données sur un système où elles ne sont pas stockées - un système «consommateur» plutôt qu'un système «producteur» - impliquent l'utilisation d'un produit comme Memcached ou Redis. Hollow rappelle les deux produits car il utilise un stockage en mémoire pour un accès rapide, mais ce n'est pas un véritable magasin de données comme Redis.

Contrairement à de nombreux autres systèmes de mise en cache de données, Hollow est destiné à être couplé à un ensemble de données spécifique - un schéma donné avec certains champs, généralement un flux JSON. Cela nécessite un travail de préparation, bien que Hollow fournisse des outils pour automatiser en partie le processus. La raison de le faire: Hollow peut stocker les données en mémoire sous forme de blocs de longueur fixe, fortement typés qui ne sont pas soumis au garbage collection de Java. Par conséquent, leur accès est plus rapide que les objets Java classiques.

Un autre avantage supposé de Hollow est qu'il fournit une gamme d'outils pour travailler avec les données. Une fois que vous avez défini un schéma pour les données, Hollow peut automatiquement produire une API Java qui peut fournir des données de saisie semi-automatique à un IDE. Les données peuvent également être suivies à mesure qu'elles changent, de sorte que les développeurs ont accès à des instantanés ponctuels, aux différences entre les instantanés et aux restaurations de données.

Plus rapide tout autour

Un grand nombre des avantages que Netflix prétend pour Hollow impliquent une efficacité opérationnelle de base, à savoir un temps de démarrage plus rapide pour les serveurs et moins de désabonnement de la mémoire. Mais les outils de modélisation et de gestion des données de Hollow sont également destinés à aider au développement, pas simplement à accélérer la production.

«Imaginez être en mesure de transférer rapidement l'ensemble de votre ensemble de données de production - actuel ou depuis n'importe quel point du passé récent - vers un poste de travail de développement local, de le charger, puis de reproduire exactement des scénarios de production spécifiques», explique Netflix dans son article de blog d'introduction.

Une mise en garde est que Hollow n'est pas adapté aux ensembles de données de toutes tailles - «Ko, Mo et Go, mais pas To», c'est ainsi que l'entreprise le présente dans sa documentation. Cela dit, Netflix implique également que Hollow réduit la quantité d'étalement requis par un ensemble de données mis en cache. «Avec le bon cadre et un peu de modélisation des données, ce seuil [de mémoire] est probablement beaucoup plus élevé que vous ne le pensez», écrit Netflix.