Difference between revisions of "VT2020-QuestDB-Fiche"
Line 10: | Line 10: | ||
== Modèle de stockage == |
== Modèle de stockage == |
||
[[File:QuestDBresume.png|400px | thumb | right | Résume du fonctionnement de QuestDB]] |
[[File:QuestDBresume.png|400px | thumb | right | Résume du fonctionnement de QuestDB]] |
||
+ | |||
+ | QuestDB utilise un modèle de stockage basé sur les '''colonnes'''. Chaque colonne d'une table est stockée dans un fichier séparé. Chaque nouvelle entrée dans une table est ajoutée à la fin de chaque fichier colonne ("''append''"), de manière a pouvoir récupérer des données dans le même ordre qu'elles ont été ajoutées. |
||
=== Écriture === |
=== Écriture === |
||
+ | Les écritures dans une tables sont effectuées à la fin de chaque fichier table une par une. La fin d'un fichier colonne est mappée dans une page mémoire de la RAM, l'ajout est donc essentiellement une écriture en mémoire. Une fois que la page mémoire est remplie, elle est dé-mappé et une nouvelle page est construite. Les données sont donc écrites dans le disque dur au moment du dé-mappage. |
||
+ | |||
+ | Cette méthode d'écriture a été conçue pour assurer un '''temps consistent''' en écriture, et une consommation de ressources minimale. |
||
=== Lecture === |
=== Lecture === |
||
+ | |||
+ | Si les données de la colonne ont une taille fixe (comme un ''int'' par exemple), alors la donnée en lecture est accessible grâce à un shift de bits, qui donne un offset dans le fichier. Cet offset est ensuite transformé en un offset dans la page mémoire correspondante, d'où on récupère la valeur. |
||
=== Atomicité === |
=== Atomicité === |
||
+ | QuestDB assure que les tables sont consistantes avec l'utilisation de l''''atomicité''' pour les mise à jour. |
||
⚫ | |||
+ | Chaque écriture, une fois effectuée, produit un commit qui valide l'insertion. Si il y a un problème, il n'y a pas de commit et donc l'opération est ''rollback''. |
||
+ | Les métadonnées sont stockées dans un fichier séparé. Il sert notamment à empêcher la lecture de données non commité. |
||
+ | |||
⚫ | |||
=== Propriétés === |
=== Propriétés === |
Revision as of 15:39, 5 December 2020
QuestDB est la base de données Open Source axée sur les séries temporelles la plus rapide.
Résumé
QuestDB est une extension du ANSI SQL classique. Il permet d'utiliser de nouvelles options lors des requêtes pour manipuler les données temporelles. La manière d'effectuer les lectures et écritures dans les tables de données à totalement était repensée et optimisée, afin d'avoir des temps d’exécution très court. L'outil dispose d'une console web intégrée, mais est également accessible à travers des requêtes REST, Postgre, et InfluxDB. Ses différentes fonctionnalités en font un outil parfait pour les entreprises qui utilisent des données temporelles précises.
Concepts
Modèle de stockage
QuestDB utilise un modèle de stockage basé sur les colonnes. Chaque colonne d'une table est stockée dans un fichier séparé. Chaque nouvelle entrée dans une table est ajoutée à la fin de chaque fichier colonne ("append"), de manière a pouvoir récupérer des données dans le même ordre qu'elles ont été ajoutées.
Écriture
Les écritures dans une tables sont effectuées à la fin de chaque fichier table une par une. La fin d'un fichier colonne est mappée dans une page mémoire de la RAM, l'ajout est donc essentiellement une écriture en mémoire. Une fois que la page mémoire est remplie, elle est dé-mappé et une nouvelle page est construite. Les données sont donc écrites dans le disque dur au moment du dé-mappage.
Cette méthode d'écriture a été conçue pour assurer un temps consistent en écriture, et une consommation de ressources minimale.
Lecture
Si les données de la colonne ont une taille fixe (comme un int par exemple), alors la donnée en lecture est accessible grâce à un shift de bits, qui donne un offset dans le fichier. Cet offset est ensuite transformé en un offset dans la page mémoire correspondante, d'où on récupère la valeur.
Atomicité
QuestDB assure que les tables sont consistantes avec l'utilisation de l'atomicité pour les mise à jour. Chaque écriture, une fois effectuée, produit un commit qui valide l'insertion. Si il y a un problème, il n'y a pas de commit et donc l'opération est rollback. Les métadonnées sont stockées dans un fichier séparé. Il sert notamment à empêcher la lecture de données non commité.
"designated timestamp"
Propriétés
Avantages
Exemple
Partitions
Propriétés
Avantages
Symboles
Propriétés
Avantages
Indexes
Avantages
Extensions SQL
Nouvelles clauses
Simplifications
Utilisation
Installation
Exécution
Références
Veille Technologique 2020
- Année : VT2020
- Sujet : QuestDB
- Présentation
- Démonstration
- Auteurs : Tom Graugnard