SlideShare une entreprise Scribd logo
1  sur  87
@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 !
@alexiskinsella
Xebia, http://blog.xebia.fr
Alexis Kinsella
@alexiskinsella#DevoxxGTFS
Plan
1. Présentation
2. Intégration
3. Exploitation
Présentation du standard GTFS
@alexiskinsella#DevoxxGTFS
Signification
General Transit Feed Specification
@alexiskinsella#DevoxxGTFS
Normalisation
Normalisé par en 2005
@alexiskinsella#DevoxxGTFS
Définition
Format commun pour les informations d’horaires de
transports publics et données géographiques
associées.
@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.
@alexiskinsella#DevoxxGTFS
Horaires théoriques
La norme GTFS concerne les données théoriques
c’est à dire les horaires planifiés.
@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.
@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 :)
@alexiskinsella#DevoxxGTFS
Qui ?
Les données GTFS sont fournies par les agences de
transport:
…
@alexiskinsella#DevoxxGTFS
Pourquoi ?
Intérêt citoyen
Mouvance Open Data
Volonté politique (Etalab, …)
@alexiskinsella#DevoxxGTFS
Licences
Elles sont multiples …
• Open Database License (ODbL) v1.0
• SNCF Open Data
• …
Et certaines réservent des surprises !
@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 ! »
@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 !
@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 …
Un zip dans un zip ?
Intégration de données GTFS
@alexiskinsella#DevoxxGTFS
Facts
Entre 550Mo et 750Mo
Soit entre 11.866.989 et
15.747.594 lignes
@alexiskinsella#DevoxxGTFS
Intégration
Mieux vaut être efficace …
Mais comment intégrer toutes ces lignes ?
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
+ =
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
Ok, Google, tu me trouves un script d’import ?
@alexiskinsella#DevoxxGTFS
Avantages
Facile et rapide à mettre en place !
Fonctionne Out of the Box
@alexiskinsella#DevoxxGTFS
Inconvénients
Mais ce n’est pas très rapide tout ça …
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Date Node.js MongoDB MongoDB Driver Durée
Juin 2014 0.10.22 2.6.1 1.3.19 22m41s
@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 !
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Au fait, ça donne quoi sur un serveur ?
@alexiskinsella#DevoxxGTFS
Serveur rack 6U ?
@alexiskinsella#DevoxxGTFS
Ou plutôt un Raspberry PI ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Sur un VPS 3 Cores, 4Go OVH
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Environs 55 minutes
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Malheureusement, ce n’est pas viable :/
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Alors, peut-on faire mieux ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Clusteriser l’import et répartir le travail d’insertion ?
@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
Premature optimization
is the root of all evil
@alexiskinsella#DevoxxGTFS
Résultat
Beaucoup de temps perdu …
N’y a-t-il pas plus simple ?
@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%
@alexiskinsella#DevoxxGTFS
Alternative …
Alors quelle solution ?
@alexiskinsella#DevoxxGTFS
Alternative …
Sharder MongoDB ?
Pas une solution si on a qu’un seul serveur à
disposition …
@alexiskinsella#DevoxxGTFS
Alternative …
Réfléchissons à nouveau !
@alexiskinsella#DevoxxGTFS
Alternative …
Relationnel, comme les bases de données SQL ?
GTFS -> Export de données relationnelles …
@alexiskinsella#DevoxxGTFS
Une alternative à MongoDB …
@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
@alexiskinsella#DevoxxGTFS
Des défauts …
• Version 5.7 en Beta
• Support géo-spatial incomplet …
• Création coûteuse des index
@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 !
@alexiskinsella#DevoxxGTFS
Une alternative à Node.js …
Remplacer Node.js par Golang
@alexiskinsella#DevoxxGTFS
Des avantages …
• Ultra performant
• Gestion de la concurrence efficace
@alexiskinsella#DevoxxGTFS
Des inconvénients …
• Un IDE plutôt spartiate
• Un driver MySQL encore jeune
@alexiskinsella#DevoxxGTFS
Le résultat ?
Temps de traitement:
9m10s en local
20m15s sur serveur
Index & structures de données complémentaires
compris …
Exploitation de données GTFS
@alexiskinsella#DevoxxGTFS
Exploiter les données
Pour en faire quoi ?
@alexiskinsella#DevoxxGTFS
Objectif
Trouver les stations les plus proches d’un point géographique
et afficher les prochains horaires de passage
@alexiskinsella#DevoxxGTFS
Problème
Chercher toutes les informations en base est très coûteux.
@alexiskinsella#DevoxxGTFS
Problème
Entre 3 secondes et 6 secondes pour une zone dense dans
Paris avec un rayon de 1000 mètres
@alexiskinsella#DevoxxGTFS
Optimisations
Optimiser l’accès aux données ?
Oui, mais comment ?
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
Avec InnoDB, 2 paramètres influent essentiellement les
performances:
• innodb_buffer_pool_size = 6442450944
• max_connections = 512
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
•Travailler la performance des requêtes
•Utiliser des structures de données spécialisées
•Dénormaliser
•Mais surtout …
@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 »
@alexiskinsella#DevoxxGTFS
Une solution complémentaire ?
Utiliser un cache ?
@alexiskinsella#DevoxxGTFS
Pour quelles données ?
@alexiskinsella#DevoxxGTFS
La solution ?
Mise en place de Redis en tant que cache mémoire
@alexiskinsella#DevoxxGTFS
Problème
Le serveur utilisé dispose de resources mémoire limitées
@alexiskinsella#DevoxxGTFS
Solution
LevelDB & dérivés
@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 !
@alexiskinsella#DevoxxGTFS
SSDB - Performance
@alexiskinsella#DevoxxGTFS
Le code
Et le code source alors ?
@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 …
@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
@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
@alexiskinsella#DevoxxGTFS
Node.js
Les solutions …
@alexiskinsella#DevoxxGTFS
Node.js
Recoder l’API avec Golang !
@alexiskinsella#DevoxxGTFS
Résultat
Temps de traitement réduits et plus réguliers
entre 550 ms et 770 ms
@alexiskinsella#DevoxxGTFS
Golang - Avantages
Driver MySQL performant
Langage très performant pour la manipulation de données
@alexiskinsella#DevoxxGTFS
Golang - Inconvénients
Dans un style très impératif,
il est peu adapté à la manipulation de données
@YourTwitterHandle@YourTwitterHandle@alexiskinsella#DevoxxGTFS
Q & A
Pour aller plus loin
@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
@alexiskinsella#DevoxxGTFS
Performances & Structures des données
Supprimer les données inutiles ou en doublon
@alexiskinsella#DevoxxGTFS
Base de données
Explorer les capacités de PostgreSQL vs MySQL
Performance, PostGIS, …
@alexiskinsella#DevoxxGTFS
Fouiller le web
Le web regorge de resources sur le sujet …
GitHub en particulier !
@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
@alexiskinsella#DevoxxGTFS
Xebia France
http://blog.xebia.fr/
@alexiskinsella#DevoxxGTFS
Resources
• Open data stickers:
http://upload.wikimedia.org/wikipedia/commons/c/cc/Open_Da
ta_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é …

