Difference between revisions of "VT2020-QuestDB-Fiche"

From air
Jump to navigation Jump to search
Line 29: Line 29:
   
 
== "''designated timestamp''" ==
 
== "''designated timestamp''" ==
  +
  +
L'attribut "''designated timestamp''" permet de spécifier une colonne dans une table qui aura des fonctionnalités supplémentaire. Effectuer des requêtes sur une colonne qui possède l'attribut réduit grandement le temps d’exécution.
   
 
=== Propriétés ===
 
=== Propriétés ===
  +
- Une seule colonne peut être désignée "''designated timestamp''" par table.
  +
  +
- Seule une colonne "''timestamp''" peut être désignée.
  +
  +
- L'attribut se fixe uniquement lors de la création d'un table ou d'une sous-table.
  +
  +
- Une fois qu'une colonne possède l'attribut, il n'est plus possible d'insérer des données plus ancienne que la dernière ajoutée.
  +
   
 
=== Avantages ===
 
=== Avantages ===
   
  +
En plus du temps réduit de requête, "''designated timestamp''" offre d'autres avantages :
=== Exemple ===
 
  +
  +
- Créer des partitions de tables.
  +
  +
- Utiliser des JOIN sur le temps, comme "''ASOF JOIN''".
  +
   
 
== Partitions ==
 
== Partitions ==
  +
QuestDB permet de partitionner les données en fonction du temps. Chaque partition est stockée dans un fichier différent.
   
 
=== Propriétés ===
 
=== Propriétés ===
  +
  +
- Les partitions peuvent être crée par intervalle de jours, mois, ou année. (DAY, MONTH, YEAR)
  +
  +
- Par défaut, un table n'est pas partitionnée. (NONE)
  +
  +
- Une partition est définie lors de la création d'une table.
   
 
=== Avantages ===
 
=== Avantages ===

Revision as of 16:54, 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"

L'attribut "designated timestamp" permet de spécifier une colonne dans une table qui aura des fonctionnalités supplémentaire. Effectuer des requêtes sur une colonne qui possède l'attribut réduit grandement le temps d’exécution.

Propriétés

- Une seule colonne peut être désignée "designated timestamp" par table.

- Seule une colonne "timestamp" peut être désignée.

- L'attribut se fixe uniquement lors de la création d'un table ou d'une sous-table.

- Une fois qu'une colonne possède l'attribut, il n'est plus possible d'insérer des données plus ancienne que la dernière ajoutée.


Avantages

En plus du temps réduit de requête, "designated timestamp" offre d'autres avantages :

- Créer des partitions de tables.

- Utiliser des JOIN sur le temps, comme "ASOF JOIN".


Partitions

QuestDB permet de partitionner les données en fonction du temps. Chaque partition est stockée dans un fichier différent.

Propriétés

- Les partitions peuvent être crée par intervalle de jours, mois, ou année. (DAY, MONTH, YEAR)

- Par défaut, un table n'est pas partitionnée. (NONE)

- Une partition est définie lors de la création d'une table.

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