Lightweight 100% Java Record Repository Engine
<Download> <News><Project Page> <License>
This is the homepage of the LeverPack Record Repository Engine Project created by Tony Lai of Leversoft Inc. LeverPack was originally designed as storage engine for HSQLDB to provide READ_COMMITTED transaction isolation level supported and reusable data storage space, as an alternative to the data file storage used by HSQLDB before version 1.7.2. It is separated to a new project, in realizing other potential usages for such engine.
LeverPack a small record repository management engine, much like a memory manager in an operating system. A user application can create, delete, update, and retrieve records just as they can with a memory manager. A 4-byte (int) record identifier is returned after a record has been created. A user application can read, write, update, or delete data store in the record, although the contents are totally controlled by the user application.
For example, a file system simulator can create file or folder records. The file or folder record identifiers can be stored in the hosting folder record. The file system simulator application is controlling the format of those records, not the engine. This can also be done by a database. However, LeverPack provides direct access to whole or part of the data record without the expenses of executing SQL statements.
LeverPack provides the following features:
All data record accesses are done within a transaction. The transaction can be committed or rollbacked. In the event the application crashed for whatever reason, all uncommitted transactions are rollbacked the next time the engine is started. LeverPack only supports READ_COMMITTED transaction isolation level for now. Future release may support other transaction isolation levels.
Free spaces from deleted records will be reused to store new records. Extra storage space is allocated only if there is no more suitable space for a new record. LeverPack supports both fixed-size record and variable-size record. It uses a page system to store record data. Multiple small records are stored in a page, while multiple pages can be used to store a large or variable-size record.
The current implementation is about 60K in debug mode. Its APIs are simple and easy to use. The user applicaiton can utilize record InputStream and OutputStream for record R/W access.
LeverPack efficiency is comparable with, or even better than, storing data using a standard file system, see demo applications. It provides the same level of safety features a good database engine does, without the expenses of executing text-based SQL statements.