Les sujets abordés:
- Architecture
- ACID
- Conception de BDD
- Bonnes pratiques SQL
- Demo ( chargement par dataflow, LMD non partitionné ou non, plan d'exécution, ... )
- Limites de Spanner
Légère mise à jour de l'introduction aux bases de données NoSQL faite pour l'Ensim (Ecole Nationale Supérieure d'Ingénieurs du Mans), niveau Master en Janvier 2014. Ajout d'exemples et d'une présentation rapide des APIs majeures.
Cet exposé donnera un aperçu du paysage NoSQL et une classification pour les différentes catégories architecturales, clarifiera les concepts de base et la terminologie, et fournira une comparaison des caractéristiques, des forces et des inconvénients des projets les plus populaires (CouchDB, MongoDB , Riak, Redis, Membase, Neo4j, Cassandra, HBase, Hypertable).
Les bases de données NoSQL bénéficient d'une large couverture médiatique, mais il semble y avoir beaucoup de confusion autour de celles-ci, comme dans quelles situations elles fonctionnent mieux qu'une base de données relationnelle, et comment choisir l'une plutôt qu'une autre.
La dernière génération des bases de données ont les particularités suivante :
Être non relationnel, distribuée , open source et scalable.
Ce mouvement commence en 2009 et est entrain de grandir rapidement et avec beaucoup d'engouement.
La conférence a pour but de présenté les principales base noSql accessible en python. Elle sera agrémentée pour chaque base de donnée (environ 4, 10 min chacune) d'une présentation informative, d'une modélisation de schéma et d'un exemple d'application accédant au donnée (en python).
Légère mise à jour de l'introduction aux bases de données NoSQL faite pour l'Ensim (Ecole Nationale Supérieure d'Ingénieurs du Mans), niveau Master en Janvier 2014. Ajout d'exemples et d'une présentation rapide des APIs majeures.
Cet exposé donnera un aperçu du paysage NoSQL et une classification pour les différentes catégories architecturales, clarifiera les concepts de base et la terminologie, et fournira une comparaison des caractéristiques, des forces et des inconvénients des projets les plus populaires (CouchDB, MongoDB , Riak, Redis, Membase, Neo4j, Cassandra, HBase, Hypertable).
Les bases de données NoSQL bénéficient d'une large couverture médiatique, mais il semble y avoir beaucoup de confusion autour de celles-ci, comme dans quelles situations elles fonctionnent mieux qu'une base de données relationnelle, et comment choisir l'une plutôt qu'une autre.
La dernière génération des bases de données ont les particularités suivante :
Être non relationnel, distribuée , open source et scalable.
Ce mouvement commence en 2009 et est entrain de grandir rapidement et avec beaucoup d'engouement.
La conférence a pour but de présenté les principales base noSql accessible en python. Elle sera agrémentée pour chaque base de donnée (environ 4, 10 min chacune) d'une présentation informative, d'une modélisation de schéma et d'un exemple d'application accédant au donnée (en python).
Objectif général : Concevoir une base de données
Objectifs opérationnels :
- Comprendre les différents concepts entourant les BD
- Comprendre les concepts associés aux BD relationnelles
- Établir un dictionnaire de données (DD)
- Structurer les données du DD
- Construire un Modèle Conceptuel des Données (MCD)
- Transformer un MCD en Modèle logique de données (MLD)
- Normaliser un MLD
Avec Enterprise Cloud Databases, découvrez un service dédié, entièrement géré et surveillé, basé sur le système de gestion de bases de données relationnelle PostgreSQL, qui garantit une haute disponibilité pour vos charges de travail les plus critiques.
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackMicrosoft Décideurs IT
Microsoft apporte son expérience dans la conception et la gestion des centres de données et du cloud avec un système convergent entièrement validé et intégré en usine. CPS associe une pile logicielle éprouvée avec Windows Server 2012 R2 et System Center 2012 R2, le portail Windows Azure Pack et les infrastructures serveurs, stockage et équipements réseau de DELL. Basé sur un bloc de construction évolutif et extensible, CPS raccourcit le temps de mise en œuvre tout en proposant une expérience cohérente du cloud telle que demandée par vos métiers.
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
Un parc informatique d’un millier de machines génère de nombreux Terra Octets de logs. Comment parvenir à y retrouver une information pertinente et comment valoriser les informations contenues dans ces logs ?
Au programme :
- La centralisation des logs : back to basics;
- Cas pratiques : détection d’attaques DoS et refacturation sur plateforme mutualisée;
- Une grille Hadoop : en quoi ça consiste ?
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...SpikeeLabs
Du test unitaire, au linting en passant par les tests end-to-end, l’intégration continue du logiciel est devenu un standard de l’industrie.
En revanche, dans les organisations où la plateforme de déploiement est on-premises ou gérée en interne, le contrat de communication entre les développeurs et les responsables opérationnels (SRE, Sysadmin..) n’est pas toujours très clair : seuls certains développeurs sont réellement impliqués dans le déploiement du produit.
La philosophie DevOps a encore son mot à dire ! L’ensemble des développeurs doit s’impliquer dans la livraison, le déploiement et l’observation du logiciel en production. Dès lors, il faut établir un contrat de communication et mettre en place des outils et process pour réduire les frictions entre développeurs et opérateurs.
Dans cette présentation, je vous présente un retour sur expérience sur la phase d’industrialisation du déploiement et de la livraison continue grâce à #kubernetes et #kustomize, qui a été au cœur de mes missions durant mon alternance chez SpikeeLabs et en collaboration avec Unyc !
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...Paris Open Source Summit
#Data management & #Blockchain - Track - Data : from stream processing to data lakes and data science
Toute organisation a un système d’information réparti sur un nombre d’applications plus ou moins important. Aujourd’hui elle cherche à obtenir une vision homogène, fédérée, quasi temps réel de son activité, si bien que nous avons des demandes client pour lesquelles il est question de fournir aux métiers une information « instantanée » et non plus vielle de 5 minutes !
Capturer les changements dans les bases de données, le CDC, cela existe depuis longtemps, mais avec une mise en œuvre ô combien complexe, et couteuse en performance !
Debezium est une plateforme distribuée et open source dédié au CDC. Sa simplicité de mise en œuvre, son ouverture (open source, multi bases de données, multi plateformes de streaming…), ses performances la rendent unique et la placent telle une brique incontournable du système d’information. Avec Debezium, les métiers vont enfin avoir des indicateurs de leurs processus instantanément, couvrant ainsi de nombreux cas d’usage (personnalisation client, audit, vision client 360° instantanée, monitoring temps réel...)
Notre talk a pour but de faire connaître Debezium, une couche manquante à Apache Kafka pour mieux dialoguer avec les systèmes d’information actuels (legacy) et apporter du « streaming » aux bases de données classiques.
Objectif général : Concevoir une base de données
Objectifs opérationnels :
- Comprendre les différents concepts entourant les BD
- Comprendre les concepts associés aux BD relationnelles
- Établir un dictionnaire de données (DD)
- Structurer les données du DD
- Construire un Modèle Conceptuel des Données (MCD)
- Transformer un MCD en Modèle logique de données (MLD)
- Normaliser un MLD
Avec Enterprise Cloud Databases, découvrez un service dédié, entièrement géré et surveillé, basé sur le système de gestion de bases de données relationnelle PostgreSQL, qui garantit une haute disponibilité pour vos charges de travail les plus critiques.
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackMicrosoft Décideurs IT
Microsoft apporte son expérience dans la conception et la gestion des centres de données et du cloud avec un système convergent entièrement validé et intégré en usine. CPS associe une pile logicielle éprouvée avec Windows Server 2012 R2 et System Center 2012 R2, le portail Windows Azure Pack et les infrastructures serveurs, stockage et équipements réseau de DELL. Basé sur un bloc de construction évolutif et extensible, CPS raccourcit le temps de mise en œuvre tout en proposant une expérience cohérente du cloud telle que demandée par vos métiers.
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
Un parc informatique d’un millier de machines génère de nombreux Terra Octets de logs. Comment parvenir à y retrouver une information pertinente et comment valoriser les informations contenues dans ces logs ?
Au programme :
- La centralisation des logs : back to basics;
- Cas pratiques : détection d’attaques DoS et refacturation sur plateforme mutualisée;
- Une grille Hadoop : en quoi ça consiste ?
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...SpikeeLabs
Du test unitaire, au linting en passant par les tests end-to-end, l’intégration continue du logiciel est devenu un standard de l’industrie.
En revanche, dans les organisations où la plateforme de déploiement est on-premises ou gérée en interne, le contrat de communication entre les développeurs et les responsables opérationnels (SRE, Sysadmin..) n’est pas toujours très clair : seuls certains développeurs sont réellement impliqués dans le déploiement du produit.
La philosophie DevOps a encore son mot à dire ! L’ensemble des développeurs doit s’impliquer dans la livraison, le déploiement et l’observation du logiciel en production. Dès lors, il faut établir un contrat de communication et mettre en place des outils et process pour réduire les frictions entre développeurs et opérateurs.
Dans cette présentation, je vous présente un retour sur expérience sur la phase d’industrialisation du déploiement et de la livraison continue grâce à #kubernetes et #kustomize, qui a été au cœur de mes missions durant mon alternance chez SpikeeLabs et en collaboration avec Unyc !
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...Paris Open Source Summit
#Data management & #Blockchain - Track - Data : from stream processing to data lakes and data science
Toute organisation a un système d’information réparti sur un nombre d’applications plus ou moins important. Aujourd’hui elle cherche à obtenir une vision homogène, fédérée, quasi temps réel de son activité, si bien que nous avons des demandes client pour lesquelles il est question de fournir aux métiers une information « instantanée » et non plus vielle de 5 minutes !
Capturer les changements dans les bases de données, le CDC, cela existe depuis longtemps, mais avec une mise en œuvre ô combien complexe, et couteuse en performance !
Debezium est une plateforme distribuée et open source dédié au CDC. Sa simplicité de mise en œuvre, son ouverture (open source, multi bases de données, multi plateformes de streaming…), ses performances la rendent unique et la placent telle une brique incontournable du système d’information. Avec Debezium, les métiers vont enfin avoir des indicateurs de leurs processus instantanément, couvrant ainsi de nombreux cas d’usage (personnalisation client, audit, vision client 360° instantanée, monitoring temps réel...)
Notre talk a pour but de faire connaître Debezium, une couche manquante à Apache Kafka pour mieux dialoguer avec les systèmes d’information actuels (legacy) et apporter du « streaming » aux bases de données classiques.
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...Nicolas Desachy
Ressources cloisonnées et dépourvues de flexibilité ? Goulots d\’étranglement au niveau des performances ? Temps d\’arrêt inacceptables ? Coûts et complexité liés à l\’évolutivité ? Tâches de gestion manuelles très longues ? L’explosion des données et la croissance des transactions augmente la demande de systèmes éprouvés et capables de garantir l\’intégrité, les performances et la flexibilité tout en permettant de réaliser des économies. Si ces questions vous interpellent, cet atelier est pour vous. Vous y découvrirez les dernières nouveautés en terme de systèmes transactionnels IBM et les raisons pour lesquelles de nombreux clients migrent vers ces systèmes.
En prime : les premiers retours d’expérience de portage vers IBM DB2 9.7
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
2. A la conquête du monde
2 03/2020: Google Spanner: à la conquête du monde
3. Du début des années 1970 à l’an 2000, c’est le règne des bases relationnelles
avec deux grands leaders dans le temps, DB2 d’IBM, puis Oracle Database.
Pour répondre aux nouveaux besoins, on étend le SQL ( SQL étendu à l’OLAP,
support du XML ) et on ajoute de nouvelles briques ( ajout d’une JVM pour le
développement en Java )
Pour profiter de la puissance exponentielle des machines, on crée des clusters de
plus en plus grands ( qqes dizaines de nœuds ), des clusters répartis sur
plusieurs sites en utilisant de la fibre noire ou des appliances du style Exadata si
on recherche plus une archi verticale.
Mais subsiste un défi, comment répartir les clusters à travers les continents et
aller au-delà du transfert de fichiers ou d’un système de réplication souvent posé
en maître-esclave pour éviter les conflits de réplication ? Comment réaliser des
applications mondiales résilientes, consistantes et scalables ?
Historique & Enjeux
3 03/2020: Google Spanner: historique & enjeux
4. Des projets débutent au cours des années 2000 pour atteindre cet objectif. Les
deux plus représentatifs bénéficiant de la puissance financière du cloud sont
Cosmos de Microsoft et Spanner de Google.
J’ai choisi d’étudier Spanner car je connais l’environnement GCP. Mais Cosmos
est aussi très intéressant, je pense par exemple à la possibilité d’instancier
plusieurs modèles de données ( clé-valeur, colonne, document, graphe),
Spanner étant très SQL dans son approche.
On peut citer aussi Cockroach DB et YugaByte DB dans la famille des bases
géodistribuées
A mon avis, il s’agit de la vraie avancée technologique en terme de bases de
données des 20 dernières années, les bases NoSql ayant plutôt pour objectif de
mieux répondre à certains usages ( bases document, bases graphe, … ) ou de
délaisser l’ACID pour être plus performant en terme de concurrence d’accès
Historique & Enjeux
4 03/2020: Google Spanner: historique & enjeux
6. Deux types d’architecture: une architecture régionale et une architecture multi-
régionale
Un système de réplication au cœur du moteur, un système de fichiers distribués
composé d’instances dupliquées
Un système de réplication synchrone basé sur Paxos
Une instance dupliquée est constituée d’un ensemble de partitions, un ensemble
de lignes d’une table.
Trois types d’instance dupliquée: instance en lecture/écriture, instance en
lecture et instance témoin
Il existe une instance dupliquée principale, le pivot pour l’écriture des données.
Un point de contention possible à grande échelle ?
Les majeurs
6 03/2020: Google Spanner: les majeurs
7. Région
Architecture régionale
7 03/2020: Google Spanner: architecture régionale
Zone 1
1 instance dupliquée principale en
lecture/écriture
Stockage
1 à n nœuds de type compute
CPU + RAM
Zone 2
1 instance dupliquée en
lecture/écriture
Stockage
1 à n nœuds de type compute
CPU + RAM
Zone 3
1 instance dupliquée en
lecture/écriture
Stockage
1 à n nœuds de type compute
CPU + RAM
9. Architecture multi-régionale
9 03/2020: Google Spanner: architecture multi-régionale
Zone 1
Région 1
Région 3
Zone 2
1 instance dupliquée principale en
lecture/écriture
1 à n nœuds de type compute
Zone 1
Région 2
Zone 2
1 instance dupliquée en
lecture/écriture
1 à n nœuds de type compute
Zone 1
1 instance dupliquée témoin
1 noeud de type compute
Région 4Zone 1
1 instance dupliquée en lecture
1 à n nœuds de type compute
1 instance dupliquée principale en
lecture/écriture
1 à n nœuds de type compute
1 instance dupliquée en
lecture/écriture
1 à n nœuds de type compute
12. Les bases NoSqL (https://db-engines.com/en/ ) ont mis de côté l’ACID pour
gagner en performance, en particulier pour les mises à jour. Elles se reposent sur
CAP ( Consistency, Availability, Partition Tolerance ) en assurant deux de ses
propriétés suivant la nature de la base.
Les bases géodistribuées ont pour objectif de revenir à l’ACID sans renier la
performance et cela à l’échelle mondiale.
L’ACID recouvre quatres propriétés:
A = Atomicity : une transaction, une séquence d’opérations ( lecture, mise à jour ) délimitée
par un début et une fin s’exécute totalement ou non.
C = Consistency : une transaction part d’un point valide de la base de données ( commit à
l’instant t ) et l’amène à un autre point valide de la base de données ( commit à l’instant t’ ).
Pour ce faire, elle respecte les règles définies dans la base de données ( contraintes, triggers,
cascade, … )
I = Isolation : une transaction ne peut pas être impactée par d’autres transactions
s’exécutant en même temps, les données qu’elle utilise ne peuvent pas être écrasées par une
autre transaction
D = Durability : une transaction validée ne peut plus être perdue même si une ou plusieurs
instances s’arrêtent pour une raison matérielle ou logicielle
Pour la consistance, il y a encore débat, vous pourrez trouver des variantes,
mais elle ne garantit pas que la transaction délivre le résultat souhaité
Présentation d’ACID
12 03/2020: Google Spanner: présentation ACID
13. Une transaction est un ensemble de lectures et d'écritures qui s'exécutent de
manière atomique à un moment logique unique dans des colonnes, des lignes et
des tables d'une base de données.
Deux modes de transaction ACID:
Une transaction en lecture-écriture pour les mises à jour
Une transaction en lecture pour conserver une vue cohérente des données
Une lecture peut être effectuée sans utiliser le mode transactionnel. On distingue
deux types de lecture:
Une lecture forte pour obtenir la dernière valeur d’une donnée
Une lecture non actualisée pour obtenir une valeur du passé
Deux principaux types de verrous:
Verrou de type partagé pour les lectures
Verrou de type exclusif ou de type auteur partagé pour les écritures
Granularité: ligne et colonne
Les transactions dans Spanner
13 03/2020: Google Spanner: Transactions
21. Un deadlock est un état ou plusieurs transactions se bloquent mutuellement sur
plusieurs ressources.
Dans Spanner, le blocage potentiel de plusieurs transactions est détecté et
provoque l'abandon de toutes les transactions sauf une. Par exemple,
considérons le scénario suivant : la transaction Txn1 maintient un verrou sur
l'enregistrement A et attend un verrou sur l'enregistrement B, tandis que Txn2
maintient un verrou sur l'enregistrement B et attend un verrou sur
l'enregistrement A. Le seul moyen d'avancer dans cette situation consiste à
annuler l'une des transactions pour qu'elle procède au déverrouillage,
permettant ainsi à l'autre transaction de progresser.
La priorité est donnée aux transactions plus anciennes, on ainsi la garantie que
chaque transaction a la possibilité d'obtenir un verrou, une fois que leur
ancienneté est devenue suffisante pour leur donner une priorité plus élevée par
rapport aux autres transactions. Par exemple, une transaction qui obtient un
verrou partagé pour le lecteur peut être annulée par une transaction plus
ancienne nécessitant un verrou partagé pour l'auteur.
Le mécanisme de deadlock
21 03/2020: Google Spanner: deadlock
22. Pour les mises à jour à grande échelle ( UPDATE et DELETE ), il existe des
transactions partitionnées dont le but est de dépasser les limites des
transactions classiques et de ne pas verrouiller une table entière
La table est découpée en partitions et pour chaque partition, on dédie une transaction en lecture-
écriture
Une seule instruction en LMD partitionné peut être exécutée en une seule fois
Si une instruction en LMD partitionné échoue ou est annulée, les partitions déjà exécutées ne sont
pas restaurées, cela n’arrête que les partitions en cours d’exécution et les partitions en attente ne
sont pas démarrées
Une instruction en LMD partitionné ne traite pas les INSERT
Une transaction classique ne dépasse pas 20 000 mutations. L’unité d’une
mutation n’est pas facile à identifier, mais on peut approximativement la définir
comme une modification sur une colonne.
Les grandes transactions: LMD Partitionné
22 03/2020: Google Spanner: LMD partitionné
24. Les tables entrelaçées permettent de regrouper des données physiquement dans
une partition ou division commune. Cela permet d’optimiser la lecture des
données, on parle de clustering de données.
Exemple:
Les tables entrelaçées
24 03/2020: Google spanner: les tables entrelaçées
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
LastName STRING(1024),
SingerInfo BYTES(MAX),
) PRIMARY KEY (SingerId);
CREATE TABLE Albums (
SingerId INT64 NOT NULL,
AlbumId INT64 NOT NULL,
AlbumTitle STRING(MAX),
) PRIMARY KEY (SingerId, AlbumId),
INTERLEAVE IN PARENT Singers ON DELETE CASCADE;
25. Les tables entrelaçées
25 03/2020: Google Spanner: disposition physique
Pour répartir la charge de lecture sur plusieurs nœuds, la partition Singers(1) est placée sur un nœud 1 et
la partition Singers(2) sur un nœud 2.
26. Hotspot à l’insertion des données
26 03/2020: Google Spanner: hotspot insertion
Les lignes sont écrites dans cette table dans l'ordre d'horodatage de dernier accès, et comme les
horodatages de dernier accès ne cessent d'augmenter, ils sont toujours écrits à la fin de la table. La
création du hotspot est due au fait qu'un seul serveur Cloud Spanner va recevoir toutes les écritures, ce qui
le surchargera.
Quelques solutions:
- Permuter l’ordre des clés
- Créer une première colonne de hachage
- Utiliser un identifiant unique universel ( UUID )
27. Un index est créé par défaut pour la clé primaire.
Un index est une table.
Un index secondaire est utile pour accélérer certaines recherches.
Un index secondaire contient les éléments suivants:
Les colonnes de la clé primaire
Les colonnes décrites dans l’index
Les colonnes spécifiées dans la clause facultative STORING
Un index peut être entrelaçé.
Dans une requête, il peut être utile de préciser l’index à utiliser dans le plan
d’exécution si ce dernier ne le choisit pas par défaut => FROM
MyTable@{FORCE_INDEX=MyTableIndex}
Exemples
CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName)
CREATE INDEX SongsBySingerSongName ON Songs(SingerId, SongName),
INTERLEAVE IN Singers
Les index secondaires
27 03/2020: Google Spanner: les index secondaires
29. Utiliser des paramètres pour accélérer les requêtes fréquemment exécutées
Réduit les coûts de compilation de la requête
Evite une attaque par injection SQL
Attention, dans certains cas, peut être contre-productif. A tester, mais une répartition des valeurs non
uniforme sur une ou plusieurs colonnes pourrait obliger à un retour à des constantes
Utiliser des index secondaires pour accélérer les requêtes courantes
Optimiser la recherche par plage de clés
Utiliser UNNEST pour les listes de valeurs non adjacentes
Utiliser BETWEEN pour les listes de valeurs adjacentes
Choisir la bonne jointure et n’hésiter pas à utiliser des hints si pb de
performance, l’optimiseur étant jeune et le système ayant l’air d’être un système
full scan en mode parallèle
La directive de jointure @{FORCE_JOIN_ORDER=TRUE} indique à Cloud Spanner d'utiliser l'ordre de
jointure spécifié dans la requête
Utiliser le hint @{JOIN_TYPE=HASH_JOIN} si à gauche de la jointure, vous avez une table de petite
taille
Éviter les opérations de lecture de grande taille dans les transactions en lecture-
écriture
Un lock de type exclusif est posé sur les données lues
Bonnes pratiques SQL
29 03/2020: Google Spanner: bonnes pratiques SQL
30. Utiliser ORDER BY pour garantir l’ordre du résultat de votre requête
Utiliser STARTS_WITH au lieu de LIKE pour accélérer les requêtes SQL
paramétrées
Cloud Spanner n'évalue pas les modèles LIKE paramétrés avant l'exécution, il doit lire toutes les
lignes et les évaluer par rapport à l'expression afin d'exclure celles qui ne correspondent pas
Il peut être aussi utile d’ajouter un index sur la colonne de recherche
Bonnes pratiques SQL
30 03/2020: Google Spanner: bonnes pratiques SQL
31. Plan d’exécution: jointure non distribuée
31 03/2020: Google Spanner: jointure non distribuée
Requête: update all_sessions_index t1
set channelGrouping = ( select channelGrouping
from all_sessions
where fullVisitorId = t1.fullVisitorId )
where id = 1
35. Une base Big Query: https://console.cloud.google.com/bigquery?p=data-to-
insights&page=ecommerce
Création d’une instance Spanner à 1 ou n noeuds
Import de tables dans une instance Spanner via Dataflow
Un exemple de TP: https://codelabs.developers.google.com/codelabs/datasme-cloud-
spanner-01/index.html?index=..%2F..index#0
Environnement
35 03/2020: Goggle Spanner: environnement de la démo
45. Limite par transaction
45 03/2020: Google Spanner: Limite par transaction
Une instruction LMD est limitée à 20 000 mutations. Une mutation est
approximativement une modification sur une colonne.
Pour aller au-delà, on peut utiliser gcloud ou une bibliothèque cliente … mais
uniquement pour l’update et le delete => utilisation d’une LMD partitionnée
Pour l’insertion, il faut ruser avec cette limite des 20 000 mutations.
46. Une mutation ~ une mise à jour de colonne
46 03/2020: Google Spanner: mutation
Remarque: pas d’index sur la table cible, all_sessions_index
47. LMD partitionnée
47 03/2020: Google Spanner: LMD partitionnée
Une instruction LMD partitionnée ne s’applique qu’à des requêtes update et
delete
Une requête update imbriquée n’est pas traitée par une instruction LMD
partitionnée
49. Google concepts: https://cloud.google.com/spanner/docs/concepts
Cloud Spanner on YouTube:
https://www.youtube.com/user/googlecloudplatform/search?query=spanner
Optimizing Applications, Schemas, and Query Design on Cloud Spanner (Cloud
Next ‘18): https://www.youtube.com/watch?v=DxrdatA_ULk
How Cloud Spanner operates and how it guarantees external consistency on
reads and writes: https://www.youtube.com/watch?v=QPpSzxs_8bc
Cloud Spanner Ticketshop Demo:
https://github.com/GoogleCloudPlatform/cloudspanner-ticketshop-demo
Exemple de migration: https://cloud.google.com/solutions/migrating-oracle-to-
cloud-spanner
Pour aller plus loin
49 03/2020: Google Spanner: bibliographie
50. CAP: https://en.wikipedia.org/wiki/CAP_theorem
PAXOS: https://en.wikipedia.org/wiki/Paxos_(computer_science)
ACID: https://en.wikipedia.org/wiki/ACID
Two phase-commit: https://en.wikipedia.org/wiki/Two-phase_commit_protocol
Desiging Data-Intensive Applications, Martin Kleppmann
Pour aller plus loin
50 03/2020: Google Spanner: bibliographie
Notes de l'éditeur
Référence: https://cloud.google.com/spanner/docs/replication
Type d’instance:
Type d'instance dupliquée Peut voter Peut devenir l'instance dupliquée principale Peut diffuser des lectures
Lecture/écriture Oui Oui Oui
Lecture seule Non Non Oui
Témoin Oui Non Non
Ecriture
Les requêtes d'écriture des clients sont toujours présentées en premier lieu à l'instance dupliquée principale, même s'il existe une instance dupliquée non principale plus proche du client, ou si l'instance dupliquée principale est géographiquement distante du client.
L'instance dupliquée principale enregistre l'écriture entrante et la transmet, en parallèle, aux autres instances dupliquées ayant la capacité de voter sur cette écriture. Chaque instance dupliquée éligible effectue son écriture, puis répond à l'instance dupliquée principale en indiquant si elle vote pour ou contre la validation de l'écriture. L'écriture est validée lorsque la majorité des instances dupliquées ayant la capacité de voter (ou "quorum d'écriture") acceptent de valider l'écriture. En arrière-plan, toutes les instances dupliquées restantes (non témoins) enregistrent l'écriture. Si une instance dupliquée en lecture/écriture ou en lecture seule accuse un retard dans l'enregistrement des écritures, elle peut se procurer les données manquantes auprès d'une autre instance dupliquée afin de disposer d'une copie complète et à jour des données.
Référence: https://cloud.google.com/spanner/docs/instances
Focus sur la HA
Une configuration n’est pas modifiable
Un nœud = 2 TB de stockage
Cloud Spanner ne fait pas évoluer automatiquement le nombre de nœuds de votre instance
Chaque nœud Cloud Spanner peut fournir jusqu'à 10 000 requêtes par seconde (RPS) en lecture ou 2 000 RPS en écriture (écriture de lignes individuelles à 1 Ko de données par ligne).
Paxos is a family of protocols for solving consensus in a network of unreliable processors (that is, processors that may fail). Consensus is the process of agreeing on one result among a group of participants. This problem becomes difficult when the participants or their communication medium may experience failures.
Example: data’s writing
Consensus protocols are the basis for the state machine replication approach to distributed computing, as suggested by Leslie Lamport and surveyed by Fred Schneider. State machine replication is a technique for converting an algorithm into a fault-tolerant, distributed implementation. Ad-hoc techniques may leave important cases of failures unresolved. The principled approach proposed by Lamport et al. ensures all cases are handled safely.
The Paxos family of protocols includes a spectrum of trade-offs between the number of processors, number of message delays before learning the agreed value, the activity level of individual participants, number of messages sent, and types of failures. Although no deterministic fault-tolerant consensus protocol can guarantee progress in an asynchronous network (a result proved in a paper by Fischer, Lynchand Paterson), Paxos guarantees safety (consistency), and the conditions that could prevent it from making progress are difficult to provoke.
Paxos is usually used where durability is required (for example, to replicate a file or a database), in which the amount of durable state could be large. The protocol attempts to make progress even during periods when some bounded number of replicas are unresponsive. There is also a mechanism to drop a permanently failed replica or to add a new replica.
Chaque configuration multirégionale contient deux régions désignées comme régions de lecture/écriture, chacune contenant deux instances dupliquées en lecture/écriture. L'une de ces régions de lecture/écriture est désignée comme région principale par défaut, ce qui signifie qu'elle contient les instances dupliquées principales de votre base de données. Cloud Spanner place également une instance dupliquée témoin dans une troisième région nommée région témoin.
Lorsqu'un client émet une mutation dans votre base de données, un formulaire de quorum d'écriture est créé. Il se compose de l'une des instances dupliquées issues de la région principale par défaut et de deux des quatre instances dupliquées supplémentaires participant au vote. (Le quorum peut être constitué d'instances dupliquées provenant de deux ou trois des régions composant votre configuration, en fonction des autres instances dupliquées participant au vote.) En plus de ces cinq instances dupliquées participant au vote, la configuration peut également contenir des instances dupliquées en lecture seule permettant de diffuser des opérations de lecture à faible latence. Les régions contenant des instances dupliquées en lecture seule sont nommées régions de lecture seule.
En général, les régions participant au vote dans une configuration multirégionale sont placées dans une zone géographiquement proche (à une distance de moins de 1 600 kilomètres) pour créer un quorum à faible latence qui permet des opérations d'écriture rapides. Toutefois, les régions sont encore suffisamment éloignées les unes des autres (en général, d'au moins quelques centaines de kilomètres) pour éviter les défaillances coordonnées.
Focus sur la HA
Référence: https://cloud.google.com/spanner/docs/transactions
Transactions en lecture et écriture
Voici les propriétés d'isolation que vous obtenez pour une transaction en lecture-écriture contenant une série de lectures et d'écritures :
- Toutes les lectures de cette transaction renvoient des données du même horodatage.
- Si une transaction est validée, aucun autre auteur n'a modifié les données lues dans la transaction après lecture.
- Ces propriétés sont valables même pour les lectures qui n'affichent aucune ligne et pour les espaces entre les lignes renvoyées par les lectures de plage : les lignes inexistantes comptent comme des données.
- Toutes les écritures au sein de cette transaction sont validées au même horodatage.
- Toutes les écritures au sein de cette transaction ne deviennent visibles qu'après le commit de cette dernière.
Il en résulte que toutes les lectures et écritures semblent s'être produites à un moment donné, à la fois du point de vue de la transaction elle-même, et d'autres lecteurs et auteurs de la base de données Cloud Spanner. En d'autres termes, les opérations de lecture et d'écriture se produisent au même horodatage
Verrou exclusif
Une fois la transaction validée et les écritures appliquées, la transaction tente de passer à un verrou exclusif. Elle bloque les nouveaux verrous en lecture partagés sur les données, attend que les verrous en lecture partagés existants soient annulés, puis place un verrou exclusif pour un accès exclusif aux données.
Error: send commit request to split leader
Optimizing Applications, Schemas, and Query Design on Cloud Spanner (Cloud Next ‘18): https://www.youtube.com/watch?v=DxrdatA_ULk
L'annotation ON DELETE CASCADE signifie que, lorsqu'une ligne de la table parente est supprimée, ses lignes enfants dans cette table sont également automatiquement supprimées (c'est-à-dire toutes les lignes qui commencent par la même clé primaire). Si une table enfant ne comporte pas cette annotation ou si l'annotation affiche ON DELETE NO ACTION, vous devez supprimer les lignes enfants avant de pouvoir supprimer la ligne parent.
Référence: https://cloud.google.com/spanner/docs/secondary-indexes
Quand faut-il créer un index entrelacé ? Si la clé d'index que vous souhaitez utiliser pour les opérations d'index correspond à la clé d'une table, vous pouvez entrelacer l'index dans cette table si la ligne de la table doit avoir une relation de localité de données avec les lignes indexées correspondantes.
Par exemple, si vous souhaitez indexer toutes les lignes de la table Songs pour une ligne particulière de la table Singers, vos clés d'index contiendront les éléments SingerId et SongName. Votre index serait alors un bon candidat à entrelacer dans Singers si vous extrayez fréquemment des informations sur un chanteur lorsque vous recherchez ses chansons dans l'index.
Objectif: éviter des jointures distribuées ( https://github.com/mozilla-services/server-syncstorage/issues/107 )
Référence: https://cloud.google.com/spanner/docs/query-execution-plans
Le détail: https://cloud.google.com/spanner/docs/query-execution-operators
Jointure non distribuée car un seul nœud Spanner disponible
Index: CREATE INDEX allSessionsByCountryChannelGrouping ON all_sessions(country, channelGrouping) storing (productSKU)
Requête:
select t2.channelGrouping, t2.country, count(*) as count
from all_sessions t1 JOIN all_sessions_index t2 on t1.fullVisitorID = t2.fullVisitorID
where t1.id between 1 and 10
group by t2.channelGrouping, t2.country
order by count desc
3 noeuds Spanner
Possibilité de limiter le nombre de nœuds Dataflow et de choisir la nature de la machine
Volume de chargement des données: 5,61 Go
Latence = diffusion des données
4 VM n1-standard-16 ( 16 CPU, 60 GB RAM ) : de 42 minutes à 22 minutes …
Une VM dataflow à 64 CPU pour ne pas être limité par la machine qui charge les données
Une configuration régionale à 3, puis 6, puis 9 nœuds pour scaler Spanner
Le débit disque sature.
gcloud shell
gcloud spanner databases list –instance=instance-sentelis
Autre exemple de migration: https://cloud.google.com/spanner/docs/migrating-postgres-spanner