Rust-rocksdb: les familles de colonnes ne fonctionnent pas avec un opérateur de fusion

Créé le 9 oct. 2015  ·  3Commentaires  ·  Source: rust-rocksdb/rust-rocksdb

Cela semble également être un problème avec l'API C.

bug

Commentaire le plus utile

Pour ceux qui voient ce bogue : _Comment ouvrez-vous la base de données ?_

J'ai rencontré le problème et je l'ai vu disparaître si j'utilise DB::open_cf_descriptors() , au lieu de DB::open_cf() . Je pense que le problème sous-jacent est que DB::open_cf() applique les options par défaut à toutes les familles de colonnes qu'il crée. Les options par défaut n'incluront pas d'opérateur de fusion.

Sauf erreur de ma part :

  • RocksDB souhaite que nous associions l'opérateur de fusion individuellement à chaque famille de colonnes, et non à l'ensemble de la base de données.
  • Un correctif (ou une solution de contournement) lors de l'utilisation de familles de colonnes et d'opérateurs de fusion serait d'utiliser set_merge_operator() sur les options de la famille de colonnes, et non sur les options de la base de données. Pour ce faire, open_cf_descriptors() doit être appelé au lieu de open_cf() . J'espère que cela t'aides.

Tous les 3 commentaires

Quel est l'état de ce bug ? J'en ai vraiment besoin pour un de mes projets. Puis-je aider avec quoi que ce soit ?

@tokahuke Inchangé depuis son dépôt. Ce qui aiderait, c'est de confirmer s'il s'agit d'un bogue avec cette bibliothèque de wrapper Rust, ou s'il s'agit d'un problème avec la bibliothèque Facebook RocksDB en amont. Si c'est en amont, nous ne pouvons probablement rien résoudre ici et un problème devrait être ouvert contre la bibliothèque en amont.

Pour ceux qui voient ce bogue : _Comment ouvrez-vous la base de données ?_

J'ai rencontré le problème et je l'ai vu disparaître si j'utilise DB::open_cf_descriptors() , au lieu de DB::open_cf() . Je pense que le problème sous-jacent est que DB::open_cf() applique les options par défaut à toutes les familles de colonnes qu'il crée. Les options par défaut n'incluront pas d'opérateur de fusion.

Sauf erreur de ma part :

  • RocksDB souhaite que nous associions l'opérateur de fusion individuellement à chaque famille de colonnes, et non à l'ensemble de la base de données.
  • Un correctif (ou une solution de contournement) lors de l'utilisation de familles de colonnes et d'opérateurs de fusion serait d'utiliser set_merge_operator() sur les options de la famille de colonnes, et non sur les options de la base de données. Pour ce faire, open_cf_descriptors() doit être appelé au lieu de open_cf() . J'espère que cela t'aides.
Cette page vous a été utile?
0 / 5 - 0 notes