public Store(string path) { var families = new ColumnFamilies(); db = RocksDb.OpenReadOnly(Options.Default, Path.GetFullPath(path), families, false); defaultFamily = db.GetDefaultColumnFamily(); }
public Store(string path) { var families = new ColumnFamilies(); try { foreach (var family in RocksDb.ListColumnFamilies(Options.Default, Path.GetFullPath(path))) { families.Add(new ColumnFamilies.Descriptor(family, new ColumnFamilyOptions())); } } catch { } db = RocksDb.Open(Options.Default, Path.GetFullPath(path), families); ColumnFamilyHandle defaultFamily = db.GetDefaultColumnFamily(); byte[] value = db.Get(SYS_Version, defaultFamily, Options.ReadDefault); if (value != null && Version.TryParse(Encoding.ASCII.GetString(value), out Version version) && version >= Version.Parse("3.0.0")) { return; } if (value != null) { // Clean all families only if the version are different Parallel.For(0, byte.MaxValue + 1, (x) => db.DropColumnFamily(x.ToString())); _families.Clear(); } // Update version db.Put(SYS_Version, Encoding.ASCII.GetBytes(Assembly.GetExecutingAssembly().GetName().Version.ToString()), defaultFamily, Options.WriteDefault); }
public IStore GetStore(string?path) { if (path == null) { return(new RocksDbStore(db, db.GetDefaultColumnFamily(), readOnly, shared: true)); } if (db.TryGetColumnFamily(path, out var columnFamily)) { return(new RocksDbStore(db, columnFamily, readOnly, shared: true)); } if (!readOnly) { columnFamily = db.CreateColumnFamily(defaultColumnFamilyOptions, path); return(new RocksDbStore(db, columnFamily, readOnly, shared: true)); } throw new InvalidOperationException("invalid store path"); }
static ColumnFamilyHandle GetColumnFamilyHandle(RocksDb db, string?columnFamilyName) { return(string.IsNullOrEmpty(columnFamilyName) ? db.GetDefaultColumnFamily() : db.GetColumnFamily(columnFamilyName)); }