Contenu connexe

En vedette

ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...Alexis Hassler
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath Alexis Hassler
 
Java- LT informatique
Java-  LT informatiqueJava-  LT informatique
Java- LT informatiqueHassanChaaban
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaAlexis Hassler
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Publicis Sapient Engineering
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & DeployAlexis Hassler
 
Asynchronismes en Javascript
Asynchronismes en JavascriptAsynchronismes en Javascript
Asynchronismes en JavascriptFlorent Le Gall
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortAlexis Hassler
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaOlivier BAZOUD
 
BackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programmingBackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programmingPublicis Sapient Engineering
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applicationsJulien Dubois
 
Java9 moduulit jigsaw
Java9 moduulit jigsawJava9 moduulit jigsaw
Java9 moduulit jigsawArto Santala
 
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiqueBackday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiquePublicis Sapient Engineering
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 

En vedette (20)

Devoxx france 2014 - Promesses et Yield
Devoxx france 2014 - Promesses et YieldDevoxx france 2014 - Promesses et Yield
Devoxx france 2014 - Promesses et Yield
 
ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
 
Java- LT informatique
Java-  LT informatiqueJava-  LT informatique
Java- LT informatique
 
Asynchronismes en JavaScript - Devoxx 2015
Asynchronismes en JavaScript - Devoxx 2015Asynchronismes en JavaScript - Devoxx 2015
Asynchronismes en JavaScript - Devoxx 2015
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & Deploy
 
