Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce...
-
Upload
alexis-kinsella -
Category
Presentations & Public Speaking
-
view
159 -
download
1
Transcript of Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce...
![Page 1: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/1.jpg)
@alexiskinsella#DevoxxGTFS
INTÉGRER ET EXPLOITER LE FORMAT DE DONNÉES OUVERT GTFS. FAILS ET SUCCÈS, CE QUI MARCHE ET CE QUI NE MARCHE PAS !
@alexiskinsellaXebia, http://blog.xebia.frAlexis Kinsella
![Page 2: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/2.jpg)
@alexiskinsella#DevoxxGTFS
Plan
1. Présentation
2. Intégration
3. Exploitation
![Page 3: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/3.jpg)
Présentation du standard GTFS
![Page 4: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/4.jpg)
@alexiskinsella#DevoxxGTFS
Signification
General Transit Feed Specification
![Page 5: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/5.jpg)
@alexiskinsella#DevoxxGTFS
Normalisation
Normalisé par en 2005
![Page 6: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/6.jpg)
@alexiskinsella#DevoxxGTFS
Définition
Format commun pour les informations d’horaires de transports publics et données géographiques associées.
![Page 7: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/7.jpg)
@alexiskinsella#DevoxxGTFS
Objectifs
Les flux de données GTFS permettent:
1. Aux agences de transport public de publier leur données.
2. Aux développeurs d’écrire des applications qui les consomment.
![Page 8: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/8.jpg)
@alexiskinsella#DevoxxGTFS
Horaires théoriques
La norme GTFS concerne les données théoriques c’est à dire les horaires planifiés.
![Page 9: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/9.jpg)
@alexiskinsella#DevoxxGTFS
Le format GTFS
Un jeu de données est composé d’une série de fichiers textes (au format CSV) rassemblés au sein d’un fichier zip.
![Page 10: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/10.jpg)
@alexiskinsella#DevoxxGTFS
Horaires temps réel
Le format de données est basé sur protobuf … Oui, c’est :)
La norme GTFS-realtime complète la norme GTFS.
Elle vient amender les données théoriques par des données temps réel.
Le format de données est basé sur protobuf … Oui, c’est Google :)
![Page 11: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/11.jpg)
@alexiskinsella#DevoxxGTFS
Qui ?
Les données GTFS sont fournies par les agences de transport:
…
![Page 12: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/12.jpg)
@alexiskinsella#DevoxxGTFS
Pourquoi ?
Intérêt citoyen
Mouvance Open Data
Volonté politique (Etalab, …)
![Page 13: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/13.jpg)
@alexiskinsella#DevoxxGTFS
Licences
Elles sont multiples …
• Open Database License (ODbL) v1.0• SNCF Open Data• …
Et certaines réservent des surprises !
![Page 14: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/14.jpg)
@alexiskinsella#DevoxxGTFS
Licences
Droit d’audit
Comme prévu à l’article 15, la Communauté urbaine de Lyon dispose d’un droit d’audit sur le système d’information du Licencié.
« Oups ! »
![Page 15: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/15.jpg)
@alexiskinsella#DevoxxGTFS
Disparité de l’accès aux données
Certains jeux de données sont en accès libre …
D’autres sont accessibles après inscription et authentification :/
Pour d’autres, il faut déjà les trouver !
![Page 16: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/16.jpg)
@alexiskinsella#DevoxxGTFS
Disparité des jeux de données
Problèmes d’interprétation de la norme
Maturité des jeux de données assez inégale
Données sous forme de zip … Parfois même un zip
dans un zip …
![Page 17: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/17.jpg)
Un zip dans un zip ?
![Page 18: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/18.jpg)
Intégration de données GTFS
![Page 19: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/19.jpg)
@alexiskinsella#DevoxxGTFS
Facts
Entre 550Mo et 750Mo
Soit entre 11.866.989 et 15.747.594 lignes
![Page 20: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/20.jpg)
@alexiskinsella#DevoxxGTFS
Intégration
Mieux vaut être efficace …
Mais comment intégrer toutes ces lignes ?
![Page 21: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/21.jpg)
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
+ =
![Page 22: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/22.jpg)
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
Ok, Google, tu me trouves un script d’import ?
![Page 23: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/23.jpg)
![Page 24: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/24.jpg)
@alexiskinsella#DevoxxGTFS
Avantages
Facile et rapide à mettre en place !
Fonctionne Out of the Box
![Page 25: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/25.jpg)
@alexiskinsella#DevoxxGTFS
Inconvénients
Mais ce n’est pas très rapide tout ça …
![Page 26: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/26.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Date Node.js MongoDBMongoDB
DriverDurée
Juin 2014
0.10.22 2.6.1 1.3.19 22m41s
![Page 27: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/27.jpg)
@alexiskinsella#DevoxxGTFS
Inconvénients
Ah Oui, Node.js fonctionne sur 1 core …
Dommage ma machine en a 8 !Ah ! Et mongo n’utilise qu’1 seul core pour
écrire !
![Page 28: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/28.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Au fait, ça donne quoi sur un serveur ?
![Page 29: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/29.jpg)
@alexiskinsella#DevoxxGTFS
Serveur rack 6U ?
![Page 30: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/30.jpg)
@alexiskinsella#DevoxxGTFS
Ou plutôt un Raspberry PI ?
![Page 31: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/31.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Sur un VPS 3 Cores, 4Go OVH
![Page 32: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/32.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Environs 55 minutes
![Page 33: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/33.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Malheureusement, ce n’est pas viable :/
![Page 34: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/34.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Alors, peut-on faire mieux ?
![Page 35: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/35.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Clusteriser l’import et répartir le travail d’insertion ?
![Page 36: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/36.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Pourquoi pas, mais pas forcement trivial :/
On utilise bien tous les cores mais l’amélioration de performance n’est pas
vraiment au rendez-vous …
ou
![Page 37: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/37.jpg)
Premature optimization
is the root of all evil
![Page 38: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/38.jpg)
@alexiskinsella#DevoxxGTFS
Résultat
Beaucoup de temps perdu …
N’y a-t-il pas plus simple ?
![Page 39: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/39.jpg)
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Finalement,le vrai point de contention est l’écriture en base de
données
MongoDB occupe le core d’écriture à 100%
![Page 40: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/40.jpg)
@alexiskinsella#DevoxxGTFS
Alternative …
Alors quelle solution ?
![Page 41: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/41.jpg)
@alexiskinsella#DevoxxGTFS
Alternative …
Sharder MongoDB ?
Pas une solution si on a qu’un seul serveur à disposition …
![Page 42: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/42.jpg)
![Page 43: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/43.jpg)
@alexiskinsella#DevoxxGTFS
Alternative …
Réfléchissons à nouveau !
![Page 44: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/44.jpg)
@alexiskinsella#DevoxxGTFS
Alternative …
Relationnel, comme les bases de données SQL ?
GTFS -> Export de données relationnelles …
![Page 45: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/45.jpg)
@alexiskinsella#DevoxxGTFS
Une alternative à MongoDB …
![Page 46: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/46.jpg)
@alexiskinsella#DevoxxGTFS
Des atouts …
• Base de données relationnelle
• Insertion multi cores
• Support géo-spatial fortement amélioré
avec InnoDB en 5.7
• Très bonnes performances
![Page 47: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/47.jpg)
@alexiskinsella#DevoxxGTFS
Des défauts …
• Version 5.7 en Beta
• Support géo-spatial incomplet …
• Création coûteuse des index
![Page 48: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/48.jpg)
@alexiskinsella#DevoxxGTFS
Contourner les défauts
• Créer les index en fin de traitement
• Un schéma par dataset GTFS
• Utiliser la fonctionnalité: LOAD DATA
INFILE !
![Page 49: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/49.jpg)
@alexiskinsella#DevoxxGTFS
Une alternative à Node.js …
Remplacer Node.js par Golang
![Page 50: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/50.jpg)
@alexiskinsella#DevoxxGTFS
Des avantages …
• Ultra performant
• Gestion de la concurrence efficace
![Page 51: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/51.jpg)
@alexiskinsella#DevoxxGTFS
Des inconvénients …
• Un IDE plutôt spartiate
• Un driver MySQL encore jeune
![Page 52: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/52.jpg)
@alexiskinsella#DevoxxGTFS
Le résultat ?
Temps de traitement:
9m10s en local20m15s sur serveur
Index & structures de données complémentaires compris …
![Page 53: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/53.jpg)
Exploitation de données GTFS
![Page 54: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/54.jpg)
@alexiskinsella#DevoxxGTFS
Exploiter les données
Pour en faire quoi ?
![Page 55: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/55.jpg)
@alexiskinsella#DevoxxGTFS
Objectif
Trouver les stations les plus proches d’un point géographique
et afficher les prochains horaires de passage
![Page 56: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/56.jpg)
![Page 57: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/57.jpg)
@alexiskinsella#DevoxxGTFS
Problème
Chercher toutes les informations en base est très
coûteux.
![Page 58: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/58.jpg)
@alexiskinsella#DevoxxGTFS
Problème
Entre 3 secondes et 6 secondes pour une zone
dense dans Paris avec un rayon de 1000 mètres
![Page 59: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/59.jpg)
@alexiskinsella#DevoxxGTFS
Optimisations
Optimiser l’accès aux données ?
Oui, mais comment ?
![Page 60: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/60.jpg)
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
Avec InnoDB, 2 paramètres influent
essentiellement les performances:
• innodb_buffer_pool_size = 6442450944
• max_connections = 512
![Page 61: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/61.jpg)
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
• Travailler la performance des requêtes
• Utiliser des structures de données spécialisées
• Dénormaliser
• Mais surtout …
![Page 62: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/62.jpg)
@alexiskinsella#DevoxxGTFS
MySQL - Types des données
Réécrire les fichiers de données GTFS pour changer les
clés « varchar » ou « char » en clés de type « int »
![Page 63: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/63.jpg)
@alexiskinsella#DevoxxGTFS
Une solution complémentaire ?
Utiliser un cache ?
![Page 64: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/64.jpg)
@alexiskinsella#DevoxxGTFS
Pour quelles données ?
![Page 65: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/65.jpg)
@alexiskinsella#DevoxxGTFS
La solution ?
Mise en place de Redis en tant que cache mémoire
![Page 66: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/66.jpg)
@alexiskinsella#DevoxxGTFS
Problème
Le serveur utilisé dispose de resources mémoire
limitées
![Page 67: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/67.jpg)
@alexiskinsella#DevoxxGTFS
Solution
LevelDB & dérivés
![Page 68: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/68.jpg)
@alexiskinsella#DevoxxGTFS
Solution
SSDB est une base de données en mode client /
serveur compatible avec le protocole Redis !
Replicable & load balançable
Avec un jeux d’instructions compatibles !
![Page 69: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/69.jpg)
@alexiskinsella#DevoxxGTFS
SSDB - Performance
![Page 70: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/70.jpg)
@alexiskinsella#DevoxxGTFS
Le code
Et le code source alors ?
![Page 71: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/71.jpg)
@alexiskinsella#DevoxxGTFS
Node.js & Express
L’API a été codée initialement avec Node.js & Express
Particulièrement intéressant
pour la construction d’API avec Express …
![Page 72: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/72.jpg)
@alexiskinsella#DevoxxGTFS
Node.js - Inconvénients
Néanmoins, Node.js n’aime pas les traitements coûteux en
mémoire et CPU …
Par ailleurs, les différents drivers MySQL apparaissent peu
performants
![Page 73: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/73.jpg)
@alexiskinsella#DevoxxGTFS
Node.js
Après diverses optimisations, les temps de traitement
varient toujours fortement.
Entre 780 ms et 1450 ms, ils restent long et coûteux
![Page 74: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/74.jpg)
@alexiskinsella#DevoxxGTFS
Node.js
Les solutions …
![Page 75: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/75.jpg)
@alexiskinsella#DevoxxGTFS
Node.js
Recoder l’API avec Golang !
![Page 76: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/76.jpg)
@alexiskinsella#DevoxxGTFS
Résultat
Temps de traitement réduits et plus réguliers
entre 550 ms et 770 ms
![Page 77: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/77.jpg)
@alexiskinsella#DevoxxGTFS
Golang - Avantages
Driver MySQL performant
Langage très performant pour la manipulation de
données
![Page 78: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/78.jpg)
@alexiskinsella#DevoxxGTFS
Golang - Inconvénients
Dans un style très impératif,
il est peu adapté à la manipulation de données
![Page 79: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/79.jpg)
@YourTwitterHandle@YourTwitterHandle@alexiskinsella#DevoxxGTFS
Q & A
![Page 80: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/80.jpg)
Pour aller plus loin
![Page 81: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/81.jpg)
@alexiskinsella#DevoxxGTFS
Performances & Structures des données
Améliorer les structures de données
exploitées.
Par exemple: Utiliser une taille fixe des structures de données en
base, pour cela il faut calculer la taille nécessaire à la création des
tables
![Page 82: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/82.jpg)
@alexiskinsella#DevoxxGTFS
Performances & Structures des données
Supprimer les données inutiles ou en doublon
![Page 83: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/83.jpg)
@alexiskinsella#DevoxxGTFS
Base de données
Explorer les capacités de PostgreSQL vs
MySQL
Performance, PostGIS, …
![Page 84: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/84.jpg)
@alexiskinsella#DevoxxGTFS
Fouiller le web
Le web regorge de resources sur le sujet …
GitHub en particulier !
![Page 85: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/85.jpg)
@alexiskinsella#DevoxxGTFS
Quelques sources de données …
• Data.gouv.fr: https://www.data.gouv.fr/fr/search/?q=gtfs
• GTFS Data Exchange :
http://www.gtfs-data-exchange.com/agencies
• Navitia.io : http://navitia.io/datasets
• The Transit App: http://thetransitapp.com/wishlist
![Page 87: Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !](https://reader038.fdocument.pub/reader038/viewer/2022103118/55c4df0dbb61eb957e8b46f5/html5/thumbnails/87.jpg)
@alexiskinsella#DevoxxGTFS
Resources
• Open data stickers: http://upload.wikimedia.org/wikipedia/commons/c/cc/Open_Data_stickers.jpg
• Images de la série South Park, des films Inception & Austin Powers
• http://en.wikipedia.org/wiki/Rage_comic• http://www.iconarchive.com/show/flat-file-type-icons-
by-pelfusion/zip-icon.html• Benchmark du site ssdb.io• Quelques sources inconnues, désolé …