/* This file is part of the db4o object database http://www.db4o.com Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com db4o is free software; you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation. db4o is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. */ package com.db4o.config; /** * interface to configure the freespace system to be used. * <br><br>All methods should be called before opening database files. * If db4o is instructed to exchange the system * ( {@link #useBTreeSystem()} , {@link #useRamSystem()} ) * this will happen on opening the database file.<br><br> * By default the ram based system will be used. */ public interface FreespaceConfiguration { /** * tuning feature: configures the minimum size of free space slots in the database file * that are to be reused. * <br><br>When objects are updated or deleted, the space previously occupied in the * database file is marked as "free", so it can be reused. db4o maintains two lists * in RAM, sorted by address and by size. Adjacent entries are merged. After a large * number of updates or deletes have been executed, the lists can become large, causing * RAM consumption and performance loss for maintenance. With this method you can * specify an upper bound for the byte slot size to discard. * <br><br>Pass Integer.MAX_VALUE to this method to discard all free slots for * the best possible startup time.<br><br> * The downside of setting this value: Database files will necessarily grow faster. * <br><br>Default value:<br> * 0 all space is reused * @param byteCount Slots with this size or smaller will be lost. */ public void discardSmallerThan(int byteCount); /** * Configure a way to overwrite freed space in the database file with custom * (for example: random) bytes. Will slow down I/O operation. * * The value of this setting may be cached internally and can thus not be * reliably set after an object container has been opened. * * @param freespaceFiller The freespace overwriting callback to use */ public void freespaceFiller(FreespaceFiller freespaceFiller); /** * configures db4o to use a BTree-based freespace system. * <br><br><b>Advantages</b><br> * - ACID, no freespace is lost on abnormal system termination<br> * - low memory consumption<br> * <br><b>Disadvantages</b><br> * - slower than the RAM-based system, since freespace information * is written during every commit<br> */ public void useBTreeSystem(); /** * discontinued freespace system, only available before db4o 7.0. * @deprecated Please use the BTree freespace system instead by * calling {@link #useBTreeSystem()}. */ public void useIndexSystem(); /** * configures db4o to use a RAM-based freespace system. * <br><br><b>Advantages</b><br> * - best performance<br> * <br><b>Disadvantages</b><br> * - upon abnormal system termination all freespace is lost<br> * - memory consumption<br> */ public void useRamSystem(); }