Développeurs, bienvenue dans le Cloud
Développeurs, bienvenue dans le CloudDéveloppeurs, bienvenue dans le Cloud
Développeurs, bienvenue dans le Cloud
 
Asynchronismes en Javascript
Asynchronismes en JavascriptAsynchronismes en Javascript
Asynchronismes en Javascript
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mort
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Ubuntu 2012
Ubuntu 2012Ubuntu 2012
Ubuntu 2012
 
ReactiveX
ReactiveXReactiveX
ReactiveX
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
BackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programmingBackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programming
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Java9 moduulit jigsaw
Java9 moduulit jigsawJava9 moduulit jigsaw
Java9 moduulit jigsaw
 
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiqueBackday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratique
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 

Similaire à 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 !

Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !matparisot
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataGUSS
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Back day - REX vsct - Secrets de conception d’une application innovante au s...
Back day -  REX vsct - Secrets de conception d’une application innovante au s...Back day -  REX vsct - Secrets de conception d’une application innovante au s...
Back day - REX vsct - Secrets de conception d’une application innovante au s...Publicis Sapient Engineering
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Loic Ortola
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Ori Pekelman
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Quand utiliser MongoDB … Et quand vous en passer…
Quand utiliser MongoDB	… Et quand vous en passer…Quand utiliser MongoDB	… Et quand vous en passer…
Quand utiliser MongoDB … Et quand vous en passer…MongoDB
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosqlGUSS
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationWescale
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerJean-Baptiste Claramonte
 

Similaire à 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 ! (20)

Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Back day - REX vsct - Secrets de conception d’une application innovante au s...
Back day -  REX vsct - Secrets de conception d’une application innovante au s...Back day -  REX vsct - Secrets de conception d’une application innovante au s...
Back day - REX vsct - Secrets de conception d’une application innovante au s...
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Quand utiliser MongoDB … Et quand vous en passer…
Quand utiliser MongoDB	… Et quand vous en passer…Quand utiliser MongoDB	… Et quand vous en passer…
Quand utiliser MongoDB … Et quand vous en passer…
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 

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 !

Notes de l'éditeur

  1. Le sigle GTFS signifie General Transit Feed Specification.
  2. Le format de données GTFS a été normalisé par Google en 2005.
  3. Chaque fichier modèle un aspect particulier des informations du transporteur: stops, routes, trips, et autres données de planification
  4. Différentes licences régissent l’utilisation des données GTFS. Elle varient d’un transporteur à l’autre et peuvent être spécifiques à certains transporteurs (SNCF, RATP, …). On ne le dit pas assez, mais c’est important de lire le contenu des licences. Elles réservent parfois des surprises. Pour accéder aux données GTFS du Grand Lyon, disponibles depuis février de cette année, il est nécessaire de s’inscrire puis de signer une licence : La licence engagée… Elle est très particulière car elle impose à son consommateur un droit de regard sur l’usage qu’en est fait des données, et pour garantir cela son producteur s’arroge le droit par la signature de la licence, un droit d’audit de votre système … Pensez en ce que vous voulez, mais je ne suis pas prêt à ouvrir l’accès de mes serveurs en l’échange de l’accès à des données d’intérêt public.
  5. Notamment au niveau de la gestion des calendriers et exceptions aux calendriers
  6. Permet d’exploiter tous les cores d’une machine
  7. Support des dates perfectible