2017-12-14 2 views
1

RocksDB Neuling hier.Session-only memtable Updates/Zusammenführungen in RocksDB

In Laufzeit verwende ich nur RocksDB zu lesen Sie die Daten. Manchmal muss ich sitzungsspezifische Datensätze aus anderen Quellen zusammenführen.

Ich möchte nicht, dass sie in die Hauptdatenbank zusammengeführt werden. Ich möchte, dass sie nur während der Sitzungsdauer für diese bestimmte Sitzung existieren.

Ich kann natürlich einen regulären std :: Vektor oder etwas verwenden und die RocksDB und die anderen Quellen zusammenführen, aber das würde die Daten duplizieren.

Ich sehe eine Reihe von Konzepten wie memtable und merge, die klingen, als ob sie verwendet oder ausgenutzt werden könnten. Zum Beispiel, wenn ich memtable sagen kann, niemals zu committen und die Änderungen einfach aufzugeben, sollte das funktionieren. Ist es machbar?

Antwort

0

Der einfachste Weg ist wahrscheinlich, sie in verschiedene column families zu trennen, und nur die, die Sie nicht beibehalten möchten, wenn Sie Ihre Anwendung herunterfahren. Wenn Sie eine Lebensdauer pro Eintrag benötigen, müssen Sie wahrscheinlich eine benutzerdefinierte Eigenschaft wie eine RAII-Holder-Klasse in Betracht ziehen, wenn Sie C++ verwenden, das bei der Konstruktion eingefügt wird und bei der Zerstörung gelöscht wird. Ich würde immer noch mit einer separaten Spalte Familie gehen, um die Daten sauber getrennt zu haben, im Falle eines Crash-Versagens.

+0

Danke, @midor. Eigentlich wollte ich "Zeilen" hinzufügen, nicht "Spalten" - und sie stammen aus anderen Datenbanken. Funktioniert Ihr Rat in diesem Fall noch? –

+0

Ich habe das verstanden, aber was Sie vorhatten, würde sich mit der Implementierung herumschlagen. Wenn man bedenkt, dass man nur lesen muss, könnte man natürlich auch die Datenbank aus einem Backup wiederherstellen und dann einfach manipulieren und die Datenbank beim Herunterfahren löschen. Beim nächsten Start laden Sie das Backup erneut und nichts hat sich geändert. Der Nachteil ist, dass Sie die Originaldaten nicht online manipulieren können. – midor

+0

Danke nochmal. Meh :) . Ich denke, ich mische diese beiden einfach in Erinnerung. –

Verwandte Themen