The C# Database embedded class Parameters

For an overview see page C# Classes

Embedded class Parameters:

    /// Parameters for the database open method.
    ///
    public class Parameters
    {
        /// Memory page size (default: 256). When using a disk database, this
        /// should be a power of two and at least 8 times smaller than disk page
        /// size.
        ///
        public int MemPageSize;

        /// Disk page size (default: 0). Typically 4096 bytes; zero for
        /// all-in-memory databases.
        ///
        public int DiskPageSize;

        /// The maximum number of database connections (default: 100).
        ///
        public int MaxConnections;

        /// Recovery connection context (default: 0 - no recovery connection context)
        ///
        public int ConnectionContextSize;

        /// The maximum size for a disk database (default: 0 - unlimited).
        ///
        public long MaxDiskDatabaseSize;

        /// Quantum of increasing size of database file (can help to reduce file fragmentation)
        ///
        public long DiskFileExtensionQuantum;

        /// The REDO transaction log threshold. After reaching this a checkpoint
        /// is performed and the log is truncated. Note that the checkpoint can
        /// be performed only after a transaction commit, so the size of the log
        /// file can become larger than the specified limit. A zero value means
        /// to use the implementation specific default value.
        ///
        public long RedoLogLimit;

        /// The maximum size of uncommitted changes (delayed transaction commits)
        /// when using the CommitPolicy.Delayed policy (default: 0 - 1/3 of the
        /// available disk cache).
        ///
        public long DelayedCommitThreshold;

        /// The maximum number of delayed transaction commits when using the
        /// CommitPolicy.Delayed policy (default: 0 - unlimited).
        ///
        public int MaxDelayedTransactions;

        /// Default commit policy for new connections (default : CommitPolicy.SyncFlush)
        ///
        public Database.CommitPolicy DefaultCommitPolicy;

        /// The transaction log type (default: LogType.RedoLog).
        ///
        public Database.LogType LogType;

        /// The hash table load factor (default: 100%). This is a criterion for
        /// hash table extension.
        ///
        public int HashLoadFactor;

        /// The maximum number of active write transactions when using optimistic
        /// locking of B-Tree indexes (default: 0 - unlimited).
        ///
        public int IndexOptimisticLockThreshold;

        /// A combination of DB_MODE_/// bits (default: 0).
        ///
        public int Mode;

        /// The path to the file from which a database snapshot will be loaded at
        /// open time (default: null - no snapshot to load).
        ///
        public String DatabaseSnapshotFilePath;

        /// The default string encoding (string encoding can be specified using
        /// the Encoding attribute for each field separately) (default: UTF-8).
        ///
        public String StringEncoding;

        /// The classes to be stored in the database. Only instances of the
        /// classes listed can be stored in the database. This parameter has no
        /// default value and must be explicitly specified by the application.
        ///
        public Type[] Classes;

        /// Whether the classes specified in classes will be stored
        /// on disk. Also disk classes may be marked explicitly using the disk()
        /// attribute of the Persistent attribute.
        ///
        public bool DiskClassesByDefault;

        /// Whether classes specified in classes will be implicitly
        /// marked as compact. Also compact classes may be marked
        /// explicitly using the compact() attribute of Persistent attribute.
        ///
        public bool CompactClassesByDefault;

        /// Whether classes specified in classes will be implicitly marked as nonatomic. Also nonatomic classes may be marked
        /// explicitly using the compact() attribute of Persistent attribute.
        ///
        public bool  NonAtomicClassesByDefault;

        /// Make dictionary compatible with mcocomp utility called with -nosort option
        ///
        public bool DictionaryNoSort;

        /// Maximal number of classes in database.
        /// Is need for dynamic schema evolution
        public int MaxClasses;

        /// Maximal number of indexes in database.
        /// Is need for dynamic schema evolution
        public int MaxIndexes;

        /// Maximal size of database dictionary
        /// Is need for dynamic schema evolution
        public int MaxDictionarySize;

        public ClusterParams ClusterParameters;

        /// Whether eXtremeDB runtime terminates current process
        /// in case of fatal error appeared.
        public bool TerminateOnFatalError;

        /// Scheduling policy for transactions with the same priority
        public TransSchedPolicy SchedPolicy;

        /// Ignore all TTL policies (can be changed at runtime)
        public bool IgnoreTtl;

        ///  SQL workspace quota. Default is 0 - unlimited
        public long sqlWorkspaceLimit;

        ///  compression level: 0..9, 0 - no compression, -1: default compression level
        public int CompressionLevel;

        ///  bitmap of page kinds which should be compressed
        public Compression CompressionMask;

        ///  use to allocate page map: virtual database space can not be larger than physical size compression ratio
        public int ExpectedCompressionRatio;

        ///  database encryption key
        ///  It manages all kinds of encryption if cipher_key_snapshot_tl is 0. Else, cipher_key manages only an encryption
        ///  of persistent (disk) DB files or IM DB pages.
        public String CipherKey;

        ///  DB snapshot or TL encryption key (mco_db_params_t::cipher_key_snapshot_tl), string
        ///  It overrides encryption key specified by cipher_key for a database snapshot
        ///  (mco_db_save[class_save] and mco_db_load[class_load]) or a transaction log (TL) apart from
        ///  persistent DB files and IM DB pages encryption if cipher_key is not 0. Else manages
        ///  only an encryption of a database snapshot or TL, leaving persistent DB files and IM DB
        ///  pages unencrypted. Assign an empty string "" to specify that a database snapshot and TL
        ///  are not encrypted, whilst cipher_key  specifies an encryption for persistent DB files or IM pages.
        public String CipherKeySnapshotTL;

        ///  size of backup counters array, bytes, power of two, ignored if disk_max_database_size set. Default is 0 - disable backup feature
        public long BackupMapSize;

        ///  number of pages for last exclusive pass of backup procedure, set to zero to disable treshold. Default is 0
        public int BackupMinPages;

        /// Max number of passes before exclusive pass of backup procedure. Default is 10
        public int BackupMaxPasses;

        /// Name of a file will be used to store backup temporary data on mco_db_close() call.
        /// Optional, set to null for default "<persistent-storage>.bmap" file locate at the same location as persistent storage file
        public String BackupMapFile;

        ///  Delay in milliseconds between writing backup blocks to minimize backup impact on performance
        public int FileBackupDelay;

        ///  Estimated total number of objects in the database (used for global system hash table size estimation)
        public long EstimatedNumberOfObjects;

        /// Constructor with default values
        public Parameters()
        {
            MemPageSize = 256;
            DiskPageSize = 4096;
            MaxConnections = 100;
            ConnectionContextSize = 0;
            MaxDiskDatabaseSize = 0;
            DiskFileExtensionQuantum = 0;
            RedoLogLimit = 16*1024*1024;
            DelayedCommitThreshold = 0;
            MaxDelayedTransactions = 0;
            DefaultCommitPolicy = CommitPolicy.SyncFlush;
            LogType = LogType.RedoLog;
            HashLoadFactor = 100;
            IndexOptimisticLockThreshold = 100;
            StringEncoding = MULTIBYTE_ENCODING;
            TerminateOnFatalError = false;
            SchedPolicy = TransSchedPolicy.Fifo;
            IgnoreTtl = false;
            sqlWorkspaceLimit = 0;
            CompressionLevel = -1;
            CompressionMask = Compression.All;
            ExpectedCompressionRatio = 10;
            BackupMapSize = 0;
            BackupMinPages = 0;
            BackupMaxPasses = 10;
            BackupMapFile = null;
            EstimatedNumberOfObjects = 10000;
        }

        [Flags]
        public enum Compression
        {
            ObjHead     = 1,
            ObjNode     = 2,
            BlobHead    = 64,
            BlobTail    = 128,
            FixedrecSet = 4096,
            All = ObjHead | ObjNode | FixedrecSet | BlobHead | BlobTail
        }
    }