@hackage BerkeleyDBXML0.1

Berkeley DB and Berkeley DB/XML binding for Haskell

Berkeley DB / Berkeley DB/XML binding for Haskell Version 0.1 23 Sep 2008 by Stephen Blackheath

email me: http://blacksapphire.com/antispam/ darcs repository: http://blacksapphire.com/BerkeleyDBXML/

Berkeley DB/XML is a powerful, fully transactional, XML-based database that uses XQuery as its query language. You can download it here:

http://www.oracle.com/database/berkeley-db/xml/index.html

This package provides a Haskell binding for Berkeley DB/XML. It is a tolerable subset of the API, and I hope to improve it over time. I have stuck closely to the C++ API, with some minor changes where a Haskell idiom seemed appropriate. I hope that people will develop higher level wrappers for it. I have had great success with the "pickler" interfaces in the HXT library. In a future version of this package I will give some examples.

This package is in its very early stages, and needs some work, but it should allow you to write a fairly serious application. If you find some part of the API that is missing, and would like it added, please contact me.

I hope this package helps make Haskell better. I am partly motivated by a belief that SQL is holding us back. An advanced language should have an advanced database.

If you just want Berkeley DB without Berkeley DB/XML, you should be able to achieve this easily by modifying the BerkeleyDBXML.cabal file. The Berkeley DB parts do not depend on the Berkeley DB/XML parts. Some time I will make this easier.

To install, use the standard Cabal install procedure:

runhaskell Setup.hs configure runhaskell Setup.hs build sudo runhaskell Setup.hs install

If Berkeley DB or DB/XML is not installed in the default location of /usr or /usr/local, you will need to specify the paths in this way:

runhaskell Setup.hs configure
--extra-include-dirs=/usr/local/dbxml-2.4.13/include/dbxml/
--extra-lib-dirs=/usr/local/dbxml-2.4.13/lib/

Cabal does not seem to check these very well. If you get the lib directory wrong, you won't find out until you try to build the examples.

See the examples/ directory.