Table des matières:
Vidéo: Microsoft Azure OpenDev—June 2017 2024
Il y a des moments où vous voulez fournir un accès haute vitesse de type valeur-clé aux données contenues dans une base de données relationnelle. Cette base de données pourrait être, par exemple, Berkeley DB (Java Edition pour Voldemort) ou MySQL.
Fournir une valeur-clé comme l'accès aux données nécessite un magasin de valeurs-clés directement sur l'une de ces autres bases de données. Fondamentalement, vous utilisez une autre base de données comme couche de stockage, plutôt qu'une combinaison d'un système de fichiers pour le stockage et un pipeline d'ingestion pour copier des données à partir d'une base de données relationnelle.
Ce processus simplifie la mise à disposition d'un magasin de valeurs-clés à grande vitesse tout en utilisant une base de données relationnelle traditionnelle pour le stockage.
Modification des moteurs de stockage
Des charges de travail différentes nécessitent des moteurs de stockage et des caractéristiques de performance différents. Aerospike est idéal pour une ingestion élevée; Redis est idéal pour un grand nombre de lectures. Chacun est construit autour d'un cas d'utilisation spécifique.
Voldemort adopte une approche différente. Plutôt que de traiter le magasin de valeurs-clés comme un niveau distinct de gestion des données, Voldemort traite le magasin de valeurs-clés comme une API et ajoute une couche de cache en mémoire, ce qui signifie que vous pouvez vous connecter au back-end le plus logique pour vos besoins particuliers.
Si vous voulez un niveau de stockage sur disque simple, vous pouvez utiliser le moteur de stockage Berkeley DB Java Edition. Si à la place vous voulez stocker des données relationnelles, vous pouvez utiliser MySQL comme back-end pour Voldemort.
Cette fonctionnalité combinée à des types de données personnalisés vous permet d'utiliser l'API de stockage / extraction simple d'une banque de valeurs-clés pour retirer et mettre directement en cache les informations dans un magasin principal différent.
Cette approche contraste avec l'approche habituelle consistant à avoir des bases de données séparées - une dans Oracle, par exemple, pour les données transactionnelles et une autre dans votre magasin de valeurs-clés (Riak, par exemple). Avec cette approche à deux niveaux, vous devez développer du code pour déplacer les données d'un niveau à l'autre pour la mise en cache. Avec Voldemort, il existe un niveau combiné - votre niveau de données - de sorte que le code supplémentaire est redondant.
Mise en mémoire cache des données en mémoire
Voldemort dispose d'un cache intégré en mémoire qui réduit la charge sur le moteur de stockage et augmente les performances des requêtes. Pas besoin d'utiliser une couche de mise en cache séparée, comme Redis ou le produit de mise en cache des données de l'application Java Coherence d'Oracle.
La possibilité de mettre en cache des niveaux de stockage à haut débit est la raison pour laquelle LinkedIn utilise Voldemort pour certains cas d'utilisation à haute performance.
Avec Voldemort, vous bénéficiez du meilleur des deux mondes: un moteur de stockage pour vos besoins de données précis et un cache en mémoire haute vitesse pour réduire la charge sur ce moteur.Vous obtenez également une simple clé de stockage / extraction de clé sémantique sur votre moteur de stockage.
Evaluer Voldemort
Dans les livres de Harry Potter , Lord Voldemort avait beaucoup de magie en lui, à la fois bonne et mauvaise, bien qu'il l'utilisât pour terroriser les moldus. Il se trouve que la base de données Voldemort peut également stocker de grandes quantités de données, mais peut être utilisée partout par les magiciens des données!
Voldemort est toujours un produit en développement. De nombreuses pièces sont toujours manquantes, de sorte qu'il ne prend pas en charge la variété de moteurs de stockage que vous pourriez attendre. Cet intérêt pour la communauté de développement de Voldemort est probablement dû au fait que Voldemort est construit dans le langage de programmation Java, qui nécessite la construction d'un connecteur JNI (Java Native Interface) pour l'intégration à la plupart des bases de données C ou C ++.
Voldemort a une bonne intégration avec les frameworks de sérialisation. Les frameworks pris en charge incluent la sérialisation Java, Avro, Thrift et Protocol Buffers. Cela signifie que les wrappers d'API fournis correspondent à la méthode de sérialisation familière de chaque langage de programmation, ce qui rend le développement des applications intuitif.
Voldemort ne gère pas la cohérence, contrairement aux autres systèmes. Voldemort utilise l'approche de read repair , où les numéros de version incohérents pour le même enregistrement sont fixés au moment de la lecture, plutôt que d'être maintenus cohérents au moment de l'écriture.
Il n'y a pas non plus d'indexation secondaire ni de support de requête. Voldemort s'attend à ce que vous utilisiez les fonctionnalités du moteur de stockage sous-jacent pour faire face à ce cas d'utilisation. En outre, Voldemort ne dispose pas de déclencheurs de base de données natifs ou d'un cadre d'alerte ou de traitement des événements pour en créer un.
Si vous avez besoin d'un magasin de clés-valeurs hautement disponible, tolérant les partitions, s'exécutant en Java et utilisant différents backend de stockage, Voldemort peut être fait pour vous.