Defragmentation Examples

The simplest defragmentation can look like this:

DefragmentExample.cs: SimplestDefragment
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 }

DefragmentExample.vb: SimplestDefragment
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:

DefragmentExample.cs: DefragmentWithListener
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 }
DefragmentExample.cs: DefragmentListener
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 }

DefragmentExample.vb: DefragmentWithListener
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
DefragmentExample.vb: DefragmentListener
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.

DefragmentExample.cs: ConfiguredDefragment
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 }

DefragmentExample.vb: ConfiguredDefragment
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