The simplest defragmentation can look like this:
01public static void SimplestDefragment() 02
{ 03
try 04
{ 05
Defragment.Defrag(DB_FILE); 06
} 07
catch (Exception ex) 08
{ 09
System.Console.WriteLine(ex.Message); 10
} 11
}
1Public Shared Sub SimplestDefragment() 2
Try 3
Defragment.Defrag(DB_FILE) 4
Catch ex As Exception 5
System.Console.WriteLine(ex.Message) 6
End Try 7
End Sub
The following example shows how to implement defragmentation listener:
01public static void DefragmentWithListener() 02
{ 03
DefragmentConfig config = new DefragmentConfig(DB_FILE, BACKUP_FILE); 04
try 05
{ 06
Defragment.Defrag(config, new DefragmentListener()); 07
} 08
catch (Exception ex) 09
{ 10
System.Console.WriteLine(ex.Message); 11
} 12
}
1public class DefragmentListener : IDefragmentListener 2
{ 3
void IDefragmentListener.NotifyDefragmentInfo(DefragmentInfo info) 4
{ 5
throw new System.Exception("The method or operation is not implemented."); 6
} 7
}
1Public Shared Sub DefragmentWithListener() 2
Dim config As DefragmentConfig = New DefragmentConfig(DB_FILE, BACKUP_FILE) 3
Try 4
Defragment.Defrag(config, New DefragmentListener) 5
Catch ex As Exception 6
System.Console.WriteLine(ex.Message) 7
End Try 8
End Sub
1Public Class DefragmentListener 2
Implements IDefragmentListener 3
4
Sub NotifyDefragmentInfo(ByVal info As DefragmentInfo) Implements IDefragmentListener.NotifyDefragmentInfo 5
Throw New System.Exception("The method or operation is not implemented.") 6
End Sub 7
End Class
The following example will run defragment using TreeIDMapping and commit frequency of 1 commit per 5000 objects. The backup file will be deleted if already exists, only available to the classloader classes will be left in the database (java version) and the file will be upgraded if necessary.
01public static void ConfiguredDefragment() 02
{ 03
DefragmentConfig config = new DefragmentConfig(DB_FILE, BACKUP_FILE , new TreeIDMapping()); 04
config.ObjectCommitFrequency(5000); 05
config.Db4oConfig(Db4oFactory.CloneConfiguration()); 06
config.ForceBackupDelete(true); 07
config.UpgradeFile(DB_FILE + ".upg"); 08
try 09
{ 10
Defragment.Defrag(config); 11
} 12
catch (Exception ex) 13
{ 14
System.Console.WriteLine(ex.Message); 15
} 16
}
01Public Shared Sub ConfiguredDefragment() 02
Dim config As DefragmentConfig = New DefragmentConfig(DB_FILE, BACKUP_FILE, New TreeIDMapping) 03
config.ObjectCommitFrequency(5000) 04
config.Db4oConfig(Db4oFactory.CloneConfiguration) 05
config.ForceBackupDelete(True) 06
config.UpgradeFile(DB_FILE + ".upg") 07
Try 08
Defragment.Defrag(config) 09
Catch ex As Exception 10
System.Console.WriteLine(ex.Message) 11
End Try 12
End Sub