Ketil Malde wrote:
Neil Mitchell wrote:
DBM's can differentiate themselves on external database support,
Surely this is an opportunity to focus development on a single library
with broader support? Currently, we have HSQL and HDBC supplying
incompatible low-level interfaces, supporting a different set of back
ends. No matter what I choose, I risk having to make a costly
conversion later on.
Yes, a common low-level interface is highly recommended. This does not
only hold for DBMs, but also for XML, GUIs, vector graphics etc. The
(imaginary, I'm a DB illiterate) picture is this:
HDB ---------+ +--- Borland
| |
LambdaBase --+--- Generic Low-level DB --- +--- Oracle
| |
hasqel ------+ +--- MySQL
| |
... ...
A common low-level interface factors the m <-> n relation into a m <-> 1
and a 1 <-> n relation.
The story doesn't end here, since there can be additional low-level
functionality that only some DB backends can offer but that some
high-level interfaces require. But that's "just" a matter of putting
another type class on top of the minimal low-level type class.
Of course, designing a low-level interface that is neither too powerful
(not all back ends offer the functionality) nor too general (being
almost trivial) and still simple enough is *hard*, especially since you
can think about it for weeks without touching a computer.
Regards,
apfelmus
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe