Apache Cassandra est une base de données hautement évolutive avec une cohérence ajustable. Il s’agit d’une base de données NoSQL et elle est utilisée par de grandes organisations dans des domaines d’application variés. Démarrer avec Apache Cassandra peut s’avérer être une tâche intensive et chronophage pour tout développeur ou data scientist. Cassandra a une courbe d’apprentissage abrupte et est livrée avec une gamme d’outils et de configurations. Ce blog couvre ce qu’est Apache Cassandra, en quoi il est différent des bases de données relationnelles et en quoi il est meilleur. Nous allons passer en revue un exemple simple réalisé à l’aide de Python de ce qu’il faudrait pour configurer Apache Cassandra et un exemple d’application afin que vous puissiez jouer avec lui par vous-même.
Nous vous expliquerons comment configurer Python, ainsi que DataStax Astra, une application Cassandra-as-a-Service hébergée gratuitement sur n’importe quel cloud. Nous vous montrerons comment connecter Python à Cassandra et insérer des données avec le pilote Datastax ODBC, et nous utiliserons la console Web Astra pour interroger les données stockées dans Cassandra à l’aide de la console CQL.
Qu’est-ce qu’Apache Cassandra
Cassandra est une technologie de base de données populaire. Cassandra a été initialement développée par Facebook lorsqu’ils ont décidé d’étendre leur activité au-delà des limites de MySQL, une technologie de base de données populaire à l’époque. Cassandra est hautement évolutive et peut gérer facilement plusieurs opérations. Cassandra est construit en Java et compte plus de 200 opérateurs. Cassandra est une technologie de base de données distribuée, ce qui signifie que les informations sont réparties sur plusieurs nœuds. Cassandra n’utilise pas SQL mais dispose à la place d’un modèle de données flexible et d’un large éventail d’opérateurs qui permettent une manipulation complexe des données. Cassandra est pris en charge sur de nombreuses plates-formes. Cassandra a été l’alternative NoSQL « populaire » aux bases de données plus chères et difficiles à mettre à l’échelle comme Oracle, MongoDB et Amazon DynamoDB.
Conditions préalables
Avant de commencer, vous devez d’abord vous inscrire à un compte DataStax Astra, ce que vous pouvez faire en vous rendant sur leur site Web et en remplissant le formulaire. Après cela, vous devrez installer certains modules pour que nous puissions créer l’exemple d’application, nous nous concentrerons sur l’installation uniquement des exigences logicielles nécessaires pour que notre application Python fonctionne.
Comme mentionné ci-dessus, nous utiliserons DataStax Astra qui est une application Cassandra-as-a-Service gérée, ainsi que d’autres modules. Nous pouvons tous les installer en même temps en créant un fichier requirements.txt, il suffit de mettre la ligne suivante dans ce fichier et de les installer en utilisant cette commande : pip install -r requirements.txt.
cassandra-driver==3.25.0
numpy==1.19.3
astrapy==0.0.2
simplejson==3.17.2
Mise en place d’une base de données Cassandra
Cassandra est un logiciel gratuit et open-source, ce qui signifie que son utilisation est gratuite – vous n’avez pas besoin de payer pour déployer Cassandra sur votre infrastructure. Si vous êtes familier avec les serveurs et les bases de données et que vous souhaitez effectuer vos propres installations et configurations, vous pouvez trouver des instructions détaillées dans la documentation ; mais tout ce processus peut être intimidant, en particulier pour les nouveaux utilisateurs. Alternativement, vous pouvez déployer Cassandra sur le Cloud, et c’est ce que nous allons faire ici.
La meilleure façon de démarrer avec Cassandra pour les débutants serait d’utiliser une base de données Cassandra gérée qui est disponible sur le Web. Datastax Astra est une base de données en tant que service que vous pouvez lancer en un clic. Les solutions cloud de Datastax sont basées sur Apache Cassandra et offrent de généreux quotas de niveaux gratuits allant jusqu’à 20 millions d’écritures/mois et 80 Go de stockage de données. Vous pouvez les utiliser autant que possible en essayant les services gratuitement ou commencer à gérer votre application.
Nous devrons d’abord obtenir nos identifiants Astra DB et générer un jeton d’application. Pour ce faire, accédez à la page d’accueil de Datastax Astra et appuyez sur le bouton Créer une base de données dans la barre latérale et remplissez le formulaire comme indiqué ci-dessous :
Vous pouvez choisir les services d’hébergement de votre choix parmi les trois, à savoir Google Cloud, Amazon Web Services et Microsoft Azure. Tous sont gratuits et ne nécessitent aucune configuration, j’ai choisi Google Cloud car il dessert uniquement la région indienne. Après avoir rempli les détails, cliquez sur le bouton Créer une base de données et vous devriez être redirigé vers la page d’accueil, à partir d’ici, cliquez sur la base de données que vous venez de créer à partir de la barre latérale.
Now from the database page click on the connect tab from the navbar.
Maintenant, sur cette page, à partir de la section Connect using an API >> Document API, copiez les variables d’environnement que vous devez exporter, à partir de la partie droite de la page.
Et pour obtenir l’app_token, nous pouvons aller dans Paramètres de l’organisation >> Gestion des jetons ou cliquer sur le lien indiqué au premier point des prérequis.
Ici, nous pouvons obtenir notre app_token en choisissant un rôle d’utilisateur et il donnera l’autorisation en conséquence. Puisque nous ne faisons qu’une petite application de démonstration et que nous ne l’utiliserons pas beaucoup pour quoi que ce soit, nous pouvons donc simplement choisir le rôle d’utilisateur en lecture/écriture. Vous pouvez également voir l’autorisation de rôle ci-dessous afin de pouvoir choisir facilement autre chose si vous le souhaitez. Après avoir sélectionné le rôle, appuyez sur le bouton Générer un jeton.
Si les jetons ont été créés avec succès, vous devriez obtenir un résultat comme celui-ci :
Et, comme vous pouvez le voir, nous avons obtenu notre jeton ainsi qu’un ID client et un secret client, assurez-vous de les télécharger et de les conserver dans un endroit sûr car vous ne pourrez plus les revoir sur le site Web. En outre, mettez la valeur Token dans ASTRA_DB_APPLICATION_TOKEN, afin que nos ID ressemblent à ceci :
export ASTRA_DB_ID=57482bbd-c72e-4ba4-afdc-7c4e230701c4
export ASTRA_DB_REGION=asia-south1
export ASTRA_DB_KEYSPACE=cassandra_keyspace
export ASTRA_DB_APPLICATION_TOKEN=AstraCS:ulDBRyZovIyoTxOhNMxuXjxH:5a578dd322cd88cd33bce6513acdb89694572d669a0ddd0a08eacde662af9ecd
Cette API de document complète vous permet de stocker des documents JSON dans la base de données Astra que vous avez créée, sans schéma, ce qui signifie qu’aucune modélisation de données n’est requise !
Création d’une petite application
Une fois que vous avez effectué les étapes ci-dessus, nous pouvons commencer à créer une application très basique à expérimenter. Tout d’abord, nous nous authentifierons auprès de Datastax Astra en utilisant l’authentification par jeton. Et une fois que nous avons notre objet client HTTP, il est passé à la méthode suivante dans laquelle nous avons créé et inséré un document JSON dans une collection Astra. Le code peut être écrit comme suit :
import os, uuid
from astrapy.rest import create_client, http_methods
def getAstraHTTPClient():
"""Enter your own IDs here"""
ASTRA_DB_ID = "57482bbd-c72e-4ba4-afdc-7c4e230701c4"
ASTRA_DB_REGION = "asia-south1"
ASTRA_DB_APPLICATION_TOKEN = "AstraCS:ulDBRyZovIyoTxOhNMxuXjxH:5a578dd322cd88cd33bce6513acdb89694572d669a0ddd0a08eacde662af9ecd"
# setup an Astra Client
return create_client(astra_database_id=ASTRA_DB_ID,
astra_database_region=ASTRA_DB_REGION,
astra_application_token=ASTRA_DB_APPLICATION_TOKEN)
def createJSONonAstra(astra_http_client):
doc_uuid = uuid.uuid4()
ASTRA_DB_KEYSPACE = os.environ.get('ASTRA_DB_KEYSPACE')
ASTRA_DB_COLLECTION = os.environ.get('ASTRA_DB_COLLECTION')
astra_http_client.request(
method=http_methods.PUT,
path=f"/api/rest/v2/namespaces/{ASTRA_DB_KEYSPACE}/collections/{ASTRA_DB_COLLECTION}/{doc_uuid}",
json_data={
"book": "The Hunger Games",
"author": "Suzanne Collins",
"genre": ["fiction"],
})
Maintenant, pour envoyer réellement ces données à Astra, nous devons exécuter ce fichier, ce qui pourrait être fait avec :
python3 main.py #Linux/Mac python main.py #Windows
S’il ne renvoie aucune erreur, l’opération a été effectuée avec succès. Enfin, nous pouvons confirmer que nous pouvons insérer le document avec succès. Nous pouvons le faire en émettant une commande curl pour le récupérer via la ligne de commande.
curl --request GET \
--url https://$ASTRA_DB_ID-$ASTRA_DB_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/$ASTRA_DB_KEYSPACE/collections/main\
-H "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
-H 'Content-Type: application/json'
Remarque : L’obtention des résultats peut prendre un certain temps.
Si tout a fonctionné correctement, vous verrez un résultat comme celui-ci :
{
"pageState": "3Bykb2N1bWVudElkIjoiNTNhMzRmYzItZjg1ZC00NWE4LTgwNmQtYTJkMTk0MDA0ZmYxIiwiaW50ZXJuYGsDdASdjh2q3IifQ==",
"data": {
"53a34fc2-f85d-45a8-806d-a2d194004ff1": {
"author": "Suzanne Collins",
"book": "The Hunger Games",
"genre": [
"fiction"
]
}
}
}
Conclusion
Apache Cassandra est un système de gestion de base de données distribué gratuit et open source largement utilisé par les entreprises, les startups et les petites entreprises. Cassandra est extrêmement évolutive et est capable de gérer des milliards d’enregistrements avec une latence très faible. Dans ce blog, nous avons exploré les étapes pour démarrer avec Cassandra dans DataStax Astra et l’avons utilisé pour obtenir et récupérer des données. Ce sont les fonctionnalités les plus fondamentales et nous espérons que vous apprendrez à utiliser ces étapes. Mais n’arrêtez pas votre voyage là-bas ! Bien que Cassandra soit une excellente technologie de base de données, sa documentation et ses applications sont également des outils puissants en eux-mêmes. Donc, si vous avez besoin de plus d’informations, les pages de manuel de Cassandra et les kits d’outils téléchargeables sont les meilleurs endroits pour rechercher de l’aide.