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 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.
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
Lancer un cluster dans un répertoire de votre choix en executant 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émement sur la même machine.Vérifier que tout marche bien en vous connectant grâce à l’invité de commande
psql
directement sur la machine virtuelle.Créez une base de donnée dans le cluster de votre choix.
Créez un utilisateur pouvant se connecter depuis n’importequel 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 (probalement
/usr/local/pgsql/bin/
. (editez et executer 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 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
- Trouvez tous les téléchargements réalisés à Lille.
- Trouvez tous les téléghargement 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 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: mer. 08 janv. 2025 11:51:32 CET