Rust-rocksdb: Spaltenfamilien funktionieren nicht in Verbindung mit einem Zusammenführungsoperator

Erstellt am 9. Okt. 2015  ·  3Kommentare  ·  Quelle: rust-rocksdb/rust-rocksdb

Dies scheint auch ein Problem mit der C-API zu sein.

bug

Hilfreichster Kommentar

Für die Leute, die diesen Fehler sehen: _Wie öffnen Sie die Datenbank?_

Ich bin auf das Problem gestoßen und habe gesehen, dass es verschwindet, wenn ich DB::open_cf_descriptors() anstelle von DB::open_cf() . Ich glaube, das zugrunde liegende Problem ist, dass DB::open_cf() Standardoptionen auf alle erstellten Spaltenfamilien anwendet. Standardoptionen enthalten keinen Zusammenführungsoperator.

Sofern ich mich nicht irre:

  • RocksDB möchte, dass wir den Zusammenführungsoperator jeder Spaltenfamilie einzeln zuordnen und nicht der gesamten Datenbank.
  • Ein Fix (oder Workaround) bei der Verwendung von Spaltenfamilien und Zusammenführungsoperatoren wäre, set_merge_operator() für die Optionen der Spaltenfamilie zu verwenden, nicht die Optionen der DB. Dazu muss open_cf_descriptors() statt open_cf() aufgerufen werden. Hoffe das hilft.

Alle 3 Kommentare

Wie ist der Status zu diesem Fehler? Ich brauche das dringend für ein Projekt von mir. Kann ich bei irgendetwas helfen?

@tokahuke Unverändert seit der

Für die Leute, die diesen Fehler sehen: _Wie öffnen Sie die Datenbank?_

Ich bin auf das Problem gestoßen und habe gesehen, dass es verschwindet, wenn ich DB::open_cf_descriptors() anstelle von DB::open_cf() . Ich glaube, das zugrunde liegende Problem ist, dass DB::open_cf() Standardoptionen auf alle erstellten Spaltenfamilien anwendet. Standardoptionen enthalten keinen Zusammenführungsoperator.

Sofern ich mich nicht irre:

  • RocksDB möchte, dass wir den Zusammenführungsoperator jeder Spaltenfamilie einzeln zuordnen und nicht der gesamten Datenbank.
  • Ein Fix (oder Workaround) bei der Verwendung von Spaltenfamilien und Zusammenführungsoperatoren wäre, set_merge_operator() für die Optionen der Spaltenfamilie zu verwenden, nicht die Optionen der DB. Dazu muss open_cf_descriptors() statt open_cf() aufgerufen werden. Hoffe das hilft.
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

iSynaptic picture iSynaptic  ·  5Kommentare

zach-schoenberger picture zach-schoenberger  ·  5Kommentare

alex88 picture alex88  ·  7Kommentare

rrichardson picture rrichardson  ·  7Kommentare

eupn picture eupn  ·  3Kommentare