Selbst wenn der Schlüssel in derselben Datenbank identisch ist und die Spaltenfamilien unterschiedlich sind, können Sie sich registrieren / referenzieren / löschen. In der offiziellen Dokumentation heißt es: "Bietet eine Möglichkeit, die Datenbank logisch zu partitionieren." Sie können sich das als ein Konzept vorstellen, das einem Namespace ähnelt. Es verfügt über die folgenden Funktionen (der Beamte ist eine Google-Übersetzung, beziehen Sie sich daher bitte korrekt auf das offizielle Dokument).
Eine atomare Operation für verschiedene Spaltenfamilien ist möglich Dies bedeutet, dass das Schreiben ({cf1, key1, value1}, {cf2, key2, value2}) atomar erfolgen kann. cf1 und cf2 sind die Spezifikationen von Spaltenfamilien.
Konsistente Ansicht über alle Spaltenfamilien in der Datenbank Es ist nicht gut verstanden
Möglichkeit, verschiedene Spaltenfamilien einzeln zu konfigurieren Es ist nicht gut verstanden
Sie können neue Spaltenfamilien hinzufügen und löschen. Beide Operationen sind ziemlich schnell Wie beschrieben
Offizielle Dokumentation https://github.com/facebook/rocksdb/wiki/Column-Families
Ich weiß es ehrlich gesagt nicht. Es kann jedoch eines Tages nützlich sein, wenn Sie wissen, dass es eine solche Funktion gibt. .. ..
public class SampleCulmunFamily {
public void execute() throws Exception {
//DB-Erstellung
try (final RocksDB db = RocksDB.open("sample")) {
//Erstellen einer Spaltenfamilie (zuerst mehrere ColumnFamilyDescriptor)
//Um mehrere Spaltenfamilien zu erstellen, erstellen Sie eine Liste mit ColumnFamilyDescriptor und db.Sie können es zum Öffnen übergeben
try (final ColumnFamilyHandle columnFamilyHandle = db.createColumnFamily(
new ColumnFamilyDescriptor("new_cf".getBytes(),
new ColumnFamilyOptions()))) {
}
}
//Erstellen einer DB und zweier Culmun-Familien
final List<ColumnFamilyDescriptor> columnFamilyDescriptors = new ArrayList<>();
//Selbst wenn Sie CulmunFamily nicht angeben, wird hinter den Kulissen eine CulmunFamily namens default erstellt.
//Daher diesmal standardmäßig und neu_Sie werden zwei Culmun-Familien namens cf.
columnFamilyDescriptors.add(new ColumnFamilyDescriptor(
RocksDB.DEFAULT_COLUMN_FAMILY, new ColumnFamilyOptions()));
columnFamilyDescriptors.add(new ColumnFamilyDescriptor(
"new_cf".getBytes(), new ColumnFamilyOptions()));
final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>();
try (final DBOptions options = new DBOptions();
final RocksDB db = RocksDB.open("sample",
columnFamilyDescriptors, columnFamilyHandles)) {
//Culumn Family-ID abrufen
ColumnFamilyHandle defaultColumnFamily = columnFamilyHandles.get(0);
ColumnFamilyHandle newColumnFamily = columnFamilyHandles.get(1);
try {
//Registrieren Sie sich mit demselben Schlüssel. Verwenden Sie die Kennung, um das Registrierungsziel zu sortieren.
db.put(defaultColumnFamily, new WriteOptions(),
"key".getBytes(), "default_value".getBytes());
db.put(newColumnFamily, new WriteOptions(),
"key".getBytes(), "new_cf_value".getBytes());
//Referenz
System.out.println(new String(db.get(defaultColumnFamily, "key".getBytes())));
System.out.println(new String(db.get(newColumnFamily, "key".getBytes())));
//Löschen
db.delete(defaultColumnFamily, "key".getBytes());
db.delete(newColumnFamily, "key".getBytes());
//Spaltenfamilie löschen
db.dropColumnFamily(newColumnFamily);
} finally {
for (final ColumnFamilyHandle handle : columnFamilyHandles) {
handle.close();
}
}
}
}
}
Recommended Posts