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).
Un fonctionnement atomique vers différentes familles de colonnes est possible Cela signifie que l'écriture ({cf1, clé1, valeur1}, {cf2, clé2, valeur2}) peut être effectuée de manière atomique. cf1 et cf2 sont les spécifications des familles de colonnes.
Vue cohérente des familles de colonnes dans la base de données Ce n'est pas bien compris
Possibilité de configurer différentes familles de colonnes individuellement Ce n'est pas bien compris
Vous pouvez ajouter et supprimer de nouvelles familles de colonnes. Les deux opérations sont assez rapides Comme décrit
Documentation officielle https://github.com/facebook/rocksdb/wiki/Column-Families
Honnêtement, je ne sais pas. Cependant, cela peut être utile un jour si vous savez qu'il existe une telle fonction. .. ..
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