Hey Lukas,
Many thanks for the great publicity - very much appreciated :-)
I fully agree with your point about JOOQ and NoSQL. Depending on what
particular problem you are trying to solve, a SQL database or a NoSQL
database might be a better tool for the job. If the former is the case
and you have a JVM app, then you are right in JOOQ's sweetspot.
I think in most cases, the query semantics of NoSQL databases are not
declarative enough to be subsumable by a variant of the JOOQ API. Were
you to attempt this, I think you'd run into the issue that Joel
Spolsky calls a leaky abstraction.
In the case of Cassandra/CQL you have an interesting half-way house:
CQL is still far off being SQL in terms of functional richness, and
because of that, you would still lose 90% of JOOQ. But, CQL does place
a little bit of SQL-esque structure on top of the raw Cassandra data
model, and there are a bunch of scenarios where valid CQL can lead to
invalid data access patterns. So that's why I wanted to cherry pick
JOOQ's compile time ability to detect illegal query constructs in CQL.
So I think the rule of thumb is too pick the right tool for the job,
use tools that keep you productive and let the database do the heavy
lifting for you.
As an aside, I'm currently working on JOOQ based project which hasn't
been released yet, so I'm still going to be a user of JOOQ for some
time to come.
Cheers,
Ben