####################################################### # # Configuration options for the Mckoi SQL Database. # # NOTE: Lines starting with '#' are comments. # ####################################################### # # database_path - The path where the database data files # are located. # See the 'root_path' configuration property for the # details of how the engine resolves this to an # absolute path in your file system. database_path=./data # # log_path - The path the log files are written. # See the 'root_path' configuration property for the # details of how the engine resolves this to an # absolute path in your file system. # The log path must point to a writable directory. If # no log files are to be kept, then comment out (or # remove) the 'log_path' variable. log_path=./log # # root_path - If this is set to 'jvm' then the root # path of all database files is the root path of the # JVM (Java virtual machine) running the database # engine. If this property is set to 'configuration' # or if it is not present then the root path is the # path of this configuration file. # This property is useful if you are deploying a # database and need this configuration file to be the # root of the directory tree of the database files. root_path=configuration #root_path=jvm # # jdbc_server_port - The TCP/IP port on this host where # the database server is mounted. The default port # of the Mckoi SQL Database server is '9157' jdbc_server_port=9157 # # ignore_case_for_identifiers - If enabled all # identifiers are compared case insensitive. If # disabled (the default) the case of the identifier # is important. # For example, if a table called 'MyTable' contains # a column called 'my_column' and this property is # enabled, the identifier 'MYTAble.MY_COlumN' will # correctly reference the column of the table. If # this property is disable a not found error is # generated. # This property is intended for compatibility with # other database managements systems where the case # of identifiers is not important. ignore_case_for_identifiers=disabled # # socket_polling_frequency - Mckoi SQL maintains a pool # of connections on the server to manage dispatching # of commands to worker threads. All connections on # the jdbc port are polled frequently, and ping # requests are sent to determine if the TCP # connection has closed or not. This value determines # how frequently the connections are polled via the # 'available' method. # The value is the number of milliseconds between each # poll of the 'available' method of the connections # input socket stream. Different Java implementations # will undoubtedly require this value to be tweaked. # A value of '3' works great on the Sun NT Java 1.2.2 # and 1.3 Java runtimes. # # NOTE: This 'socket polling' module is a horrible hack # and will be removed at some point when the threading # performance improves or there is an API for non- # blocking IO. I'll probably write an alternative # version for use with the improved Java version. socket_polling_frequency=3 # ----- PLUG-INS ----- # # database_services - The services (as a Java class) that # are registered at database boot time. Each service # class is separated by a semi-colon (;) character. # A database service must extend # com.mckoi.database.ServerService # #database_services=mypackage.MyService # # function_factories - Registers one or more FunctionFactory # classes with the database at boot time. A # FunctionFactory allows user-defined functions to be # incorporated into the SQL language. Each factory class # is separated by a semi-colon (;) character. # #function_factories=mypackage.MyFunctionFactory # # The Java regular expression library to use. Currently # the engine supports the Apache Jakarta regular expression # library, and the GNU LGPL regular expression library. # These two regular expression libraries can be found at the # following web sites: # # GNU Regexp: http://www.cacas.org/~wes/java/ # Apache Regexp: http://jakarta.apache.org/regexp/ # # The libraries provide similar functionality, however they # are released under a different license. The GNU library # is released under the LGPL and is compatible with GPL # distributions of the database. The Apache Jakarta library # is released under the Apache Software License and must not # be linked into GPL distributions. # # Use 'regex_library=gnu.regexp' to use the GNU library, or # 'regex_library=org.apache.regexp' to use the Apache # library. # # NOTE: To use either library, you must include the # respective .jar package in the Java classpath. regex_library=gnu.regexp # ----- PERFORMANCE ----- # # data_cache_size - The maximum amount of memory (in bytes) # to allow the memory cache to grow to. If this is set # to a value < 4096 then the internal cache is disabled. # It is recommended that a database server should provide # a cache of 4 Megabytes (4194304). A stand alone # database need not have such a large cache. # data_cache_size=4194304 data_cache_size=0 # # max_cache_entry_size - The maximum size of an element # in the data cache. This is available for tuning # reasons and the value here is dependant on the type # of data being stored. If your data has more larger # fields that would benefit from being stored in the # cache then increase this value from its default of # 8192 (8k). max_cache_entry_size=8192 # # lookup_comparison_list - When this is set to 'enabled' # the database attempts to optimize sorting by generating # an internal lookup table that enables the database to # quickly calculate the order of a column without having # to look at the data directly. The column lookup # tables are only generated under certain query # conditions. Set this to 'disabled' if the memory # resources are slim. lookup_comparison_list=enabled # # lookup_comparison_cache_size - The maximum amount of # memory (in bytes) to allow for column lookup tables. # If the maximum amount of memory is reached, the lookup # table is either cached to disk so that is may be # reloaded later if necessary, or removed from memory # entirely. The decision is based on how long ago the # table was last used. # # This property only makes sense if the # 'lookup_comparison_list' property is enabled. # # NOTE: This property does nothing yet... lookup_comparison_cache_size=2097152 # # index_cache_size - The maximum amount of memory (in # bytes) to allow for the storage of column indices. # If the number of column indices in memory reaches # this memory threshold then the index blocks are # cached to disk. # # ISSUE: This is really an implementation of internal # memory page caching but in Java. Is it necessary? # Why not let the OS handle it with its page file? # # NOTE: This property does nothing yet... index_cache_size=2097152 # # max_worker_threads - The maximum number of worker # threads that can be spawned to handle incoming # requests. The higher this number, the more # 'multi-threaded' the database becomes. The # default setting is '4'. maximum_worker_threads=4 # # soft_index_storage - If this is set to 'enabled', the # database engine will keep all column indices behind a # soft reference. This enables the JVM garbage collector # to reclaim memory used by the indexing system if the # memory is needed. # # This is useful for an embedded database where requests # are rare. When the database part is idle, the index # memory (that can take up significant space for large # tables) is reclaimed for other uses. For a dedicated # database server it is recommended this is disabled. # # Enable this if you need the engine to use less memory. # I would recommend the config property # 'lookup_comparison_list' is disabled if this is enabled. # The default setting is 'disabled'. soft_index_storage=disabled # # dont_synch_filesystem - If this is enabled, the engine # will not synchronize the file handle when a table change # is committed. This will mean the data is not as # safe but the 'commit' command will work faster. If this # is enabled, there is a chance that committed changes will # not get a chance to flush to the file system if the # system crashes. # # It is recommended this property is left commented out. # #dont_synch_filesystem=enabled # # transaction_error_on_dirty_select - If this is disabled # the 4th conflict (dirty read on modified table) will # not be detected. This has transactional consequences # that will cause data modifications to sometimes be # out of syncronization. For example, one transaction # adds an entry, and another concurrent transaction # deletes all entries. If this is disabled this # conflict will not be detected. The table will end up # with the one entry added after commit. # # It is recommended this property is left commented out. # #transaction_error_on_dirty_select=disabled # ----- SPECIAL ----- # # read_only - If this is set to 'enabled' then the database # is readable and not writable. You may boot a database # in read only mode from multiple VM's. If the database # data files are stored on a read only medium such as a # CD, then the property must be enabled else it will not # be possible to boot the database. # ( Uncomment the line below for read only mode ) #read_only=enabled # ----- DEBUGGING ----- # # debug_log_file - The file that is used to log all debug # information. This file is stored in the 'log_path' # path. debug_log_file=debug.log # # debug_level - The minimum debug level of messages that # are written to the log file. Reducing this number # will cause more debug information to be written to # the log. # 10 = INFORMATION # 20 = WARNINGS # 30 = ALERTS # 40 = ERRORS debug_level=20 # # table_lock_check - If this is enabled, every time a # table is accessed a check is performed to ensure that # the table owns the correct locks. If a lock assertion # fails then an error is generated in the log file. # This should not be enabled in a production system # because the lock assertion check is expensive. However # it should be used during testing because it helps to # ensure locks are being made correctly. table_lock_check=disabled