From: Jim Janney on
I need to maintain a data base of small text snippets keyed by
arbitrary strings, without the overhead of a full SQL relational
database. We will have several people putting data into it so it
needs to support concurrent access over a network.

JDBM catches my eye (http://jdbm.sourceforge.net/) but I can't find
any place that says whether it supports concurrent access or not.
Berkeley DB would be perfect but would need a license from Oracle
since this is a commercial product. Gdbm apparently does not support
concurrent access. TDB (http://sourceforge.net/projects/tdb/) looks
good but would require a JNI interface and probably some work to get
it to compile under Windows.

Any recommendations? I can do JNI if neccessary but would be just as
happy not to need to. I need something I can get going quickly --
management wants it yesterday, as usual...

--
Jim Janney

From: Arne Vajhøj on
On 01-04-2010 15:11, Jim Janney wrote:
> I need to maintain a data base of small text snippets keyed by
> arbitrary strings, without the overhead of a full SQL relational
> database. We will have several people putting data into it so it
> needs to support concurrent access over a network.
>
> JDBM catches my eye (http://jdbm.sourceforge.net/) but I can't find
> any place that says whether it supports concurrent access or not.
> Berkeley DB would be perfect but would need a license from Oracle
> since this is a commercial product. Gdbm apparently does not support
> concurrent access. TDB (http://sourceforge.net/projects/tdb/) looks
> good but would require a JNI interface and probably some work to get
> it to compile under Windows.
>
> Any recommendations? I can do JNI if neccessary but would be just as
> happy not to need to. I need something I can get going quickly --
> management wants it yesterday, as usual...

Why are you so sure that a full SQL relational database has
too much overhead?

They work. They are widely used. They are optimized a lot.
They support ACID.

Chosing some rarely used ISAM package, that may have
concurrency problems & other bugs and may not even be optimized
very well seems as a high risk for little gain to me.

Sure Google, Yahoo, Facebook etc. uses NOSQL databases
today. But they can also afford to spend 2 digit millions
of dollars on the development without blinking. Can you?

Arne


From: Jim Janney on
Arne Vajhøj <arne(a)vajhoej.dk> writes:

> On 01-04-2010 15:11, Jim Janney wrote:
>> I need to maintain a data base of small text snippets keyed by
>> arbitrary strings, without the overhead of a full SQL relational
>> database. We will have several people putting data into it so it
>> needs to support concurrent access over a network.
>>
>> JDBM catches my eye (http://jdbm.sourceforge.net/) but I can't find
>> any place that says whether it supports concurrent access or not.
>> Berkeley DB would be perfect but would need a license from Oracle
>> since this is a commercial product. Gdbm apparently does not support
>> concurrent access. TDB (http://sourceforge.net/projects/tdb/) looks
>> good but would require a JNI interface and probably some work to get
>> it to compile under Windows.
>>
>> Any recommendations? I can do JNI if neccessary but would be just as
>> happy not to need to. I need something I can get going quickly --
>> management wants it yesterday, as usual...
>
> Why are you so sure that a full SQL relational database has
> too much overhead?

Five years of experience using a relational database in the
application for which this is intended. They're great for some
things, and we use it for those things. This is not one of them.

> They work. They are widely used. They are optimized a lot.
> They support ACID.
>
> Chosing some rarely used ISAM package, that may have
> concurrency problems & other bugs and may not even be optimized
> very well seems as a high risk for little gain to me.
>
> Sure Google, Yahoo, Facebook etc. uses NOSQL databases
> today. But they can also afford to spend 2 digit millions
> of dollars on the development without blinking. Can you?

If I had time to debate this I wouldn't have asked the question. I
was hoping someone might have a quick, constructive suggestion.

--
Jim Janney
From: Spud on
Jim Janney wrote:
> I need to maintain a data base of small text snippets keyed by
> arbitrary strings, without the overhead of a full SQL relational
> database. We will have several people putting data into it so it
> needs to support concurrent access over a network.
>
> JDBM catches my eye (http://jdbm.sourceforge.net/) but I can't find
> any place that says whether it supports concurrent access or not.
> Berkeley DB would be perfect but would need a license from Oracle
> since this is a commercial product. Gdbm apparently does not support
> concurrent access. TDB (http://sourceforge.net/projects/tdb/) looks
> good but would require a JNI interface and probably some work to get
> it to compile under Windows.
>
> Any recommendations? I can do JNI if neccessary but would be just as
> happy not to need to. I need something I can get going quickly --
> management wants it yesterday, as usual...
>

Google "key value stores". There are a bunch of them. Unfortunately most
aren't very far along yet, and some have way more overhead than I think
you want. But Tokyo Cabinet gets good reviews, as do a few others.
From: Arne Vajhøj on
On 01-04-2010 16:08, Jim Janney wrote:
> Arne Vajhøj<arne(a)vajhoej.dk> writes:
>> On 01-04-2010 15:11, Jim Janney wrote:
>>> I need to maintain a data base of small text snippets keyed by
>>> arbitrary strings, without the overhead of a full SQL relational
>>> database. We will have several people putting data into it so it
>>> needs to support concurrent access over a network.
>>>
>>> JDBM catches my eye (http://jdbm.sourceforge.net/) but I can't find
>>> any place that says whether it supports concurrent access or not.
>>> Berkeley DB would be perfect but would need a license from Oracle
>>> since this is a commercial product. Gdbm apparently does not support
>>> concurrent access. TDB (http://sourceforge.net/projects/tdb/) looks
>>> good but would require a JNI interface and probably some work to get
>>> it to compile under Windows.
>>>
>>> Any recommendations? I can do JNI if neccessary but would be just as
>>> happy not to need to. I need something I can get going quickly --
>>> management wants it yesterday, as usual...
>>
>> Why are you so sure that a full SQL relational database has
>> too much overhead?
>
> Five years of experience using a relational database in the
> application for which this is intended. They're great for some
> things, and we use it for those things. This is not one of them.

And the simple solution of buying some more powerful
database hardware is not an option?

>> They work. They are widely used. They are optimized a lot.
>> They support ACID.
>>
>> Chosing some rarely used ISAM package, that may have
>> concurrency problems& other bugs and may not even be optimized
>> very well seems as a high risk for little gain to me.
>>
>> Sure Google, Yahoo, Facebook etc. uses NOSQL databases
>> today. But they can also afford to spend 2 digit millions
>> of dollars on the development without blinking. Can you?
>
> If I had time to debate this I wouldn't have asked the question. I
> was hoping someone might have a quick, constructive suggestion.

The fact that using a relational database does not perform
well does not guarantee that a non-relational database will
perform well.

That is just wishful thinking.

If you ask questions for free in a public forum, then
you should be prepared for suggestions about other
approaches than the one you prefer.

Arne