Introduction au modèle de données dans Cassandra
Apache Cassandra est devenue l'une des bases de données NoSQL les plus puissantes. C'est le bon choix lorsque vous souhaitez une haute disponibilité et une évolutivité sans compromettre les performances, en particulier pour les applications qui ne peuvent pas se permettre de perdre des données. Dans cette rubrique, nous allons en apprendre davantage sur le modèle de données dans Cassandra.
Un fait rapide, les ingénieurs de Cassandra sont aujourd'hui parmi les meilleurs professionnels de la technologie rémunérés. Des entreprises comme Netflix, Instagram et Apple utilisent Cassandra pour offrir une expérience client hautement individualisée. Pour obtenir les bonnes performances, vous devez soigneusement concevoir le schéma spécifique au problème métier. Dans cet article, nous allons examiner le modèle de données Cassandra qui est significativement différent de ce que nous voyons dans RDBMS.
Règles du modèle de données Cassandra
En termes simples, le modèle de données est la structure logique d'une base de données. Il décrit comment les données sont stockées et accessibles, et les relations entre les différents types de données.
Choisir le bon modèle de données peut être la partie la plus difficile de l'utilisation d'une base de données NoSQL comme Cassandra. Comme je l'ai mentionné précédemment, la modélisation des données dans Cassandra est différente de ce que nous voyons dans un SGBDR.
Clé de partition et Clustering sont les termes que toute personne traitant avec Cassandra doit connaître. Avant de nous plonger dans les règles de base de la modélisation des données dans Cassandra, voyons rapidement ce que ces termes signifient,
Cloison
Cassandra est une base de données distribuée dans laquelle les données sont partitionnées et stockées sur différents nœuds d'un cluster. Les données sont divisées en utilisant une clé de partition, qui peut être un ou plusieurs champs de données. Cette clé de partition est utilisée pour créer un mécanisme de hachage pour répartir les données uniformément sur tous les nœuds.
Grappe
Un cluster est une collection de nœuds qui représentent une seule base de données logique. Une clé de clustering est composée d'un ou de plusieurs champs qui sont utilisés pour regrouper des données dans une partition.
Dans cette table restaurants, les données seront partitionnées à l'aide de country_code, state_name et city_name, et au sein de cette partition, les données seront regroupées et triées en fonction des données d'ouverture et du nom du restaurant.
Examinons maintenant les deux règles de modélisation des données qui doivent être gardées à l'esprit.
- Les données sont réparties uniformément dans l'ensemble du cluster
- Lire à partir d'autant de partitions que possible
Voyons ce que ces règles tentent de transmettre
- Nous savons ce qu'est un cluster est juste? Un cluster se compose de plusieurs nœuds. Nous voulons partitionner les données entre ces nœuds de telle sorte que chaque nœud ait à peu près la même quantité de données. Comme nous le savons, les données sont partitionnées en différents nœuds en utilisant un hachage de la clé de partition (qui est la première clé de la clé primaire), donc en bref - «Vous devez choisir une bonne clé primaire».
- Chaque partition réside sur un nœud différent, donc lorsque vous récupérez des données, vous voulez vous assurer que les données sont récupérées à partir d'autant de partitions que possible. Si votre requête nécessite des données provenant de différentes partitions, une commande sera émise vers des nœuds séparés pour vous obtenir ces données, ce qui entraînera une surcharge et entraînera une latence.
La clé d'un modèle de données efficace serait un équilibre entre ces deux règles.
Gérer les relations à Cassandra
Une chose à garder à l'esprit est que la modélisation des données dans Cassandra est effectuée à l'aide d'une approche basée sur les requêtes, contrairement au SGBDR où vous identifiez d'abord les entités, créez des tables puis formez des requêtes à l'aide de JOINS pour récupérer les données.
Pour le dire simplement, nous ne modélisons pas autour de relations ou d'objets, nous modélisons autour de requêtes.
1. Relations individuelles
Considérez dans une université qu'un étudiant ne peut s'inscrire qu'à un seul séminaire. Il s'agit d'une relation un à un. En gardant la règle n ° 1, nous pensons aux requêtes que nous voulons. Je souhaite rechercher le séminaire auquel un étudiant participe. Dans ce cas, nous ne ferons qu'une seule table. Le tableau doit contenir les détails de l'étudiant et les détails du séminaire.
2. Relation un à plusieurs
Dans le même contexte, que se passe-t-il si je souhaite rechercher tous les étudiants participant à un séminaire. Au lieu d'utiliser la même table et d'itérer sur chaque ligne pour obtenir le nom de l'étudiant pour ce séminaire particulier, je peux créer une autre table qui partitionne les données par nom de séminaire. Ainsi, lorsque j'émets la requête, elle ne touche qu'un seul nœud plutôt que d'aller à tous les nœuds pour obtenir le nom du séminaire.
3. Relation plusieurs à plusieurs
Maintenant, considérons, un étudiant peut assister à de nombreux séminaires, et un séminaire peut être suivi par de nombreux étudiants. Ici, nous avons de nombreuses relations. Dans ce cas, vous pouvez exploiter les deux tables ci-dessus pour effectuer des requêtes sans avoir à surcharger les requêtes complexes à l'aide de jointures, ce que vous feriez généralement dans un SGBDR.
Importance de Cassandra
Avec l'expansion rapide des données numériques, il devient plus important d'avoir en place une base de données hautement évolutive et tolérante aux pannes. Permettez-moi d'énumérer quelques points sur les raisons pour lesquelles vous devriez utiliser Cassandra
- Éclairage des opérations de lecture rapide: nous avons expliqué comment la modélisation correcte de vos données peut optimiser les opérations de lecture à grande échelle.
- Tolérant aux pannes: les données sont répliquées sur les nœuds, donc même si un nœud tombe en panne, vos données sont en sécurité.
- Réglage personnalisé: vous pouvez configurer Cassandra pour qu'il fonctionne en fonction de votre charge de travail. Si vous écrivez beaucoup de données, comme la journalisation, vous pouvez les modifier pour gérer des systèmes lourds en écriture. Il existe plusieurs autres options de réglage disponibles.
- Gérer des volumes de données élevés: en fonction de la taille du cluster, Cassandra peut gérer les énormes volumes de données.
Comment modéliser les données dans Cassandra?
Une bonne modélisation des données suit ces étapes
- Conceptualisez les requêtes requises par votre application
- Création de tables pour satisfaire ces requêtes
Avant d'appliquer ces règles, une chose à garder à l'esprit est: «Nous nous concentrons sur l'optimisation de nos opérations de lecture même si cela nécessite une duplication des données». Nous pouvons avoir de nombreux tableaux qui peuvent contenir des données presque similaires.
Maintenant, considérons que nous voulons une base de données qui stocke des informations sur les restaurants. Supposons que les noms des restaurants soient uniques.
Le tableau ci-dessous peut être utilisé lorsque nous voulons rechercher en fonction du nom du restaurant:
Maintenant, si nous voulons rechercher les restaurants pour un emplacement particulier, nous écrivons une requête qui parcourt toutes les lignes et récupère les noms des restaurants.
Au lieu de cela, en gardant à l'esprit la règle n ° 2, nous pouvons facilement créer une autre table qui répondra à nos besoins.
Maintenant, nos données seront partitionnées de manière à ce qu'un nœud du cluster ait des restaurants pour un emplacement particulier. Cela optimisera nos requêtes de lecture, car la recherche de requête ne se produira que sur un nœud avec des lignes beaucoup moins importantes que la première table que nous avons créée.
Et si nous voulions rechercher des restaurants dans une ville particulière, nous pouvons créer une autre table plutôt que de parcourir toutes les lignes dans une seule partition de la table ci-dessus.
Conclusion
Dans cet article, j'ai couvert quelques bonnes pratiques que vous pouvez suivre pour aborder la modélisation des données dans Cassandra. Si vous comprenez ces concepts et pouvez reconnaître efficacement le type de requêtes dont votre application a besoin, vous pouvez concevoir un excellent modèle de données pour obtenir des performances élevées de votre base de données.
Articles recommandés
Ceci est un guide du modèle de données dans Cassandra. Nous discutons ici comment modéliser nos données dans Cassandra ainsi que les règles et l'importance des modèles de données Cassandra. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -
- Qu'est-ce que la modélisation des données?
- Modèles de données dans le SGBD
- Questions d'entretiens chez Data Modeling
- Modélisation des données Cassandra