google datastore & search api

32
Google Datastore & Search API

Upload: geoffrey-garnotel

Post on 21-Jul-2015

241 views

Category:

Internet


1 download

TRANSCRIPT

Google Datastore & Search API

Twitter : @celine_louvet

Github : celinelouvet

Céline Louvet

Chez Sfeir depuis 2011

Développeuse Backend Core

Java, Google Cloud Platform

TDD, Qualité de code

Google Datastore

● BDD dédiée pour AppEngine

● BDD NoSQL Schemaless

● Clé / Valeur

Google DatastoreQu’est ce que c’est ?

Cohérence forte :

La donnée est toujours cohérente entre toutes les instances

Cohérence faible :

Il faut du temps avant que toutes les données soient cohérentes entre les

instances

Google DatastorePréambule

Google Datastore

Datastore

Megastore

Bigtable

Query

Fiabilité (Réplication)

Scalabilité (Sharding automatique)

Architecture interne

Google Datastore

Datastore

Megastore

Bigtable

Query

Fiabilité (Réplication)

Scalabilité (Sharding automatique)

Bigtable

Google DatastoreQu’est ce que Bigtable ?

● 1ère base haute disponibilité et scalable de Google

● Utilisation par Google :

○ Sur plus de 60 projets

○ Web Search, Youtube, Earth, Analytics, etc.

● Dédiée au stockage : ne supporte pas les queries

Google DatastoreReprésentation de Bigtable

● Map multi-dimensionnelle, triée

○ comporte des lignes

○ une ligne comporte des colonnes

○ chaque cellule comporte plusieurs versions

de la donnée, indexées par timestamp

Row 1

Col 1

t1

t1’

Col 2

t2

t2’

Row 2

Col 1

t3

t3’

Google DatastoreOpérations sur Bigtable

● Exclusivement pour une ligne

○ Create, Read, Update & Delete

○ une cohérence forte

○ transactions

● Tri par clé de ligne

○ Permet les requêtes par plage de clés de ligne

○ Mais aucune recherche par colonne

Google Datastore

Datastore

Megastore

Bigtable

Query

Scalabilité (Sharding automatique)

Megastore

Fiabilité (Réplication)

Entity Group 1 Entity Group 2

Google DatastoreQu’apporte Megastore ?

● Réplication des données

● Cohérence acceptable

● Données réparties en “Entity

groups”Cell Cell

CommentCommentComment Comment

Cell

User

Spreadsheet Spreadsheet

Cohérence faible

Google DatastoreRéplication & scalabilité

Datacenter 1Paul

Datacenter 2Valérie

Cohérence forteEntityGroup 1

EntityGroup 2

Google DatastoreOpérations entre Entity Groups

Entity Group 1

Entity Group 2

Index globaux

Cohérence faible

Index locauxCohérence forte

EntitésModification

Queue

Entités

Index locauxCohérence forte

Google Datastore

Datastore

Megastore

Bigtable

Query

Scalabilité (Sharding automatique)

Datastore

Fiabilité (Réplication)

Google DatastoreQu’apporte Datastore ?

● Facilité de requête

○ APIs de manipulation des données (Python, Java, Go)

● Clé / Valeur

Google DatastorePrincipe du Datastore

● Combinaison de plusieurs Bigtables

○ Entities table

○ Index tables :

■ entities by kind

■ entities by property ASC

■ entities by property DESC

○ Custom indexes table

Google DatastoreDifférentes APIs

● API Low-Level

● JDO/JPA

● Frameworks externes : Objectify, Twig, Slim3, etc.

Google DatastoreDifférentes APIs

Démo

Google DatastoreDifférentes APIs en résumé

● API Low-Level

○ Meilleures performances

○ Plus de code à produire

● Objectify

○ Beaucoup moins de code

○ Des performances dégradées

○ Prise en compte des évolutions plus longue

○ Des bugs potentiels

Google Search API

● Moteur de recherche plein texte

● Document

● Scalable, shardée

Google Search APIQu’est ce que c’est ?

● Objet unique avec un id et des champs

● Plusieurs types de champs :

○ Atom

○ Text

○ HTML

○ Number

○ Date

○ Geopoint

Google Search APIDocuments

● Récupération de documents :

○ par id

○ par plage d’ids

● Recherche par contenu en respectant des critères

Google Search APIIndex

● Sur tous les champs :

la tour sombre

● Sur certains champs spécifiquement :

“author=king”

● En combinant :

“author=king AND NOT title=tour”

Google Search APIRequêtes

Google Search API

Démo

Le couple idéal

Le couple idéal

Service

DAO Search

DatastoreSearch

API

Des questions ?

Merci

Sources