Hi,

about 2 months ago I started patching JDBM for my needs. It kind of
overgrown so I forked JDBM and released my project as JDBM 2. I
finished codding so is time to make public release. Alpha 1 have all
features described bellow, but probably contains bugs and incomplete
documentation.
Get it from: http://code.google.com/p/jdbm2/downloads/list

My work is based on JDBM 1.0 source code. It does not change JDBM
internals much, rather it 'sprinkles sugar on top'. I introduced
features I missed, and fixed most obvious performance problems visible
in profiler. I tryed not to make too big changes. This release is not
compatible with 1.0, file format is different and API have some
changes.

I thought there was no work done after 1.0 release. I found about SVN
trunk on Source Forge after most of my changes were done. As result
JDBM2 code is  more stable and compact. I back-ported some unit tests,
bug fixes and performance improvements.  I have no plans to work on
concurrency, multiple transaction support and other advanced things.

My changes from 1.0:

** HashMap and TreeMap views **
  There are now java.util.Map views which wrapes HTree and BTree.
Using trees directly is  discouraged in examples and documentation.
All IOException are wrapped in unchecked IOError.

**  Secondary maps **
  This feature is inspired by BerkleyDB. It is M:N index over primary
data which gets automaticaly updated

** Compact serialization **
  Numbers, Strings, arrays, JDBM and java.util classes are serialized
using  less data. Size is reduced 3x to 10x times. Speed also
improved.

** Soft Reference Cache **
  Stable 1st level soft reference cache. This implementation does not
reference data objects directly,  rather it uses completely unrelated
instances and discarts data latter in ReferenceQueue. It is slower but
more reliable then original one. It is on by default if JVM have more
then 100 MB RAM available.

** Reduced object trashing **
  Profiler showed that original code was allocating too many Long and
byte[] instances. This caused GC to trash very often and sometimes
'OutOfMemoryError: GC overhead limit exceeded ' error. JDBM2 reduces
those allocations almost to zero.

** Reduced memory footprint **
 JDBM2 memory data structures takes less spaces. OutOfMemoryExceptions
are greatly reduced.

**  2GB file split **
 JDBM2 store is splited between more files, each of them smaller then
2GB. It is possible to use in on FAT32 (maybe not so actual in 2010).

** Generics **
  All public APIs have generics.

** Compression **
  Optional compression based on Inflate algorithm.

** Small jar size **
Standalon JAR file size grown from 80 KB to 125 KB.

I hope this work will be useful.
Please send me your comments.

Regards,
Jan Kotek

------------------------------------------------------------------------------

_______________________________________________
Jdbm-developer mailing list
Jdbm-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jdbm-developer

Reply via email to