readonly Timer compactionTimer; // TODO: Bug logged to be fixed to proper dispose and test. DbStoreProvider(IRocksDbOptionsProvider optionsProvider, IRocksDb db, IDictionary <string, IDbStore> entityDbStoreDictionary) { this.db = db; this.optionsProvider = optionsProvider; this.entityDbStoreDictionary = new ConcurrentDictionary <string, IDbStore>(entityDbStoreDictionary); this.compactionTimer = new Timer(this.RunCompaction, null, CompactionPeriod, CompactionPeriod); }
public static DbStoreProvider Create(IRocksDbOptionsProvider optionsProvider, string path, IEnumerable <string> partitionsList) { IRocksDb db = RocksDbWrapper.Create(optionsProvider, path, partitionsList); IEnumerable <string> columnFamilies = db.ListColumnFamilies(); IDictionary <string, IDbStore> entityDbStoreDictionary = new Dictionary <string, IDbStore>(); foreach (string columnFamilyName in columnFamilies) { ColumnFamilyHandle handle = db.GetColumnFamily(columnFamilyName); var dbStorePartition = new ColumnFamilyDbStore(db, handle); entityDbStoreDictionary[columnFamilyName] = dbStorePartition; } var dbStore = new DbStoreProvider(optionsProvider, db, entityDbStoreDictionary); return(dbStore); }
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); }