public TrimDatabase(TrimDatabaseOptions options) { _blockCache = options.BlockCache(); _options = options; if (!System.IO.Directory.Exists(options.DatabaseFolder)) { System.IO.Directory.CreateDirectory(options.DatabaseFolder); } _databaseFolder = options.DatabaseFolder; var unsorted = new UnsortedStorageLayer(1, _databaseFolder, _blockCache); _storageLayers.Add(unsorted); for (var i = 2; i <= _options.Levels; i++) { var filesAtLevel = (int)Math.Ceiling(_options.FirstLevelMaxFileCount * Math.Pow(_options.FirstLevelMaxFileCount, i - 2)); _storageLayers.Add(new SortedStorageLayer(i, _databaseFolder, _blockCache, _options.FileSize, filesAtLevel)); } if (!_options.OpenReadOnly) { _skipList = _options.MemoryTable(); } }
public TrimDatabase(Func <MemoryTable> inMemoryFunc, BlockCache blockCache, int levels, string databaseFolder, int targetFileSizeL2) { _blockCache = blockCache; if (!System.IO.Directory.Exists(databaseFolder)) { System.IO.Directory.CreateDirectory(databaseFolder); } _databaseFolder = databaseFolder; _inMemoryFunc = inMemoryFunc; var unsorted = new UnsortedStorageLayer(1, _databaseFolder, _blockCache); _storageLayers.Add(unsorted); for (var i = 2; i <= levels; i++) { _storageLayers.Add(new SortedStorageLayer(i, _databaseFolder, _blockCache, targetFileSizeL2)); } _skipList = _inMemoryFunc(); }