Bases de données NoSQL – l`exemple de DynamoDB

publicité
Bases de données NoSQL – l’exemple de
DynamoDB
TLC TP2
11 décembre 2012
Merci de réaliser ce TP en binôme et de retourner la réponse aux questions par
email à [email protected].
Des documents complémentaires sont disponibles ici :
http://www.globule.org/~gpierre/?page_id=373
Vous y trouverez tous les transparents de cours, cette feuille d’exercise, un lien
vers les outils dont vous aurez besoin, etc.
Le but de cet exercise est d’explorer la base de données NoSQL DynamoDB chez Amazon. Le modèle de données de DynamoDB est simple. Une base de données contient
des tables qui contiennent des enregistrements. Chaque table peut être indexée simplement par clé primaire. Dans ce cas il vous faudra déclarer le nom de l’atribut de clé primaire. Alternativement, une table peut être indexée par une clé primaire et un “range attribute”. Dans ce second cas il sera possible d’accéder aux enregistrements en donnant
la valeur de la clé, plus un intervalle de sous-clés. Pour davantage d’information sur le
schéma de données de DynamoDB et sur les types de requêtes supportées, lisez la page
http://aws.amazon.com/dynamodb/#details
1
Prise en main de DynamoDB
Pour ce TP chaque groupe de TP aura son propre compte AWS. Connectez-vous à AWS en
utilisant cette URL :
https://152828017518.signin.aws.amazon.com/console
puis cliquez sur “DynamoDB” (en bas à gauche dans la liste des services).
Créez deux tables : l’une indexée uniquement par une clé primaire, l’autre par le système à deux clés. Insérez quelques enregistrements dans chaque table et essayez les différents types de requêtes disponibles sur chaque type de table. Assurez-vous que vous comprenez toutes les possibilités de requêtes offertes par DynamoDB.
Attention : la requête “scan” permet de visualiser tous les éléments d’une table. Elle est
très utile pour le développement, mais doit être proscrite en exploitation : elle est tellement
coûteuse qu’Amazon limite ses réponses à une taille maximum de 1 MB.
2
Restructuration du schéma de données de MediaWiki
Nous allons tenter de concevoir une structure de données permettant de stocker la base
de données de MediaWiki dans DynamoDB. MediaWiki est l’application qu’utilise Wikipedia. Son schéma SQL complet est documenté ici :
http://www.mediawiki.org/wiki/Manual:Database_layout
1
Le schéma de données est évidemment un peu complexe mais nous nous intéresserons uniquement aux tables page, revision, pagelinks et text. Page contient les
méta-informations de chaque page. Chaque page possède un certain nombre de Revisions
(chaque fois qu’un utilisateur édite une page une nouvelle révision est créée). Chaque révision ne contient une fois encore que des méta-données, le contenu de chaque révision est
stocké dans la table Text. Enfin, tous les liens hypertexte entre pages sont décrits dans la
table PageLinks.
2
Nous voulons supporter les requêtes suivantes :
– Lire la version la plus récente d’une page (c’est-à-dire le texte de la page ainsi que
ses méta-données)
– Voir la liste de toutes les révisions d’une page
– Lire une version spécifique d’une page
– Créer une nouvelle page
– Créer une nouvelle version d’une page
Question 1 : Concevez un schéma de données semblable à celui de MediaWiki mais compatible avec les particularités de DynamoDB. Vous pouvez ommettre la table PageLinks
pour l’instant. Créez les tables dans DynamoDB, insérez deux pages avec deux révisions
chaque. Assurez-vous que votre schéma de données supporte les cinq types de requêtes
listées ci-dessus. Faites des captures d’écran pour montrer votre schéma de données et la
façon d’effectuer les cinq requêtes.
Question 2 : La raison principale pour laquelle MediaWiki contient la table PageLinks est
de permettre de colorier les liens dans les pages. Chaque fois que vous lisez une page, les
liens hypertexte sont de couleur bleue si le lien mène à une page existante, ou en rouge
sinon. Mettez votre schéma de données DynamoDB à jour pour permettre à MediaWiki de
colorier les liens correctement. Attention : l’opération de coloriage des liens est extrêmement fréquente, car effectuée de nombreuses fois pour la lecture de chaque page.
N’oubliez pas de détruire toutes vos tables DynamoDB avant de quitter la salle !
— the end —
3
Téléchargement