Base de données SQL pour Cloud Data

Ce tutoriel peut entraîner des coûts. Utilisez l'Estimateur de coûts pour générer une estimation du coût en fonction de votre utilisation projetée.

Ce tutoriel montre comment mettre à disposition un service de base de données SQL (relationnelle). En tant qu'administrateur, vous créez une table et chargez un ensemble de données volumineux (informations sur la ville) dans la base de données. Ensuite, vous déployez une application Web "worldcities" dans IBM Cloud® Code Engine. L'application permet aux utilisateurs standard de rechercher des enregistrements dans la base de données cloud. L'application est écrite en Python à l'aide du framework Flask.

Schéma d'architecture*Schéma d'
du

Objectifs

  • Mettre à disposition une base de données SQL
  • Créer le schéma de base de données (table) et charger les données
  • Déployer une application conteneurisée prégénérée dans Code Engine
  • Connecter l'application et le service de base de données (données d'identification de partage)
  • Surveiller, sécuriser, sauvegarder et récupérer des bases de données cloud

Avant de commencer

Pour ce tutoriel, vous devez disposer des éléments suivants :

  • Interface de ligne de commande IBM Cloud avec le plug-in Code Engine,
  • git pour cloner le dépôt de code source.

Pour éviter l'installation de ces outils, vous pouvez utiliser le Cloud Shell depuis la console IBM Cloud.

Vous trouverez des instructions de téléchargement et d'installation de ces outils pour votre environnement d'exploitation dans le document Démarrer avec les tutoriels.

  1. Clonez le référentiel Github pour ce tutoriel et accédez à son répertoire. Dans un terminal, exécutez les lignes suivantes :
    git clone https://github.com/IBM-Cloud/cloud-sql-database.git
    cd cloud-sql-database
    
  2. Accédez à GeoNames et téléchargez et extrayez le fichier cities1000.zip. Il contient des informations sur les villes de plus de 1000 habitants. Vous allez l'utiliser comme jeu de données.

Mise à disposition de la base de données SQL

Commencez par créer une instance du service IBM Db2 Warehouse SaaS

  1. Visitez la console IBM Cloud® Cliquez sur Catalogue dans la barre de navigation supérieure.
  2. Cliquez sur Bases de données dans le panneau de gauche et sélectionnez Db2 Warehouse.
  3. Sélectionnez le plan Flex One et remplacez le nom de service suggéré par sqldatabase (vous utiliserez ce nom ultérieurement). Sélectionnez un groupe de ressources et un emplacement pour le déploiement de la base de données.
  4. Cliquez sur Créer. La mise à disposition démarre.
  5. Dans la liste des ressources, localisez la nouvelle instance sous Bases de données et attendez qu'elle soit disponible (il est parfois nécessaire d'actualiser la page). Cliquez sur l'entrée de votre service IBM Db2 Warehouse SaaS.
  6. Cliquez sur Ouvrir la console pour lancer la console de base de données.

Création d'une table

Une table est nécessaire pour stocker les données exemple. Créez-la à l'aide de la console.

  1. Dans la console de IBM Db2 Warehouse SaaS, cliquez sur l'icône de menu en haut à gauche, puis sur Exécuter SQL dans la barre de navigation.
  2. Cliquez sur le symbole + (Ajouter un nouveau script) en regard de l'onglet Sans titre-1.
  3. Cliquez sur From file et sélectionnez le fichier cityschema.txt dans le référentiel GitHub qui a été précédemment cloné dans votre répertoire local et ouvrez-le.
  4. Cliquez sur Tout exécuter pour exécuter l'instruction. Un message de réussite doit s'afficher.

Chargement des données

