Algorithmes et bases de données, année 2019
TD1: Introduction à PostgreSQL
L’objectif de ce TD:
- Se familiariser avec OpenStack.
- Installer PostgreSQL depuis les sources
- Fouiller dans les sources à la recherche d’informations
- [-Étre-] {+Ê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]
où
adresse-ip
est l’adresse indiquée par la plateforme.
Remarques:
- Il est possible de se connecter de chez vous avec le VPN.
- 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.
- 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.
- Vous pouvez devenir
root
facilement à l’aide de la commandesudo su
. N’hésitez pas à faire des bêtises sur des instances de votre choix. - Il est très pratique d’utiliser un multiplexeur de
terminal comme
screen
outmux
.
Télécharger les sources et compiler PostgreSQL
En suivant les indications dans les sources, installer localement un cluster PostgresSQL.
Pendant le temps de compilation, lancer une autre VM via openstack et
installer PostgreSQL depuis les dépôts directement avec
apt
.
Vérifier le répertoire où les binaires ont été placé et exécuter l’aide des programmes suivant:
pg_config
pg_ctl
initdb
createdb
createuser
Lancer un cluster dans un répertoire de votre choix en exécutant d’abors
initdb
et en utilisantpg_ctl start
avec l’option-D
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ément sur la même machine.Créez une base de donnée dans le cluster de votre choix.
Créez un utilisateur pouvant se connecter depuis n’importe quel domaine à l’aide de
createuser
et en éditant le fichier de configurationpg_hba.conf
Remarques:
- Les images OpenStack sont volontairement minimalistes. De nombreuses dépendances sont à installer.
- Vous aurez besoin de GNU readline qui est dans les paquets:
make
,libreadline-dev
etzlib1g-dev
- Le plus simple est d’ajouter à la variable d’environnement globale
le chemin vers les binaires (probablement
/usr/local/pgsql/bin/
) éditez et exécutez le fichier/etc/environment
.
Une exploration des sources
- Trouvez dans les sources le fichier
buffpage.h
qui contient la structure en binaire vue en cours. - Trouvez des informations dans les sources à propos de l’optimiseur de requêtes.
- Trouvez dans la documentation comment modifier le modèle de coût transmis à l’optimiseur.
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 devrez également autoriser les connexions distantes via une
authentification par mots de passe en éditant le fichier
pg_hba.conf
Les logs de scihub.
Télécharger le jeu de données issue des logs d’un site pirate de publication scientifiques bien connus ici. Créez une base de données scihub et une table adaptée pour pouvoir l’importer dans la base de données.
Vous
pouvez utiliser la commande \copy
pour ça, qui est assez
efficace (doc)
Quelques requêtes simple
- Trouvez tous les téléchargements réalisés à Lille.
- Trouvez tous les téléchargements du 31 Janvier.
- Retourner la table du nombre de téléchargements pour chaque pays
Pour chacune de ces requêtes, PostgreSQL vous indique l’algorithme exécuté via la commande Explain en fonction du modèle de coût configuré. En utilisant Explain Analyze vous pouvez également exécuter la requête et obtenir le coût réel.
Pour aller plus loin: Une normalisation simple
En relisant la page Wikipédia adaptée, proposez une renormalisation de cette table.
Compiled the: mer. 04 sept. 2024 12:49:38 CEST