This file describes which database engines are supported, and in which conditions. Many new SQL engines can be supported and many existing support can be optimised dramatically. Please send your questions or contributions to makumba AT best.eu.org. Thank you!
Contents:
1. Database configuration files
1.1 Database configuration file name
1.2 Database configuration properties
1.3 Database lookup files
1.4 Caching queries in database lookup files
2 Supported SQL engines
3. other SQL engines
3.1 adding support for new engines
Host_SQLEngineType_DatabaseName.propertiesThe extension is not indicated to the constructor.
dbhost.yourdomain.org_mysql_makumba.propertieswill be used as
Database.getDatabase("dbhost.yourdomain.org_mysql_makumba");Such a call will automatically connect to the following JDBC URL:
jdbc:mysql://dbhost.yourdomain.org/makumbaIf SQL engine port numbers are needed, file names are like:
Host_port_SQLEngineType_DatabaseName.propertieswhich will connect to JDBC URLs like:
jdbc:mysql//dbhost.yourdomain.org:8282/makumba
sql.setting=valuesends a setting to the JDBC driver (for example user, password, create, etc). Such settings are JDBC driver specificdbclass=javaClassThe main class of the makumba database driver. This is normally read from org/makumba/db/sql/sqlEngines.properties, but other, more powerful drivers can be plugged in.tableclass=javaClassTable handler of the database driver (optional, norlally known by the dbclass or read from org/makumba/db/sql/sqlEngines.properties)typename=SQLtableNameSets the name of the SQL table representing the given type to SQLtableName (to inhibit automatic table name generation)typename->field=SQLfieldNameSets the name of the SQL field representing the given object attribute to SQLfieldName (to inhibit automatic field name generation)typenamePrefix=typenameShorthandBefore automatic tablename generation; shortens the names of all the types that begin with the indicated prefix by replacing it with the indicated shorthand. Usefull for SQL engines that have severe limitations on tablename lengthalter#typenameShorthand=true|falseIf true allows automatic alteration of the SQL table representing the type(s) when the SQL table doesn't match the type definition. For example:admin#typenameShorthand=true|falsealter#=truewill allow alteration of all tables from the database except for tables whose names begin with "general"
alter#general=falseIf true allows deletion of multiple records of the respective typesduring org.makumba.delete and org.makumba.copy the type(s) when the SQL table doesn't match the type definition.addUnderscore=true|falseSpecifies whether to add an underscore at the end of the generated field and table names during automatic name generation. It is true by default. (Introduced to avoid conflicts with reserved words on some SQL engines)
Host#currentDirectory= configFileNameThe local host and current directory are searched for. If that is not found, the default database configuration is used. For example
Host#default= configFileName
default= configFileName
server.domain.com#/server/home= dbhost.yourdomain.com_pgsql_makumbaThe non-argument MakumbaSystem.getDefaultDatabaseName() will look in MakumbaDatabase.properties. Instead of this default, a String argument (a database lookup file in the classpath), or a Properties object read from a database lookup file can be indicated.
server.domain.com#default= dbhost.yourdomain.com_pgsql_makumba_test
default= localhost_mysql_makumba
cache.1= SELECT o FROM general.Country o
cache.2= SELECT o FROM general.Language o
If you want to use one of the supported SQL engines, you should put its JDBC driver (URLs are provided) in the CLASSPATH.
Whenever you instantiate a org.makumba.db.Database object, you need to
supply a configuation file. In this file you
see what you need to include in the configuration for specific SQL engines.
| SQL Engine and JDBC driver and versions | Database configuration file (*.properties) | Observations |
| MySQL TM www.mysql.com mmMySQL JDBC driver |
hostname_mysql_databasename will connect to the indicated database on the indicated host. | The main driver tested. Earlier versions of the JDBC driver have the maximum packet length limited to 64K To get a development-like low memory footprint of the mysql daemon (it's initially made for 32 M memory), decrease key_buffer, flush_time, thread stack in the c:\my.cnf file, then restart the daemon. If you work with large binary objects, increase max_allowed_packet so they can be transmitted in one shot... |
| ODBC TM |
hostname_odbc_data-source-name will connect to the repsective ODBC data source on the local host. The hostname is not used. |
not tested since spring 2002. worked nicely though |
| PostgreSQL www.postgresql.org |
hostname_postgresql_databasename |
Limited JDBC functionality before version 7.1. Not tested with 7.1 yet.
PostgreSQL has a limitation of table name length to 32 chars. Use table renaming: some_org.some_application= so.sa This will replace with the shorter "so.sa" the left part of the type names that begin with "some_org.some_application" |
| IBM DB2TM |
hostname_db2_databasename | Was adapted to makumba very easily. Needs more testing. |
| InformixTM | hostname_port_informix-sqli_databasename | Easy to adapt, will work soon. |
| CloudscapeTM SQL engine written in Java www.cloudscape.com includes JDBC driver requires JDK 1.2 or higher |
hostname_cloudscape_databasename sql.create=true will create the named database The host name is not significant |
not tested lately, but can be get to work |
| QEDTM SQL engine written in Java http://www.quadcap.com/home.html includes JDBC driver requires JDK 1.2 or higher |
hostname_qed_databasename sql.create=true will create the named database The host name is not significant |
fast and full of features but not stable at the time of last tests
(begining of 2001) sensitive to Ctrl-C during operation (lockfile must be deleted) |
| FirstSQLTM SQL engine written in Java http://www.firstsql.com/firstsqlj/ includes JDBC driver requires JDK 1.1, does not work with 1.2 |
hostname_dbcp_databasename Has only one database. Hostname and database name are not used. sql.user should be adm or beta |
Not stable at the time of last tests (begining of 2001). Ctrl-C can
corrupt database. Need careful databae closing for database not to be corrupted
upon exceptions. Incorrect responses on large data. Limited JDBC features (setBytes and setStream not supported) |
| mSQLTM http://www.hughes.com.au/ the Imaginary JDBC driver is used |
hasn't been tested since 1999, but it shouldn't be difficult to get it work with the latest sql code. Still, its limitations at the time made it unsuitable for makumba. |