3. Jour 2
Atelier 2 : DataStore
Atelier 2.1 : Présentation du magasin de données DataStore
1. Introduction
2. API Java Datastore
3. Entités et propriétés
4. Requêtes et Index
5. Différence avec SQL
4. Atelier 2 : Présentation du magasin de données DataStore
1. Introduction
2. API Java Datastore
3. Entités et propriétés
4. Requêtes et Index
5. Différence avec SQL
5. Atelier 2 : Introduction
Le magasin de données App Engine constitue une solution évolutive et robuste pour
le stockage des données de votre application Web
Il est conçu pour privilégier les performances des opérations de lecture et de requête.
Une application crée des entités, et stocke les valeurs des données en tant que
propriétés des entités.
L'application peut exécuter des requêtes sur les entités
Toutes les requêtes sont pré-indexées, ce qui garantit des résultats rapides sur des
ensembles de données très volumineux
6. Atelier 2 : API Java DataStore
Les entités de magasin de données sont dépourvues de schéma :
deux entités de même kind ne sont pas obligées d'avoir les mêmes propriétés,
ni d'utiliser les mêmes types de valeurs pour des propriétés identiques.
La vérification éventuelle de la conformité des entités à un schéma doit être
assurée par l'application.
Le magasin de données fournit une API de bas niveau qui permet d'effectuer
des opérations simples sur les entités, telles que get, put, delete et query.
Vous pouvez utiliser cette API de bas niveau pour implémenter d'autres adaptateurs
d'interface, ou simplement l'exploiter directement dans vos applications.
Chaque entité dispose également d'une clé qui l'identifie de manière individuelle.
La clé la plus simple possède un kind et un identifiant d'entité fournis par le magasin
de données.
7. Atelier 2 : API Java DataStore
Comme API de bas niveau : le Datastore
Le Datastore GAE n’est pas un SGBDR
?HashMap
8. Atelier 2 : API Java DataStore
Environnements logiciels pour la modélisation et la persistance des données.
La vérification éventuelle de la conformité des entités à un schéma doit être
assurée par l'application.
Le SDK Java intègre des implémentations des interfaces Java Data Objects (JDO) et
Java Persistence API (JPA) pour la modélisation et la persistance des données
L’equipe Google App Engine a mis a disposition des outils permettant de simplifier
de maniere significative l’utilisation des API de bas niveau, le JDO et le JPA.
Objectify : Objectify est une interface très conviviale et d'une grande simplicité
avec le magasin de données App Engine, qui vous permet d'éviter certaines des
difficultés inhérentes à JDO/JPA et au magasin de données de bas niveau.
TWiG : TWiG est une interface de persistance d'objets configurable, qui améliore la prise
en charge des stratégies d'héritage, du polymorphisme et des types génériques.
À l'instar d'Objectify, TWiG vous aide également à contourner les obstacles présentés
par JDO et par le magasin de données de bas niveau.
9. Atelier 2 : Entités et propriètés
Un objet de données dans le magasin de données App Engine est appelé entité.
Une entité possède une ou plusieurs propriétés.
Chaque entité dispose également d'une clé qui l'identifie de manière individuelle.
L'identifiant d'entité peut également être une chaîne fournie par l'application.
La clé la plus simple possède un kind et un identifiant d'entité fournis par le magasin
de données.
Le kind classe l'entité, de sorte que vous pouvez la rechercher plus facilement.
10. Atelier 2 : Requêtes et Index
Une requête de magasin de données App Engine s'exécute sur chaque entité d'un
kind donné (une classe de données).
Elle spécifie zéro filtre ou plus sur les clés et valeurs de propriétés des entités,
et zéro ordre de tri ou plus.
Chaque requête de magasin de données utilise un index, un tableau qui contient les
résultats de la requête dans l'ordre souhaité.
Une entité est renvoyée en tant que résultat d'une requête si elle possède au moins
une valeur (même null) pour chacune des propriétés mentionnées dans les filtres et
ordres de tri de la requête, et que tous les critères de filtrage sont remplis par les valeurs
des propriétés.
Index
Appengine permet d'exécuter uniquement des recherches efficaces.
Limitations sont :
Aucun balayage (parcourt) de table.
Pas de jointure.
Pas de tri en mémoire.
11. Atelier 2 : Requêtes et Index
si vous désirez réaliser des recherches, vous aurez besoin d'indexes adaptés aux
recherches que vous voudrez exécuter.
Pour simplifier cela, le datastore a l'aptitude de stocker chaque et toutes propriétés
comme "indexées" ou "non indexées"
Entity.setProperty()
Entity.setUnindexedProperty()
Objectify fixe toutes les propriétés comme indexées jusqu'à ce que vous changiez
le champ (ou la classe) avec l'annotation @Unindexed.
12. Atelier 2 : Différence avec SQL
Le magasin de données App Engine est conçu pour évoluer afin de permettre aux
applications de fonctionner de manière optimale au fur et à mesure que le trafic augmente.
Toutes les requêtes sur App Engine étant diffusées par des index pré-construits,
les types de requêtes pouvant être exécutés sont plus restreints que ceux autorisés
sur une base de données relationnelle avec SQL. Aucune jointure n'est prise en charge
dans le magasin de données. En outre, le magasin de données n'autorise pas le filtrage
d'inégalité sur plusieurs propriétés ni le filtrage de données basé sur les résultats
d'une sous-requête.