[JAVA] Remarques sur les familles de colonnes dans RocksDB

Qu'est-ce que les familles de colonnes RocksDB?

Même si la clé est la même dans la même base de données, si les familles de colonnes sont différentes, il sera possible d'enregistrer / référencer / supprimer. La documentation officielle dit: «Fournit un moyen de partitionner logiquement la base de données». Vous pouvez le considérer comme un concept similaire à un espace de noms. Il a les caractéristiques suivantes (le fonctionnaire est une traduction de Google, veuillez donc vous référer correctement au document officiel).

Documentation officielle https://github.com/facebook/rocksdb/wiki/Column-Families

Quand l'utilisez vous?

Honnêtement, je ne sais pas. Cependant, cela peut être utile un jour si vous savez qu'il existe une telle fonction. .. ..

Comment utiliser

public class SampleCulmunFamily {

	public void execute() throws Exception {

		//Création de DB
		try (final RocksDB db = RocksDB.open("sample")) {
			//Création d'une famille de colonnes (plusieurs ColumnFamilyDescriptor en premier
			//Pour créer plusieurs columnfamily, créez une liste de ColumnFamilyDescriptor et db.Vous pouvez le transmettre pour ouvrir
			try (final ColumnFamilyHandle columnFamilyHandle = db.createColumnFamily(
					new ColumnFamilyDescriptor("new_cf".getBytes(),
							new ColumnFamilyOptions()))) {
			}
		}

		//Créer une DB et deux familles Culmun
		final List<ColumnFamilyDescriptor> columnFamilyDescriptors = new ArrayList<>();
		//Même si vous ne spécifiez pas CulmunFamily, un CulmunFamily appelé default est créé dans les coulisses.
		//Par conséquent, cette fois, par défaut et nouveau_Vous allez créer deux familles Culmun appelées 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)) {

			//Obtenir l'identifiant de la famille Culumn
			ColumnFamilyHandle defaultColumnFamily = columnFamilyHandles.get(0);
			ColumnFamilyHandle newColumnFamily = columnFamilyHandles.get(1);

			try {
				//Inscrivez-vous avec la même clé. Utilisez l'identifiant pour trier la destination d'enregistrement.
				db.put(defaultColumnFamily, new WriteOptions(),
						"key".getBytes(), "default_value".getBytes());
				db.put(newColumnFamily, new WriteOptions(),
						"key".getBytes(), "new_cf_value".getBytes());

				//référence
				System.out.println(new String(db.get(defaultColumnFamily, "key".getBytes())));
				System.out.println(new String(db.get(newColumnFamily, "key".getBytes())));

				//Effacer
				db.delete(defaultColumnFamily, "key".getBytes());
				db.delete(newColumnFamily, "key".getBytes());

				//Supprimer la famille de colonnes
				db.dropColumnFamily(newColumnFamily);
			} finally {
				for (final ColumnFamilyHandle handle : columnFamilyHandles) {
					handle.close();
				}
			}
		}
	}
}

Recommended Posts

Remarques sur les familles de colonnes dans RocksDB
Remarques sur Java GC
Remarques sur la portée
Note privée sur AtomicReference
[Swift] Une note sur la fonction et la fermeture
Notez que Junit 4 a été ajouté à Android Studio
Un mémo sur le flux de Rails et Vue
Questions et réponses sur JDK
Une note approximative sur les tableaux Ruby et les objets de hachage
Notes autour de th: champ th: each th: objet de thymeleaf
Une note sur la fonction de départ de Ruby on Rails
Une note lors de l'examen de Javalin
À propos de l'ajout d'une fonction similaire
[Note] Une histoire sur la modification des outils de compilation Java avec VS Code