Difference between revisions of "VT2020-QuestDB-Fiche"

From air
Jump to navigation Jump to search
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.
== designated timestamp ==
 
  +
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 ===
 
=== 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

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

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

Site officiel de QuestDB

Github de QuestDB

Veille Technologique 2020