Brian S O'Neill
2008-05-04 20:30:39 UTC
Carbonado now includes a volatile map repository, which is available in
the svn trunk. It will be provided in version 1.2, which I hope to
release in a few weeks.
This repository doesn't have any extra dependencies other than JDK1.6,
since it uses the ConcurrentSkipListMap class. Because the repository
does not persist anything, it is best suited for unit tests or small
in-memory caches. Check out the com.amazon.carbonado.map package to use it.
I did a quick performance comparison to BDB-JE when logging only in
memory. For simple loads by primary key, the map repository executed
over 5 times faster. Other tests which rely on more complicated query
plans tend to execute only 2 times faster than BDB-JE.
The map repository supports transactions and the isolation levels of
read committed and serializable. The locking granularity is quite
coarse, however. It behaves like a table lock. To compensate, the
repository uses upgradable locks. This allows reads to execute
concurrently, and they are only blocked by writes. Upgrades don't block
readers, but they do block writers and other upgraders.
There's a ton of new features in version 1.2, which are only summarized
in the release notes. I hope to update the documentation soon now. In
the meantime, I'll be posting more info to this list, which has been
quiet for too long.
the svn trunk. It will be provided in version 1.2, which I hope to
release in a few weeks.
This repository doesn't have any extra dependencies other than JDK1.6,
since it uses the ConcurrentSkipListMap class. Because the repository
does not persist anything, it is best suited for unit tests or small
in-memory caches. Check out the com.amazon.carbonado.map package to use it.
I did a quick performance comparison to BDB-JE when logging only in
memory. For simple loads by primary key, the map repository executed
over 5 times faster. Other tests which rely on more complicated query
plans tend to execute only 2 times faster than BDB-JE.
The map repository supports transactions and the isolation levels of
read committed and serializable. The locking granularity is quite
coarse, however. It behaves like a table lock. To compensate, the
repository uses upgradable locks. This allows reads to execute
concurrently, and they are only blocked by writes. Upgrades don't block
readers, but they do block writers and other upgraders.
There's a ton of new features in version 1.2, which are only summarized
in the release notes. I hope to update the documentation soon now. In
the meantime, I'll be posting more info to this list, which has been
quiet for too long.