Ce moteur permet d’intégrer ClickHouse à RocksDB.
Paramètres du moteur :
ttl - durée de vie des valeurs. Le TTL est exprimé en secondes. Si le TTL vaut 0, une instance RocksDB standard est utilisée (sans TTL).
rocksdb_dir - chemin vers le répertoire d’une instance RocksDB existante ou chemin de destination de l’instance RocksDB créée. Ouvre la table avec le rocksdb_dir spécifié.
read_only - lorsque read_only est défini sur true, le mode lecture seule est utilisé. Pour un stockage avec TTL, la compaction ne sera pas déclenchée (ni manuellement ni automatiquement), donc aucune entrée expirée ne sera supprimée.
primary_key_name – n’importe quel nom de colonne dans la liste des colonnes.
primary key doit être spécifiée ; elle ne prend en charge qu’une seule colonne. La clé primaire sera sérialisée au format binaire comme rocksdb key.
- les colonnes autres que la clé primaire seront sérialisées au format binaire comme valeur
rocksdb, dans l’ordre correspondant.
- les requêtes avec filtrage sur la clé via
equals ou in seront optimisées en recherche de plusieurs clés dans rocksdb.
Réglages du moteur :
optimize_for_bulk_insert – la table est optimisée pour les insertions en masse (le pipeline d’insertion créera des fichiers SST et les importera dans la base de données rocksdb au lieu d’écrire dans les memtables) ; valeur par défaut : 1.
bulk_insert_block_size - taille minimale des fichiers SST (en nombre de lignes) créés par insertion en masse ; valeur par défaut : 1048449.
Exemple :
Il existe également la table system.rocksdb, qui fournit des statistiques sur rocksdb :
Vous pouvez également modifier n’importe quelle option de RocksDB via la config :
Par défaut, l’optimisation de comptage approximatif trivial est désactivée, ce qui peut affecter les performances des requêtes count(). Pour activer cette
optimisation, définissez optimize_trivial_approximate_count_query = 1. Ce paramètre affecte également system.tables pour le moteur EmbeddedRocksDB ;
activez-le pour voir des valeurs approximatives de total_rows et total_bytes.
Opérations prises en charge
Lorsque de nouvelles lignes sont insérées dans EmbeddedRocksDB, si la clé existe déjà, la valeur est mise à jour ; sinon, une nouvelle clé est créée.
Exemple :
Les lignes peuvent être supprimées à l’aide d’une requête DELETE ou de TRUNCATE.
Les valeurs peuvent être mises à jour à l’aide de la requête ALTER TABLE. La clé primaire ne peut pas être modifiée.
Une jointure direct spéciale avec des tables EmbeddedRocksDB est prise en charge.
Cette jointure directe évite de construire une table de hachage en mémoire et accède
directement aux données dans EmbeddedRocksDB.
Avec de grosses jointures, l’utilisation de la mémoire peut être nettement plus faible avec les jointures directes,
car la table de hachage n’est pas créée.
Pour activer les jointures directes :
Lorsque join_algorithm est défini sur direct, hash, les jointures directes seront utilisées
lorsque c’est possible, et hash sinon.
Créer et peupler une table EmbeddedRocksDB
Créer et peupler une table pour effectuer une jointure avec la table rdb
Définissez l’algorithme de jointure à direct
Un INNER JOIN