Ah, I thought it might be the license :)
Well, there have been some rumblings from time to time about making the
store API public, but so far nothing has come of it.
You say "SQL gets in the way." How do you know that's the true
resource consumer for a key/value use of Derby? It would seem to me
that if all your tables are basically primary key/data, then all your
queries would be based on the primary key, and after the first use of
your prepared statements the resulting compiled queries should be pretty
darn efficient, especially when those bytecodes get compiled into native
code by the JIT compiler.
Derby is actually quite fast for basic primary key operations.
I would recommend putting together a performance test and see if your
concerns are justified (or have you already done this?). Maybe Derby
is good enough for your needs...?
David
Kasper Nielsen wrote:
David Van Couvering wrote:
To be honest, this looks more like a job for BDB than for Derby. I
would love to see the Derby store API made public at some point, but
currently it's not public and I suspect it may be difficult to work
with. Are there reasons BDB/Java won't work for you?
Not besides the license:)
Its for an BSD licensed project, so BDB is pretty much out of the picture.
And since I haven't been able to find any projects resembling BDB my
hope was that I could use Derby with some minor tweaking.
- Kasper
David
Kasper Nielsen wrote:
Julius.Stroffek wrote:
Do you need to store them also on a disk?
Cheers
Julo
Yes,
I'm only interested in the actual storage/indexing. Any caching I'll
take of myself.
Let's for simplicity's sake say I need the following interface in my
application.
interface Store {
void put(byte[] key, byte[] value);
byte[] get(byte[] key);
Map<byte[], byte[]> getRange(byte[] key_from, byte[] key_to);
}
put and get works like the java.util.Map put/get operation.
getRange(83,103) would return all the existing key->value bindings
for numbers between 83 and 103.
I could implement this myself, but I would like to use the
indexing/transactional features of Derby instead. However, I'm not
willing to pay the performance cost for using SQL since I'm only
storing byte[] arrays (if it is possible).
Cheers
Kasper
Kasper Nielsen wrote:
I'm just looking for a lightweight solution where I can store bytes
(key->value pairs) and create a few indexes on the data.
Cheers
Kasper
On 11/24/06, Kasper Nielsen <[EMAIL PROTECTED]> wrote:
Hi,
I'm evaluating Derby for a project of mine. I really would like
to avoid
using SQL and just use Derby as a binary store. Is this possible?
My data consists of key -> value pairs where the keys are uniformly
distributed 160 bit numbers and the values are byte arrays.
For now, I need to support 2 basic queries
* Give me the value mapping for the key K or null if it doesn't
exist.
* Give me a map of (key->value) for the key range of key_start
to key_end.
I had a look at the org.apache.derby.iap.store packages but
wasn't quite
sure where to start.
Cheers
Kasper