internal static RocksDb OpenRocksDb( DbOptions options, string dbPath, ColumnFamilies columnFamilies = null) { return(columnFamilies is null ? RocksDb.Open(options, dbPath) : RocksDb.Open(options, dbPath, columnFamilies)); }
public Store(string path) { var families = new ColumnFamilies(); for (int x = 0; x <= byte.MaxValue; x++) { families.Add(new ColumnFamilies.Descriptor(x.ToString(), new ColumnFamilyOptions())); } 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 Store(string path) { var families = new ColumnFamilies(); db = RocksDb.OpenReadOnly(Options.Default, Path.GetFullPath(path), families, false); defaultFamily = db.GetDefaultColumnFamily(); }
internal static RocksDbSharp.RocksDb GetDatabase(string databasePath, SliceTransform prefixTransform) { var columnFamilies = new ColumnFamilies(); if (File.Exists(databasePath) || Directory.Exists(databasePath)) { var currentColumnFamilies = RocksDbSharp.RocksDb.ListColumnFamilies(new DbOptions(), databasePath); foreach (var columnFamily in currentColumnFamilies.ToHashSet()) { columnFamilies.Add(columnFamily, new ColumnFamilyOptions() .SetPrefixExtractor(prefixTransform) .SetBlockBasedTableFactory(new BlockBasedTableOptions() .SetWholeKeyFiltering(true) .SetIndexType(BlockBasedTableIndexType.Binary))); } } return(RocksDbSharp.RocksDb.Open(new DbOptions() .SetCreateIfMissing() .SetCreateMissingColumnFamilies() .IncreaseParallelism(10), databasePath, columnFamilies)); }
static void Main(string[] args) { var dbOptions = new DbOptions().SetCreateIfMissing().SetCreateMissingColumnFamilies(); var columnFamilies = new ColumnFamilies { { "default", new ColumnFamilyOptions().OptimizeForPointLookup(256) }, { "user", new ColumnFamilyOptions() .SetMemtableHugePageSize(2 * 1024 * 1024) .SetPrefixExtractor(SliceTransform.CreateFixedPrefix(5)) .SetBlockBasedTableFactory( new BlockBasedTableOptions().SetFilterPolicy(BloomFilterPolicy.Create(10, false)) .SetWholeKeyFiltering(false)) } }; var db = RocksDb.Open(dbOptions, "my.db", columnFamilies); var testFamily = db.GetColumnFamily("user"); db.Put("hello:hi", "hi"); for (var i = 0; i < 5; i++) { db.Put($"user:{Guid.NewGuid()}", Guid.NewGuid().ToString(), testFamily); } using (var it = db.NewIterator(testFamily)) { it.Seek(Encoding.UTF8.GetBytes("user:"******"Done!" + db.Get("hello:hi")); }
public bool Equals(Table other) { if (ReferenceEquals(other, null)) { return(false); } if (ReferenceEquals(other, this)) { return(true); } if (Name != other.Name) { return(false); } if (!object.Equals(CurrentOperation, other.CurrentOperation)) { return(false); } if (!ColumnFamilies.Equals(other.ColumnFamilies)) { return(false); } if (Granularity != other.Granularity) { return(false); } return(true); }
public void Start() { var options = new DbOptions().SetCreateIfMissing() .SetCreateMissingColumnFamilies() .SetMaxBackgroundCompactions(4) .SetMaxBackgroundFlushes(2) .SetBytesPerSync(1024 * 1024); var columnFamilies = new ColumnFamilies { { "Messages", ColumnFamilyOptions() }, { "Peers", ColumnFamilyOptions() }, { "Acks", ColumnFamilyOptions() } }; _db = RocksDbSharp.RocksDb.Open(options, _databaseDirectoryPath, columnFamilies); _messagesColumnFamily = _db.GetColumnFamily("Messages"); _peersColumnFamily = _db.GetColumnFamily("Peers"); _acksColumnFamily = _db.GetColumnFamily("Acks"); ColumnFamilyOptions ColumnFamilyOptions() => new ColumnFamilyOptions().SetCompression(CompressionTypeEnum.rocksdb_no_compression) .SetLevelCompactionDynamicLevelBytes(true) .SetArenaBlockSize(16 * 1024); LoadAllOutOfOrderAcks(); }
static void Main(string[] args) { string temp = Path.GetTempPath(); string path = Environment.ExpandEnvironmentVariables(Path.Combine(temp, "rocksdb_cf_example")); var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "reverse", new ColumnFamilyOptions() }, }; using (var db = RocksDb.Open(options, path, columnFamilies)) { var reverse = db.GetColumnFamily("reverse"); db.Put("one", "uno"); db.Put("two", "dos"); db.Put("three", "tres"); db.Put("uno", "one", cf: reverse); db.Put("dos", "two", cf: reverse); db.Put("tres", "three", cf: reverse); } using (var db = RocksDb.Open(options, path, columnFamilies)) { var reverse = db.GetColumnFamily("reverse"); string uno = db.Get("one"); string one = db.Get("uno", cf: reverse); string nada; nada = db.Get("uno"); nada = db.Get("one", cf: reverse); } using (var db = RocksDb.Open(options, path, columnFamilies)) { db.DropColumnFamily("reverse"); var reverse = db.CreateColumnFamily(new ColumnFamilyOptions(), "reverse"); var nada = db.Get("uno", cf: reverse); db.Put("red", "rouge", cf: reverse); } using (var db = RocksDb.Open(options, path, columnFamilies)) { var reverse = db.GetColumnFamily("reverse"); var nada = db.Get("uno", cf: reverse); var rouge = db.Get("red", cf: reverse); } using (var db = RocksDb.OpenReadOnly(options, path, columnFamilies, false)) { string uno = db.Get("one"); } }
private static void RocksDb3() { string directory = @"C:\Users\Peska\source\repos\Esent.Tests\RocksDB"; var bbto = new BlockBasedTableOptions() .SetFilterPolicy(BloomFilterPolicy.Create(10, false)) .SetWholeKeyFiltering(false); var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "default", new ColumnFamilyOptions().OptimizeForPointLookup(256) }, { "test", new ColumnFamilyOptions() //.SetWriteBufferSize(writeBufferSize) //.SetMaxWriteBufferNumber(maxWriteBufferNumber) //.SetMinWriteBufferNumberToMerge(minWriteBufferNumberToMerge) .SetMemtableHugePageSize(2 * 1024 * 1024) .SetPrefixExtractor(SliceTransform.CreateFixedPrefix(8)) .SetBlockBasedTableFactory(bbto) }, }; using (var db = RocksDbSharp.RocksDb.Open(options, directory, columnFamilies)) { var cf = db.GetColumnFamily("test"); db.Put("00000000Zero", "", cf: cf); db.Put("00000001Red", "", cf: cf); db.Put("00000000One", "", cf: cf); db.Put("00000000Two", "", cf: cf); db.Put("00000000Three", "", cf: cf); db.Put("00000001Black", "", cf: cf); db.Put("00000002Apple", "", cf: cf); db.Put("00000002Cranberry", "", cf: cf); db.Put("00000001Green", "", cf: cf); db.Put("00000002Banana", "", cf: cf); var readOptions = new ReadOptions().SetIterateUpperBound("00000002"); var iter = db.NewIterator(readOptions: readOptions, cf: cf); GC.Collect(); GC.WaitForPendingFinalizers(); var b = Encoding.UTF8.GetBytes("00000001"); iter = iter.Seek(b); while (iter.Valid()) { Console.WriteLine(iter.StringKey()); iter = iter.Next(); } Console.ReadKey(); } }
private RocksDb OpenRocksDb( DbOptions options, string dbName, ColumnFamilies columnFamilies = null) { var dbPath = Path.Combine(_path, dbName); return(columnFamilies is null ? RocksDb.Open(options, dbPath) : RocksDb.Open(options, dbPath, columnFamilies)); }
private static ColumnFamilies GetColumnFamilies(T[] keys) { var result = new ColumnFamilies(); foreach (var key in keys) { result.Add(key.ToString(), new ColumnFamilyOptions()); } return(result); }
static void Main(string[] args) { string temp = Path.GetTempPath(); string path = Environment.ExpandEnvironmentVariables(Path.Combine(temp, "rocksdb_prefix_example")); var bbto = new BlockBasedTableOptions() .SetFilterPolicy(BloomFilterPolicy.Create(10, false)) .SetWholeKeyFiltering(false) ; var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true) ; var columnFamilies = new ColumnFamilies { { "default", new ColumnFamilyOptions().OptimizeForPointLookup(256) }, { "test", new ColumnFamilyOptions() //.SetWriteBufferSize(writeBufferSize) //.SetMaxWriteBufferNumber(maxWriteBufferNumber) //.SetMinWriteBufferNumberToMerge(minWriteBufferNumberToMerge) .SetMemtableHugePageSize(2 * 1024 * 1024) .SetPrefixExtractor(SliceTransform.CreateFixedPrefix((ulong)8)) .SetBlockBasedTableFactory(bbto) }, }; using (var db = RocksDb.Open(options, path, columnFamilies)) { var cf = db.GetColumnFamily("test"); db.Put("00000000Zero", "", cf: cf); db.Put("00000000One", "", cf: cf); db.Put("00000000Two", "", cf: cf); db.Put("00000000Three", "", cf: cf); db.Put("00000001Red", "", cf: cf); db.Put("00000001Green", "", cf: cf); db.Put("00000001Black", "", cf: cf); db.Put("00000002Apple", "", cf: cf); db.Put("00000002Cranberry", "", cf: cf); db.Put("00000002Banana", "", cf: cf); var readOptions = new ReadOptions(); using (var iter = db.NewIterator(readOptions: readOptions, cf: cf)) { GC.Collect(); GC.WaitForPendingFinalizers(); var b = Encoding.UTF8.GetBytes("00000001"); iter.Seek(b); while (iter.Valid()) { Console.WriteLine(iter.StringKey()); iter.Next(); } } } Console.WriteLine("Done..."); }
private static ColumnFamilies GetColumnFamilies(IDbConfig dbConfig, string name, T[] keys) { var result = new ColumnFamilies(); var blockCacheSize = ReadConfig <ulong>(dbConfig, nameof(dbConfig.BlockCacheSize), name); foreach (var key in keys) { var columnFamilyOptions = new ColumnFamilyOptions(); columnFamilyOptions.OptimizeForPointLookup(blockCacheSize); columnFamilyOptions.SetBlockBasedTableFactory(new BlockBasedTableOptions().SetFilterPolicy(BloomFilterPolicy.Create())); result.Add(key.ToString(), columnFamilyOptions); } return(result); }
public DataContext(string path = "ether.db") { _lastTxIdDictionary = new Dictionary <string, long>(); var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); // Create column families IEnumerable <string> cols = null; ColumnFamilies columnFamilies = new ColumnFamilies(); try { cols = RocksDb.ListColumnFamilies(options, path); foreach (var col in cols) { columnFamilies.Add(col, new ColumnFamilyOptions()); } } catch (Exception e) { // Database not exist nothing todo } finally { _db = RocksDb.Open(options, path, columnFamilies); // Load column families to the dictionary _columnFamiliesDictionary = new Dictionary <string, ColumnFamilyHandle>(); if (cols != null) { foreach (var col in cols) { _columnFamiliesDictionary.Add(col, _db.GetColumnFamily(col)); } foreach (var col in cols) { // Load latest transaction Ids if (!col.Contains(':') && col != "default") { var lastTxIdstr = _db.Get("lastTxId", GetColFamily(col + ":lastid")); _lastTxIdDictionary.Add(col, string.IsNullOrEmpty(lastTxIdstr) ? 0 : long.Parse(lastTxIdstr)); } } } } }
static ColumnFamilies GetColumnFamilies(string path) { if (RocksDb.TryListColumnFamilies(new DbOptions(), path, out var names)) { var columnFamilyOptions = new ColumnFamilyOptions(); var families = new ColumnFamilies(); foreach (var name in names) { families.Add(name, columnFamilyOptions); } return(families); } return(new ColumnFamilies()); }
public override int GetHashCode() { int hash = 1; if (Name.Length != 0) { hash ^= Name.GetHashCode(); } hash ^= ColumnFamilies.GetHashCode(); if (Granularity != 0) { hash ^= Granularity.GetHashCode(); } return(hash); }
static RocksDb GetRocksDb() { // try find on network var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { COLUMN_FAMILY, new ColumnFamilyOptions() } }; var db = RocksDb.Open(options, _path, columnFamilies); return(db); }
private RocksDbStore(string fileName) { AppDomain.CurrentDomain.ProcessExit += (s, e) => Shutdown(); logger.Message("RocksDBStore: " + fileName); this.fileName = fileName.Replace("\\", "/"); var path = Path.GetDirectoryName(fileName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //TODO check options var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "default", new ColumnFamilyOptions().OptimizeForPointLookup(256) }, //{ "test", new ColumnFamilyOptions() // //.SetWriteBufferSize(writeBufferSize) // //.SetMaxWriteBufferNumber(maxWriteBufferNumber) // //.SetMinWriteBufferNumberToMerge(minWriteBufferNumberToMerge) // .SetMemtableHugePageSize(2 * 1024 * 1024) // .SetPrefixExtractor(SliceTransform.CreateFixedPrefix((ulong)8)) // .SetBlockBasedTableFactory(bbto) //}, }; try { var partitionList = RocksDb.ListColumnFamilies(options, path); foreach (var partition in partitionList) { columnFamilies.Add(partition, new ColumnFamilyOptions()); } } catch { logger.Warning("Inital start, no partitions created yet!"); } logger.Message("Opening database at: " + path); _db = RocksDb.Open(options, path, columnFamilies); }
private static void RocksDb2() { string directory = @"C:\Users\Peska\source\repos\Esent.Tests\RocksDB"; DbOptions options = new DbOptions().SetCreateIfMissing(); using (RocksDb rocksDb = RocksDbSharp.RocksDb.Open(options, directory)) { TestObject o1 = new TestObject { EQNum = "3L1234", Mnemonic = "20013L1234011" }; TestObject o2 = new TestObject { EQNum = "3L5678", Mnemonic = "20023L5678011" }; TestObject o3 = new TestObject { EQNum = "3L9012", Mnemonic = "20033L9012011" }; TestObject o4 = new TestObject { EQNum = "3L9012", Mnemonic = "20013L9012012" }; rocksDb.Put(o1.Mnemonic, JsonConvert.SerializeObject(o1)); rocksDb.Put(o2.Mnemonic, JsonConvert.SerializeObject(o2)); rocksDb.Put(o3.Mnemonic, JsonConvert.SerializeObject(o3)); rocksDb.Put(o4.Mnemonic, JsonConvert.SerializeObject(o4)); SliceTransform sliceTransform = SliceTransform.CreateFixedPrefix(4); BlockBasedTableOptions blockBasedTableOptions = new BlockBasedTableOptions().SetWholeKeyFiltering(false); ColumnFamilyOptions columnFamilyOptions = new ColumnFamilyOptions() .SetPrefixExtractor(sliceTransform) .SetBlockBasedTableFactory(blockBasedTableOptions); ColumnFamilies columnFamilies = new ColumnFamilies(columnFamilyOptions); Iterator iterator = rocksDb.NewIterator(); iterator = iterator.Seek("2001"); while (iterator.Valid()) { string key = iterator.StringKey(); string value = iterator.StringValue(); iterator.Next(); } } }
public Database(string path) { var columnFamilies = new ColumnFamilies { { BLOCKS_FAMILY, new ColumnFamilyOptions() }, { BLOCK_INDEX_FAMILY, new ColumnFamilyOptions() }, { TRANSACTIONS_FAMILY, new ColumnFamilyOptions() } }; var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); db = RocksDb.Open(options, path, columnFamilies); blocksFamily = db.GetColumnFamily(BLOCKS_FAMILY); blockIndexFamily = db.GetColumnFamily(BLOCK_INDEX_FAMILY); transactionsFamily = db.GetColumnFamily(TRANSACTIONS_FAMILY); }
/// <summary> /// Open <see cref="RocksDb"/> from path in configuration. /// </summary> /// <param name="path">The path of <see cref="RocksDb"/> to load.</param> /// <returns>A <see cref="RocksDb"/> instance.</returns> public RocksDb Load(string path) { var columnFamilies = new ColumnFamilies(); foreach (var columnFamily in RocksDb.ListColumnFamilies( _options, path)) { if (columnFamily is null) { continue; } columnFamilies.Add(columnFamily, new ColumnFamilyOptions()); } return(RocksDb.Open(_options, path, columnFamilies !)); }
private void Start() { var options = new DbOptions().SetCreateIfMissing() .SetCreateMissingColumnFamilies() .SetMaxBackgroundCompactions(4) .SetMaxBackgroundFlushes(2) .SetBytesPerSync(1024 * 1024); var columnFamilies = new ColumnFamilies { { "Peers", ColumnFamilyOptions() }, { "Subscriptions", ColumnFamilyOptions() } }; _db = RocksDbSharp.RocksDb.Open(options, DatabaseFilePath, columnFamilies); _peersColumnFamily = _db.GetColumnFamily("Peers"); _subscriptionsColumnFamily = _db.GetColumnFamily("Subscriptions");
static void Test9() { var dbop = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "reverse1", new ColumnFamilyOptions() }, { "reverse2", new ColumnFamilyOptions() }, }; var db = TransactionDB.Open(dbop, new TransactionDBOptions(), "transaction_db_test5", columnFamilies); var reverse = db.GetColumnFamily("reverse1"); var wop = new WriteOptions(); for (int i = 0; i < 10; i += 2) { db.Put(i.ToString(), i.ToString(), reverse); } Console.WriteLine("begin"); var t1 = Task.Run(async() => { var it = db.NewIterator(reverse); it.SeekToFirst(); while (it.Valid()) { Console.WriteLine("it:key=" + it.StringKey() + ",value" + it.StringValue()); await Task.Delay(500); it.Next(); } }); var t2 = Task.Run(async() => { for (int i = 1; i < 10; i += 2) { await Task.Delay(500); db.Remove(i.ToString()); Console.WriteLine("write key=" + i); } }); Task.WaitAll(t1, t2); }
public override int GetHashCode() { int hash = 1; if (Name.Length != 0) { hash ^= Name.GetHashCode(); } if (currentOperation_ != null) { hash ^= CurrentOperation.GetHashCode(); } hash ^= ColumnFamilies.GetHashCode(); if (Granularity != global::Google.Bigtable.Admin.Table.V1.Table.Types.TimestampGranularity.MILLIS) { hash ^= Granularity.GetHashCode(); } return(hash); }
public static RocksDbWrapper Create(IRocksDbOptionsProvider optionsProvider, string path, IEnumerable <string> partitionsList) { Preconditions.CheckNonWhiteSpace(path, nameof(path)); Preconditions.CheckNotNull(optionsProvider, nameof(optionsProvider)); DbOptions dbOptions = Preconditions.CheckNotNull(optionsProvider.GetDbOptions()); IEnumerable <string> existingColumnFamilies = ListColumnFamilies(dbOptions, path); IEnumerable <string> columnFamiliesList = existingColumnFamilies.Union(Preconditions.CheckNotNull(partitionsList, nameof(partitionsList)), StringComparer.OrdinalIgnoreCase).ToList(); var columnFamilies = new ColumnFamilies(); foreach (string columnFamilyName in columnFamiliesList) { columnFamilies.Add(columnFamilyName, optionsProvider.GetColumnFamilyOptions()); } RocksDb db = RocksDb.Open(dbOptions, path, columnFamilies); var rocksDbWrapper = new RocksDbWrapper(dbOptions, db, path); return(rocksDbWrapper); }
static void Test8() { var dbop = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "reverse1", new ColumnFamilyOptions() }, { "reverse2", new ColumnFamilyOptions() }, }; var db = TransactionDB.Open(dbop, new TransactionDBOptions(), "transaction_db_test2", columnFamilies); var reverse = db.GetColumnFamily("reverse1"); var wop = new WriteOptions(); var txnOp = new TransactionOptions(); string key = "1112"; var t1 = Task.Run(async() => { var txn = new Transaction(db, wop, txnOp); await Task.Delay(700); Console.WriteLine("11110:" + txn.Get(key, reverse)); txn.Put(key, "3002", reverse); Console.WriteLine("11111:" + txn.Get(key, reverse)); await Task.Delay(1000); Console.WriteLine("11112:" + txn.Get(key, reverse)); txn.Put(key, "3002", reverse); Console.WriteLine("11113:" + txn.Get(key, reverse) + ",thread=" + Thread.CurrentThread.ManagedThreadId); txn.Commit(); }); var t2 = Task.Run(async() => { await Task.Delay(100); db.Put(key, "44444", reverse); Console.WriteLine("write1:" + db.Get(key, reverse)); await Task.Delay(1000); db.Put(key, "444442", reverse); Console.WriteLine("write2:" + db.Get(key, reverse)); }); Task.WaitAll(t1, t2); Console.WriteLine("end:" + db.Get("11", reverse)); }
private RocksDbStore(string fileName, Logger logger) { AppDomain.CurrentDomain.ProcessExit += (s, e) => Shutdown(); this.logger = logger; logger.Message("RocksDBStore: " + fileName); this.fileName = fileName.Replace("\\", "/"); var path = Path.GetDirectoryName(fileName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //TODO check options var options = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "default", new ColumnFamilyOptions().OptimizeForPointLookup(256) }, }; try { var partitionList = RocksDb.ListColumnFamilies(options, path); foreach (var partition in partitionList) { columnFamilies.Add(partition, new ColumnFamilyOptions()); } } catch { logger.Warning("Inital start, no partitions created yet!"); } logger.Message("Opening database at: " + path); _db.Add(fileName, RocksDb.Open(options, path, columnFamilies)); }
private ColumnFamilies GetColumnFamilies(DbOptions options, string dbName) { var dbPath = Path.Combine(_path, dbName); var columnFamilies = new ColumnFamilies(); List <string> listColumnFamilies; try { listColumnFamilies = RocksDb.ListColumnFamilies(options, dbPath).ToList(); } catch (RocksDbException) { listColumnFamilies = new List <string>(); } foreach (string name in listColumnFamilies) { columnFamilies.Add(name, _options); } return(columnFamilies); }
/// <summary> /// Open rocksdb handle /// </summary> /// <param name="dbOptions">Rocksdb options</param> /// <param name="columnFamilyOptions">Columnfamily options</param> /// <exception cref="ProcessorStateException">throws if the rocksdb can't be open</exception> private void OpenRocksDb(DbOptions dbOptions, ColumnFamilyOptions columnFamilyOptions) { int maxRetries = 5; int i = 0; bool open = false; RocksDbException rocksDbException = null; var columnFamilyDescriptors = new ColumnFamilies(columnFamilyOptions); while (!open && i < maxRetries) { try { Db = RocksDbSharp.RocksDb.Open( dbOptions, DbDir.FullName, columnFamilyDescriptors); var columnFamilyHandle = Db.GetDefaultColumnFamily(); DbAdapter = new SingleColumnFamilyAdapter( Name, Db, writeOptions, KeyComparator, columnFamilyHandle); open = true; } catch (RocksDbException e) { ++i; rocksDbException = e; } } if (!open) { throw new ProcessorStateException("Error opening store " + Name + " at location " + DbDir.ToString(), rocksDbException); } }
static void Test7() { var dbop = new DbOptions() .SetCreateIfMissing(true) .SetCreateMissingColumnFamilies(true); var columnFamilies = new ColumnFamilies { { "reverse1", new ColumnFamilyOptions() }, { "reverse2", new ColumnFamilyOptions() }, }; var db = TransactionDB.Open(dbop, new TransactionDBOptions(), "transaction_db_test2", columnFamilies); var reverse = db.GetColumnFamily("reverse1"); var r1 = new Random(1); var r2 = new Random(2); Task.Run(() => { int times = 0; while (++times <= 1000) { db.Put("11", r1.Next(2) == 0 ? "a11" : "a12", reverse); db.Put("22", r1.Next(2) == 0 ? "a22" : "a23", reverse); } }); Task.Run(() => { int times = 0; while (++times <= 1000) { db.Put("22", r2.Next(2) == 0 ? "a22" : "a23", reverse); db.Put("11", r2.Next(2) == 0 ? "a11" : "a12", reverse); } }); Console.WriteLine(db.Get("11", reverse)); Console.WriteLine(db.Get("22", reverse)); }