Base To-Do/HSQLDB: single-file backend

From Apache OpenOffice Wiki
Jump to: navigation, search

Description

HSQLDB is the default database engine used by OpenOffice Base.

HSQLDB currently creates a number of adjacent files to store its data, where all files together comprise the whole database. To allow the user of OpenOffice Base to have a "all-in-one-file" database experience, those HSQL files are currently embedded in some AOO-specific container-file (the .odb file).

To overcome various disadvantages of this approach, it is desirable that HSQL stores its data in a single, large file. Preliminary code and concepts exist for this, but no final implementation.

The following project description was provided by Fred Toussi, HSQLDB project owner:

Currently, HSQLDB stores the database information in four separate files. These files are written to using different API's. Streams are used for some, while random access is used for others.

The project's aim is to allow a single file to be used for all permanent data (temporary session data, or file locking may still use a separate file). So existing files that need to be integrated into one are the .properties, .log, .data and .backup files. The new single file will be accessed only as a random access file.

The project consists of developing an interface between existing code. At the low level, there is already an implementation of a random access file, org.hsqldb.persist.ScaledRAFile. The new interfaces will allow existing file services to use the single random access file.

All the files in the org.hsqldb.persist package should be studied, with the understanding that the functionality of many of these files, including lock and property saving functionality, will become redundant with the introduction of single file persistence.

The student is expected to study and become proficient in the Java IO packages and the API calls to these packages currently made from HSQLDB, and write the code and test packages.

The mentor will provide regular guidance and help on the design of required interfaces and supervise their implementation.

As this is considered an essential development for HSQLDB, all the work done by the student will be used, and if necessary, modified or improved by other project developers. The student will get due credit and will be provided with work references by the HSQLDB Project Maintainer upon successful completion of the project.

  • required skills Java expertise; relational databases
  • useful skills: HSQLDB architecture
  • Contact: mailto:dev@dba.openoffice.org
  • estimated effort: 2 months
  • difficulty: high
Personal tools