QuestDB: Une perspective
nouvelle pour les bases de
données temporelles
Paris Time-Series Meetup
Méril Pilon
Développeur full-stack
Octobre 2020
Slide 2
Slide 2 text
À propos
Méril Pilon
Multi langages / technologies
Open-source
Focus sur l’expérience utilisateur
@mpsq
@merildev (keybase)
Slide 3
Slide 3 text
01
QuestDB
Pourquoi et comment?
03
Questions / Réponses
02
“Out-of-order”
Le problème, notre solution
Sommaire
Slide 4
Slide 4 text
01
Slide 5
Slide 5 text
Base de données “time-series”
Optimisée pour les architectures modernes
Avec support du langage de requête SQL
En résumé
Slide 6
Slide 6 text
Les faits
C & C++ / Java / TypeScript
Open-source (licence Apache 2.0)
Pas de dépendances
Binaire de ~4 MO
Slide 7
Slide 7 text
En détails
Cohérence
des données
Partitions par
intervalles
Modèle de données
en colonnes
Optimisations pour les
CPU modernes
Slide 8
Slide 8 text
Facilité d’utilisation
Expose un modèle relationnel avec
support de requêtes JOIN
Extensions du langage SQL pour
time series
Postgres wire
InfluxDB Line Protocol (ILP)
Machine de Rube Goldberg - wikipedia.org - Domaine Public
Slide 9
Slide 9 text
Console Web
Slide 10
Slide 10 text
Déploiement
Docker
Helm Chart pour Kubernetes
AMIs (bientôt!)
Binaires (avec ou sans JVM)
Mode embarqué pour applications Java
Slide 11
Slide 11 text
“Out-of-order”
ou
Ingestion de données non triées
temporellement
ou
Dans le désordre
02
Slide 12
Slide 12 text
Contraintes structurelles : ajout des données
seulement, “append only”
Contraintes de performance : les insertions ne
doivent pas impacter la lecture
Le problème
Slide 13
Slide 13 text
L’approche
commune
Log-structured merge-tree
(LSM)
By courtesy of John Pradeep medium.com/@yehohanan7
Slide 14
Slide 14 text
Réception des données
Commit
Tri radix du timestamp
Notre solution
Étape 1
Slide 15
Slide 15 text
Notre solution
Étape 2
Propagation du tri aux autres
colonnes en parallèle
Slide 16
Slide 16 text
Notre solution
Étape 3
Découpe de la colonne en
tranches
Ajout “simple” du préfixe ou
suffixe
Réconciliation avec la partie
intermédiaire
Slide 17
Slide 17 text
Merci à tous !
03
Pour en savoir plus:
- questdb.io
- github.com/questdb/questdb
Notre communauté sur Slack:
- slack.questdb.io