Algorithmes et Bases de Données, année 2019

TD1: Introduction à PostgreSQL

L’objectif de ce TD:

  1. Se familiariser avec OpenStack.
  2. Installer PostgreSQL depuis les sources
  3. Fouiller dans les sources à la recherche d’informations
  4. Étre capable de faire fonctionner un exemple simple.

Ce TD suppose que vous êtes capable de chercher en autonomie dans la documentation de PostgreSQL présente sur internet ou dans les sources.

Utilisation d’OpenStack

Connectez vous à openstack et créez une instance Ubuntu avec le moins de ressources possibles. On utilisera éventuellement les ressources disponibles lors d’autres TP. Pour cela Suivez le tutoriel présent sur la plateforme. Configurez votre console local pour pouvoir vous connecter en ssh. Pour une instance ubuntu avec les clefs ssh configurées correctements il suffit de faire: ssh ubuntu@[adresse-ip]adresse-ip est l’adresse indiquée par la plateforme.

Remarques:

  1. Il est possible de se connecter de chez vous avec le VPN.
  2. Vous pouvez créez des instances avec d’autres versions de Postgres pour les tester ou même dans systèmes de bases de données.
  3. La création et suppression d’une instance est rapide, en cas d’erreurs de configuration bloquante, n’hésitez pas à tout jeter et recommencer.
  4. Vous pouvez devenir root facilement à l’aide de la commande sudo su. N’hésitez pas à faire des bêtises sur des instances de votre choix.
  5. Il est très pratique d’utiliser un multiplexeur de terminal comme screen ou tmux.

Télécharger les sources et compiler PostgreSQL

En suivant les indications dans les sources, installer localement un cluster PostgresSQL.

  1. Vérifier le répertoire où les binaires ont été placé et executer l’aide des programmes suivant:

    • pg_config
    • pg_ctl
    • initdb
    • createdb
    • createuser
  2. Lancer un cluster dans un répertoire de votre choix en executant d’abors initdb et en utilisant pg_ctl start avec l’option -D

  3. Créez un cluster dans un second répertoire. En le lançant avec pg_ctl vous avez une erreur. Comment la contourner pour avoir deux cluster simultanémement sur la même machine.

  4. Vérifier que tout marche bien en vous connectant grâce à l’invité de commande psql directement sur la machine virtuelle.

  5. Créez une base de donnée dans le cluster de votre choix.

  6. Créez un utilisateur pouvant se connecter depuis n’importequel domaine à l’aide de createuser et en éditant le fichier de configuration pg_hba.conf

Remarques:

  1. Les images OpenStack sont volontairement minimalistes. De nombreuses dépendances sont à installer.
  2. Vous aurez besoin de GNU readline qui est dans les paquets: make, libreadline-dev et zlib1g-dev
  3. Le plus simple est d’ajouter à la variable d’environnement globale le chemin vers les binaires (probalement /usr/local/pgsql/bin/. (editez et executer le fichier /etc/environment)

Une exploration des sources

Configurez PostgreSQL

Vérifier dans le fichier de configuration que le serveur écoute bien les connexions extérieures et essayez de vous connecter sur la machine distante et sur la machine locale.

Vous deverez également autoriser les connexions distantes via une authentification par mots de passes en éditant le fichier pg_hba.conf

Les logs de scihub.

Télécharger le jeu de données issues des logs d’un site pirate de publication scientifiques bien connus ici. Créez une base de données scihub et une table adapté pour pouvoir l’importer dans la base de donnée.

Vous pouvez utiliser la commande \copy pour ça, qui est assez efficace.

Quelques requêtes simple

  1. Trouvez tous les téléchargements réalisés à Lille.
  2. Trouvez tous les téléghargement du 31 Janvier.
  3. Retourner la table du nombre de téléchargements pour chaque pays

Pour chacune de ces requêtes, PostgreSQL vous indique l’algorithme executé via la commande Explain en fonction du modèle de coût configuré. En utilisant Explain Analyze vous pouvez également exectuer la requête et obtenir le coût réel.

Pour allez plus loin: Une normalisation simple

En relisant la page wikipédia adaptée, proposez une renormalisation de cette table.


Compiled the: dim. 07 janv. 2024 23:19:22 CET