Une fois la table "cities" créée, vous pouvez y charger des données. Cela peut se faire de différentes manières, par exemple à partir de votre machine locale ou à partir du stockage d'objets dans le nuage (COS) ou de l'interface Amazon S3. Pour ce tutoriel, vous allez télécharger les données à partir de votre ordinateur. Au cours de ce processus, vous adaptez la structure de la table et le format des données pour qu'ils correspondent parfaitement au contenu du fichier.

  1. Dans la console de IBM Db2 Warehouse SaaS, cliquez sur l'icône de menu en haut à gauche, puis sur Données dans la barre de navigation.

  2. En tant que Source, conservez la sélection sur Mon ordinateur.

  3. Sous Sélection de fichiers, cliquez sur Glisser un fichier ici ou sur Parcourir les fichiers pour localiser et sélectionner le fichier cities1000.txt " que vous avez téléchargé dans la première section de ce guide.

  4. Cliquez sur Suivant pour accéder à la présentation Cible avec une sélection Schéma. Choisissez le schéma BLUADMIN, puis la table VILLES. Cliquez à nouveau sur Next.

    Dans la mesure où la table est vide, il n'est pas important d'ajouter des données aux données existantes ou de les remplacer.

  5. A présent, personnalisez la manière dont les données du fichier "cities1000.txt" sont interprétées pendant le processus de chargement. Tout d'abord, désactivez En-tête sur la première ligne car le fichier ne contient que des données.

  6. Ensuite, entrez 0x09 comme séparateur. Cela signifie que les valeurs du fichier sont délimitées par des tabulations.

  7. Enfin, choisissez "AAAA-MM-JJ" comme format de date. Maintenant, tout devrait ressembler à ce qui est montré dans cette capture d'écran.

    Capture d'écran illustrant les données échantillonnées
    Capture d'écran illustrant les données échantillonnées

  8. Cliquez sur Next pour examiner les paramètres de chargement. Acceptez et cliquez sur Begin Load pour commencer à charger les données dans la table CITIES. La progression est affichée. Une fois les données téléchargées, quelques secondes suffisent pour effectuer le chargement et présenter les premières statistiques.

  9. Cliquez sur Voir la table pour parcourir les données. Vous pouvez faire défiler l'écran vers le bas ou cliquer sur les noms de colonne pour modifier l'ordre de tri.

Vérification des données chargées à l'aide de SQL

Les données ont été chargées dans la base de données relationnelle. Il n'y a pas eu d'erreur, mais vous devez tout de même exécuter quelques tests rapides. Utilisez l'éditeur SQL intégré pour saisir et exécuter des instructions SQL.

  1. Dans la navigation de gauche, cliquez sur Exécuter SQL pour revenir à l'éditeur SQL. Cliquez sur le symbole + (Ajouter un nouveau script) et sur Créer pour créer un onglet d'éditeur.

    Au lieu de l'éditeur SQL intégré, vous pouvez utiliser des outils SQL traditionnels et basés sur le cloud sur votre ordinateur de bureau ou serveur avec IBM Db2 Warehouse SaaS. Les informations de connexion sont disponibles dans le menu Administration de la navigation de gauche.

  2. Dans l'éditeur, entrez ou copiez la requête suivante :

    select count(*) from cities;
    

    Sélectionnez le texte de la requête, puis, dans la liste déroulante située en regard de Exécuter tout, choisissez Exécuter la sélection. Dans la section des résultats, le même nombre de lignes que celui indiqué par le processus de chargement doit être affiché.

  3. Dans l'éditeur SQL, entrez l'instruction suivante sur une nouvelle ligne :

    select countrycode, count(name) from cities
    group by countrycode
    order by 2 desc;
    

    Marquez le texte de l'instruction ci-dessus et cliquez sur le bouton Exécuter la sélection. Seule cette déclaration est exécutée, ce qui permet d'obtenir des statistiques par pays dans la section des résultats.

  4. Enfin, exécutez l'instruction suivante de la même manière pour extraire des détails sur San Francisco en Californie:

    select * from cities
    where name='San Francisco'
    and countrycode='US';
    

Déploiement du code applicatif

