17
#azurecamp NoSQL Thomas Conté, Microsoft Antoine Perrin 24 juin 2014

[AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Embed Size (px)

DESCRIPTION

[AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Citation preview

Page 1: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

#azurecampNoSQL

Thomas Conté, MicrosoftAntoine Perrin

24 juin 2014

Page 2: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Tour d’horizon et retour d’expérience par Alkemics

Rappels/nouveautés Azure Tables

Zoom sur Cassandra, HBase

Au programme

Page 3: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

#azurecampAlkemics

Page 4: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

#azurecampAzure Tables

Page 5: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Stockage NoSQL structuré et massivement évolutif accessible via un protocole OData simple d’emploi (AtomPub ou JSON)

Recherches clés/valeurs à l’échelle

Pour stocker des informations utilisateurs, devices, ou tout type de métadonnées pouvant être récupéré par une clé d’index unique

Azure Tables

Page 6: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Les données sont géo-répliquées sur des régions séparées par des centaines de kilomètresProcure une durabilité des données en cas de catastrophe majeureDisponible pour Blobs, Tables et Queues

L’utilisateur choisir la région primaire lors de la création du compteChaque région primaire a une secondaire prédéfinie

Géo-réplication asynchronePas dans le chemin critique des requêtes

Geo Redundant Storage (GRS)

US West US East

US North US South

US Central US East 2

Europe North Europe West

Asia East Asia South East

China North China South

Japan East Japan West

South Brazil US South

Page 7: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Accès en lecture seule au secondaire même si le primaire n’est pas disponible

Accès à une copie « éventuellement consistante » de la donnée sur l’autre région

L’application doit être conçue pour prendre en compte l’aspect éventuellement consistant des lectures

Accès Read-Only au GRS (RA-GRS)

Page 8: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Customers using GRS can opt to have read-only access to the eventually consistent copy of data on SecondaryCustomer selects primary region, and the secondary region is fixed

Get two endpoints for accessing your storage account

Primary endpointaccountname.<service>.core.windows.net

Secondary endpointaccountname-secondary.<service>.core.windows.net

Applications control which location they read data fromUse one of the above two endpointsOur client libraries provides features to select location

Retry options: PrimaryOnly, SecondaryOnly, PrimaryThenSecondary, etc.

RA-GRS – How it Works? (1 of 2)

Page 9: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Same storage keys work for both endpoints

ConsistencyAll Writes go to the PrimaryReads to Primary are Strongly Consistent Reads to Secondary are Eventually Consistent

Applications can query the current max geo-replication delay for each service (blob, table, queue) in their storage account

Separate storage analytics metrics for primary and secondary locations

RA-GRS – How it Works? (2 of 2)

Page 10: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

#azurecampCassandra

Page 11: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Cassandra a été conçu pour des déploiements répartis sur plusieurs datacenters

Replication Factor

Nombre et emplacement des réplicas

Consistency Level

Ajustable READ / WRITE

LOCAL_QUORUM, EACH_QUORUM

Cluster Cassandra géo-distribué

Page 12: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Création de deux VNetrégionaux connectés

Utilisation de Traffic Managerpour répartir la chargesur deux frontaux

Cluster Cassandra géo-distribué

Page 13: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

demo246@cnodex1x1:~$ nodetool status azuredcsDatacenter: 1=============Status=Up/Down|/ State=Normal/Leaving/Joining/Moving-- Address Load Tokens Owns (effective) Host ID RackUN 10.1.1.11 159.67 KB 256 100.0% ab8c6941-2337-4572-87cd-737d7edd0e03 1UN 10.1.1.12 188.61 KB 256 100.0% c1ba8e91-dbeb-43ef-8b26-fcabdfcd369d 1UN 10.1.1.13 188.43 KB 256 100.0% bbed2365-14b7-4e13-b0ef-6b061e0f7039 1Datacenter: 2=============Status=Up/Down|/ State=Normal/Leaving/Joining/Moving-- Address Load Tokens Owns (effective) Host ID RackUN 10.2.1.11 195.6 KB 256 100.0% cfbb2ea8-3451-4b55-95a9-cc5f30cc0f11 1UN 10.2.1.13 201.29 KB 256 100.0% 7a711759-4c06-47ca-8367-71e67724daaf 1UN 10.2.1.12 213.21 KB 256 100.0% 331496b3-24ff-49e2-806a-bc186dfacdd5 1

Cluster Cassandra géo-distribué

Page 14: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

Cluster Cassandra géo-distribué

Page 15: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

cluster = Cluster(['10.1.1.11', '10.1.1.12', '10.1.1.13', '10.2.1.11', '10.2.1.12', '10.2.1.13'], load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='1'))

session = cluster.connect('azuredcs')

hostname = socket.gethostname()

@app.route("/")def index(): rows = session.execute('SELECT * FROM test') return render_template('index.html', rows=rows, hostname=hostname)

Cluster Cassandra géo-distribué

Page 16: [AzureCamp 24 Juin 2014] NoSQL par Thomas Conté

#azurecamp

Autres actualités NoSLQ