rez - Revision Database Library
This is a `simple' revision-capable database for java. It uses
BerkeleyDB JE Direct Persistent Layer (DPL) for storage.
This is the interim result of a very slow-burning long term personal
project which stretches back over a decade. It has been through C
and Java, and multiple iterations of refinement and simplification.
By design this software is intended for use by individuals and for
embedded use. It has no business or `enterprise' related features.
Distributed operation was not considered as part of the design.
Details of Note
The revision model supported is something of a amalgamation of cvs
and subversion features. I think it takes the best of both worlds -
which means more cvs and less subversion.
- Revision tree is global. The revision tree is shared
across all versioned objects. This makes certain operations much
- Branches are revision branches. Branches are implemented
as forks in the global revision tree and not as `cheap copies'. I
find this much easier to understand. Cheap copies and/or file
aliases may be possible within the defined schema but will never
- Tags are zero-cost. Tags are merely text labels applied
to a specific revision number.
- Branches are almost zero-cost. Branches cost nothing
extra to commit to and add a small potential cost to all
- Updates are transactional. Additionally multiple updates
to data and meta-data can be combined into a single revision
- Compact storage. DEZ1 is used to
encode compact reverse deltas for binary data.
- Objects can be renamed. Object metadata such as the name
is also versioned. Different objects of the same name may reside on
separate branches as expected.
- Efficient retrieval. Retrieval should (should?) be
efficient in terms of computational resources. The branch
membership test is cheap and requires only tiny in-memory table
- Keywords & metadata. Objects can be retrieved by
indexed keywords. Objects can have additional application meta-data
- Small. Outside of quite a bit of scaffolding to use
Berkeley DB JE and to support Java8 Stream interfaces, there is very
little code required.
For further background on the internals of this software refer to
my `Java Versioned Database'
The API is still expermental but currently utilises Java8 Stream
interfaces, thus Java8 is required to build and use.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
notzed on various mail servers, primarily gmail.com.
Copyright (C) 2016 Michael Zucchi, All Rights Reserved.