Discussions

News: Sleepycat Releases New Version of Berkeley DB Java Edition

  1. Sleepycat Software has announced the general availability of version 2.1 of Berkeley DB Java Edition. The new version of Sleepycat's pure Java, transactional database features multi-key secondary databases, multi-threaded performance improvements, and new controls for optimizing concurrency.

    Berkeley DB Java Edition is a pure Java, transactional database for developers of high performance systems.
     
    New features in Berkeley DB Java Edition version 2.1 include:
    • Multi-key secondary databases providing direct support for many-to-many and one-to-many relationships
    • Multi-threaded performance improvements using Java 5
    • Controls to enable developers to optimize concurrency and minimize lock contention: non-locking mode and multiple lock tables
    • New documentation entitled "Writing Transactional Applications with Berkeley DB Java Edition"
    Berkeley DB Java Edition 2.1 is available immediately under a dual license. A no-cost open source license permits redistribution if the application using Berkeley DB Java Edition is open source.

    Threaded Messages (7)

  2. How is its performance?[ Go to top ]

    I have seen Berkeley DB being used at many palces but have never really used and seen the performance of it. I am working on a similar type of proprietry Object persistence engine, basically developing it. The system is suppose to manage more than 10 million records. We are facing serious performance issues on the access time. We have features like sorting which take a lot of time. How would Berkely DB perform in such cases? What services it offers to enhance performance?
  3. Weird database interface ?[ Go to top ]

    From a quick look at BerkeleyDB for Java, it looks more like a component for a database engine to me than a complete end user database. Where is the support to construct complex queries? Am I missing anything?

    If SQL is a prerequisite, BerkeleyDB can't compete with other well-known solutions like HSQLDB, McKoi or Derby. For real nice Java intergration to store and query with objects, db4o is just far more elegant.
  4. Weird database interface ?[ Go to top ]

    For real nice Java intergration to store and query with objects, db4o is just far more elegant.
    Personally I have a new favorite for that: an RDF-database, such as Sesame, combined with XStream. You get absolutely awesome query languages for RDF (such as SerQL or SPARQL), and by serializing your objects to XML using XStream it becomes trivial to handle schema migration and such. And RDF is also a perfect fit for models that have been created using AOP. I've converted our entire CMS/portal to use Sesame and it's just amazing what kind of cool stuff I can do with it that would be just impossible with an SQL database, or even an object database. Inferencing rules. :-)
  5. Weird database interface ?[ Go to top ]

    For real nice Java intergration to store and query with objects, db4o is just far more elegant.
    Personally I have a new favorite for that: an RDF-database, such as Sesame, combined with XStream. You get absolutely awesome query languages for RDF

    Rickard! Long time no see in the db4o forums! Did you take a look into db4o native queries? You get the most awesome query language possible: plain Java.
    100% typesafe
    100% compile-time checked
    100% object-oriented
    100% refactorable
    analyzed and optimized to use database indexes
    => 100% awesome :-)
  6. Weird database interface ?[ Go to top ]

    Rickard! Long time no see in the db4o forums! Did you take a look into db4o native queries? You get the most awesome query language possible: plain Java.100% typesafe100% compile-time checked100% object-oriented100% refactorableanalyzed and optimized to use database indexes=> 100% awesome :-)
    Well, what I like about RDF which I haven't seen in any other approach to data storage or querying is that I don't have to know so much about the underlying models, and also that the database can add a ton of additional information on the fly for me.

    For example, if I add the RDF tuple "B hasChild C" then the RDFDB can automatically add "C isChildOf B". "isChildOf" is a specialization of "isDescendantOf" so "C isDescendantof B" is also added. Then, since "isDescendantOf" is transitive and "B isDescendantOf A" was already in the database "C isDescendantOf A" is also added.

    The result is that by adding the information "B hasChild C" I can now ask the database for all tuples matching "? isDescendantOf A" and get C as a result. That's just pure frickin' querying power in my book. Can you do things like that in db4o? Or in an SQL-database either, for that matter?
  7. Re: Weird database interface ?[ Go to top ]

    If you wanted to, you could implement some kind of relational database on top of Berkeley DB, for example see http://dev.mysql.com/doc/refman/5.1/en/bdb-storage-engine.html.

    But where Berkeley DB really shines, in terms of performance and simplicity, is for storing blobs of data, perhaps with one or more indexes.

    If you need fine-grained queries and flexible data retrieval, you're probably better off with a conventional relational database, or, if your data is complex and changes often (and you appreciate elegant solutions), an RDF database, as Rickard suggests.
  8. Weird database interface ?[ Go to top ]

    From a quick look at BerkeleyDB for Java, it looks more like a component for a database engine to me than a complete end user database. Where is the support to construct complex queries? Am I missing anything?

    Yes. BDB has never really been about that. I guess one way to look at BDB is like a robust transactional shared-process HashMap, which is probably a lot more useful than it sounds.