[JAVA] Hinweise zu Spaltenfamilien in RocksDB

Was sind RocksDB-Spaltenfamilien?

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).

Offizielle Dokumentation https://github.com/facebook/rocksdb/wiki/Column-Families

Wann benutzt du es?

Ich weiß es ehrlich gesagt nicht. Es kann jedoch eines Tages nützlich sein, wenn Sie wissen, dass es eine solche Funktion gibt. .. ..

Wie benutzt man

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

Hinweise zu Spaltenfamilien in RocksDB
Hinweise zu Java GC
Hinweise zum Umfang
Private Notiz über AtomicReference
[Swift] Ein Hinweis zu Funktion und Schließung
Beachten Sie, dass Junit 4 zu Android Studio hinzugefügt wurde
Ein Memo über den Fluss von Rails und Vue
Fragen und Antworten zu JDK
Eine grobe Anmerkung zu Ruby-Arrays und Hash-Objekten
Anmerkungen um th: Feld th: jedes th: Objekt von Thymeleaf
Ein Hinweis zum Seed-Feature von Ruby on Rails
Ein Hinweis bei der Untersuchung von Javalin
Informationen zum Hinzufügen einer ähnlichen Funktion
[Hinweis] Eine Geschichte über das Ändern von Java-Build-Tools mit VS-Code