Revenir au terminal. Vous allez maintenant déployer le code d'application à l'aide d'une image de conteneur prégénérée. Vous pouvez modifier le code de l'application et générer l'image de conteneur par vous-même. Pour plus d'informations, voir les instructions dans le GitHub.

  1. Si vous n'êtes pas connecté, utilisez ibmcloud login ou ibmcloud login --sso pour vous connecter de manière interactive. Définissez la région et le groupe de ressources sur lesquels la base de données a été mise à disposition. Remplacez RESOURCE_GROUP et REGION en conséquence.

    ibmcloud target -g RESOURCE_GROUP -r REGION
    
  2. Créez un projet Code Engine nommé sqldatabase:

    ibmcloud ce project create --name sqldatabase
    

    Sélectionnez le nouveau projet comme projet actif:

    ibmcloud ce project select --name sqldatabase
    
  3. Ensuite, déployez l'application en la nommant worldcities.

    ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
    
  4. Enfin, créez une liaison de service entre la base de données IBM Db2 Warehouse SaaS existante et l'application:

    ibmcloud ce application bind --name worldcities --service-instance sqldatabase
    

    Une fois la liaison créée, une nouvelle révision d'application est démarrée.

  5. Vous pouvez maintenant vérifier les détails de l'application pour connaître son état et récupérer son URL:

    ibmcloud ce app get --name worldcities
    

    Dans le résultat, recherchez la ligne commençant par URL. L' URL affichée doit avoir un modèle comme https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud. Cliquez sur le lien pour accéder à l'application. Une autre option pour récupérer les détails de l'application est de visiter la console Code Engine

Sécurité, sauvegarde et reprise, surveillance

IBM Db2 Warehouse SaaS est un service géré. IBM veille à la sécurité de l'environnement, aux sauvegardes quotidiennes et à la surveillance du système. Lorsque vous utilisez l'un des plans d'entreprise, vous disposez de plusieurs options pour gérer l'accès et configurer le chiffrement de données amélioré.

Outre les options d'administration traditionnelles, le service IBM Db2 Warehouse SaaS offre également une API REST pour la surveillance, la gestion des utilisateurs, les utilitaires, la charge, l'accès au stockage, etc..

Test de l'application

L'application permettant d'afficher des informations sur la ville en fonction du jeu de données chargé est réduite au minimum. Elle propose un formulaire de recherche permettant de spécifier un nom de ville - les noms sont sensibles à la casse - et quelques villes préconfigurées. Les noms sont convertis en /search?name=cityname (formulaire de recherche) ou /city/cityname (villes spécifiées directement). Les deux demandes sont traitées à partir des mêmes lignes de code en arrière-plan. Pour des raisons de sécurité, l'adresse cityname est transmise comme valeur à une instruction SQL préparée à l'aide d'un marqueur de paramètre. Les lignes sont extraites de la base de données et transmises à un modèle HTML pour être affichées.

Nettoyage

Pour nettoyer les ressources utilisées dans ce tutoriel, procédez comme suit :

  1. Consultez la liste de ressourcesIBM Cloud®.
  2. Dans la section Code Engine, recherchez le projet sqldatabase. Cliquez sur les trois points et sélectionnez Supprimer pour supprimer le projet et son application.
  3. Localisez la base de données sqldatabase sous Bases de données. Encore une fois, cliquez sur les trois points et sélectionnez Supprimer pour supprimer la base de données.

En fonction de la ressource, le service peut ne pas être supprimé immédiatement mais conservé un certain temps (7 jours par défaut). Pour récupérer la ressource, vous pouvez la supprimer de manière définitive ou la restaurer pendant la période de conservation. Pour savoir comment utiliser la récupération de ressources, consultez ce document.

Extension du tutoriel

Vous souhaitez développer cette application ? Voici quelques suggestions :

  1. Ajoutez une recherche générique sur les noms alternatifs.
  2. Recherchez des villes d'un pays spécifique et au sein de valeurs de population données uniquement.
  3. Modifiez la mise en page en remplaçant les styles CSS et en développant les modèles.
  4. Permettre la création, à l'aide d'un formulaire, de nouvelles informations sur la ville ou permettre la mise à jour de données existantes, par exemple sur la population.

Contenu associé