Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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();
        }