Sleepycat Ships Major Upgrade to Berkeley DB Java Edition

Discussions

News: Sleepycat Ships Major Upgrade to Berkeley DB Java Edition

  1. Sleepycat Software has announced the general availability of version 2.0 of Berkeley DB Java Edition, a transactional database written in Java. Additionally, Sleepycat today announced that Berkeley DB Java Edition is now officially certified on Sun Microsystems' Solaris 10 Operating System for x64 platforms.

    Berkeley DB Java Edition stores data in the application's native format, features full ACID transactions and recovery, record-level locking, zero administration and a simple, programmatic API. The latest release has enhancements to improve performance, memory management, recovery efficiency and ease of use. For out-of-cache applications, storage efficiency has been greatly improved, minimizing the amount of redundant data in the log. As a result, applications running out of cache should see a 30-70 percent improvement in data throughput.

    New features in Berkeley DB Java Edition version 2.0 include:
    • J2EE standards support -- J2EE Connector Architecture (JCA), Java Transaction API (JTA) and Java Management Extensions (JMX)
    • Sequences
    • Improved memory management and footprint
    • Significant improvements to performance and scalability
    Berkeley DB Java Edition is a Java Powered technology and supports all versions of Unix, Linux and Windows as well as most other major operating systems. In addition to strong adoption by commercial organizations, Berkeley DB Java Edition is widely adopted by open source projects including: JBossCache, Apache Geronimo (ActiveMQ JMS), JavaSpaces, and Spring.

    Berkeley DB Java Edition 2.0 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. A commercial license is available for redistribution of proprietary applications. Berkeley DB Java Edition is available for download at: http://www.sleepycat.com/products/je.shtml

    Have you ever used BDB? Do you think that it might be a valid replacement for entity beans, normally focused on relational database storage?

    Threaded Messages (26)

  2. I've worked with it.

    Here's why / when you want to use BDB: You want to store data (e.g. your objects, or anything that you can turn into a binary value) on disk, you want to access them primarily by their "key" or "id", you have enough of "them" that you don't want to store each item in its own file, and you'd rather use an existing solution instead of writing your own BTREE (or other) filing management implementation.

    The other thing to check on up front is the licensing, since most companies that I've worked with can't use it without buying a commercial license, and I'm not sure if that price is published.

    See:
    http://www.sleepycat.com/download/licensinginfo.shtml
    http://www.sleepycat.com/download/jeoslicense.html

    Peace,

    Cameron Purdy
    Tangosol Coherence: Clustered Shared Memory for Java
  3. Have you considered to provide a JDO API ?
  4. I've worked with it.Here's why / when you want to use BDB: You want to store data (e.g. your objects, or anything that you can turn into a binary value) on disk, you want to access them primarily by their "key" or "id", you have enough of "them" that you don't want to store each item in its own file, and you'd rather use an existing solution instead of writing your own BTREE (or other) filing management implementation.The other thing to check on up front is the licensing, since most companies that I've worked with can't use it without buying a commercial license, and I'm not sure if that price is published.
    We are currently using Jisp (a similar database, conceptually) for our CMS data as it fits the above description quite well. We are now considering moving to using an XML database however, and am looking at the Sleepycat one since it is built on top of BDB which seems like a very good and solid database.

    The licensing quote we got is quite reasonable, and with an option of doing a larger once-only payment instead of per-server. What "reasonable" means probably varies enormously between different companies/developers though :-) Especially if you're used to libraries simply being "free".
  5. Richard,
     
    What specific type data in CMS do you store in this type of database ? I assume CMS information usually stored in 1) Relational Database or 2) XML database. If you have one of those, how this type of database help you ?

    The reason I am asking this question is to see if this type of database can be used in my future projects


    Thanks

    Chester
  6. Richard,  What specific type data in CMS do you store in this type of database ? I assume CMS information usually stored in 1) Relational Database or 2) XML database. If you have one of those, how this type of database help you ? The reason I am asking this question is to see if this type of database can be used in my future projects ThanksChester
    Our CMS is based on an aspect-oriented object model, which is tree-based, so all data associated with those objects (including texts etc.) is stored as binary data in the database. This is combined with Lucene for query support, so we get best of both worlds: fast and convenient data store and expressive and fast searching.
  7. Richard,
      Sounds like you don't use relational database at all. If that's the case, that makes sense to me.

      Thanks
    Chester
  8. Hi Cameron,
    Thanks for the why/when summary. I'd probably also add that you can have many sets of keys to retrieve data records (i.e. multiple indices) not just one id value.

    The other reason main reason to use it if you want a local DB that runs in the JVM and only requires the JAR file (i.e. no seperate installation/connection hassles)

    michael.
  9. nice[ Go to top ]

    Well, this (jar-setup) is indeed a nice feature for non/less DB-oriented Java people. (also for portability - you go to yr client and just "unpack"... :-) - doesn't Cloudscape have a similar feature?
    Like Erik suggested, are there any plans for a JDO Bridge to provide a swift adoption?
    As for timing, (JPOX, the chosen RI for JDO!) is nearing its 2.0 release (marked 1.1 currently), but perhaps there's still time enough to provide this before their roll-out?

    Phil
  10. Hi all

    Some weaks ago I was evaluating both of BDB JE and DB4O (http://www.db4o.com/) for Java. It turned out that DB4O is much higher level and easier to use. Has anybode else tried DB4O as well? What are your thoughts about it?

    - Behrang
  11. not nice: for non-DB java people[ Go to top ]

    "non-DB java people" is actually selling BDB audience short. The DB world includes a lot more than RDBMS's, although that is what has a stranglehold on the enterprise world. Other models often fit the data model better. And performance of BDB is shocking. Then there's the footprint small enough for embedded development.

    For instance, BDB is the backend of choice for subversion, which maps much more nicely than an RDBMS would. LDAP/JNDI similarly map more nicely only a key-value database than the relational world. I've even seen (and unfortunately maintained) what appears to be a BDB-designed system ported to Oracle, simulating BDB features!

    I find that RDBMS's (JDBC et. al.) are a hammer that make too many things look like nails.

    Michael Abato
  12. As of Subversion 1.2.0 they have moved to their filesystem based store as the default because of the terrible problems that people have had with their use of BDB, probably not the fault of BDB though. Also, note that this is the Java version which isn't the same codebase as the one used in Subversion.
    For instance, BDB is the backend of choice for subversion, which maps much more nicely than an RDBMS would.
  13. For the people who can't live without SQL queries, here's a tip: http://josql.sourceforge.net/
    This project allows one to query java objects using SQL. Very interesting... should allow for non-relational databases to at least query its data with SQL.

    Regards,
    Henrique Steckelberg
  14. For the people who can't live without SQL queries, here's a tip: http://josql.sourceforge.net/

    Cool stuff!

    -- Andreas
  15. For the people who can't live without SQL queries, here's a tip: http://josql.sourceforge.net/This project allows one to query java objects using SQL. Very interesting... should allow for non-relational databases to at least query its data with SQL.
    Before anyone starts celebrating of the upcoming union of BDB and SQL databases, please take a look at this limitation of JoSQL.
  16. Cameron,

    Thanks for the summary. Since I am totally ignorance on this BDB, I am going to ask some basic questions that could sound stupid.

    If you already doing database development (using Oracle/DB2/MS SQL Server), are you still considering using this database ?

    It seems to me that if you already have the Relational Database infrastructures, why do you need another infrastructure for another type of database. Am I missing something ?

    Or is this mainly for the case that embedded database is required, in which Relational database is too much for the need ?


    Thanks

    Chester
  17. Cameron, Thanks for the summary.

    You're welcome.
    Since I am totally ignorance on this BDB, I am going to ask some basic questions that could sound stupid. If you already doing database development (using Oracle/DB2/MS SQL Server), are you still considering using this database ?

    No. It's not that kind of database, as far as I know. It's not a relational database, in other words. (I think it can be used by a relational database; IIRC MySQL used to be able to sit on top of BDB.)
    Or is this mainly for the case that embedded database is required, in which Relational database is too much for the need ?

    I think that's fair to say.

    Peace,

    Cameron Purdy
    Tangosol Coherence: Clustered Shared Memory for Java
  18. Cameron,
       Thanks for the clarification

    Chester
  19. Bekeley DB has a very long history in its C incarnation and is used/can be used as a storage backend in a lot of programs, services and daemons in the unix world - well, linux at least.
    It's used everywhere, from DNS to mail, from RPM to MySQL.
    If you already doing database development (using Oracle/DB2/MS SQL Server), are you still considering using this database ?
    BDB is definitely not something you just switch to in a project you've made use of a relational database. That's not to say that it's useless - au contraire, but it simply doesn't compete in the same field as the relational databases.
    It seems to me that if you already have the Relational Database infrastructures, why do you need another infrastructure for another type of database. Am I missing something ?
    Should you for instance need to write loads of data to the disk very fast and do not care to invent your transactional IO engine and storage format - BDB is (one of) the answer(s).
    Or is this mainly for the case that embedded database is required, in which Relational database is too much for the need ?
    It's not so much as embedded as it's about a fast, transactional way to store arbitrary binary data and also be able to retrieve it later and query it in parallel.
  20. Blob support[ Go to top ]

    Does anyone know if the blob support is improved? We ran into this (http://www.jboss.org/index.html?module=bb&op=viewtopic&t=64817) with JBoss Mail Server and had to remove support for BDB. I realize there are obvious challenges to storing a blob in a B-Tree.

    -Andy
  21. Maximum database size in BDB[ Go to top ]

    Has anybody used BDB in real world project?
    I wonder how scalable is it?
    Can it handle 10 GB of data?
  22. Maximum database size in BDB[ Go to top ]

    Has anybody used BDB in real world project?

    OK, I'm not the self-appointed spokesperson for BDB, but yes BDB is definitely used in lots of real world projects. I think you can easily verify this, since a couple lesser known Linux apps (you know, like "sendmail") run on the old C version of BDB.

    As far as the newer Java version of BDB, I've seen it being used. Of course it cannot be as widely used and it cannot be as proven in production as the old C version.
    I wonder how scalable is it? Can it handle 10 GB of data?

    Scalability refers to many, many different aspects of software and computing.

    If you are just referring to file sizes, I am relatively confident that BDB can handle well over 10GB of data, though, since mail folders often exceed that by a large margin.

    The thing to check is the physical limitations based on the data structures. For example, some old filing systems have 2GB and 4GB hard limits b/c of the use of 32-bit signed and unsigned ints respectively.

    I don't believe that this is a problem at all in BDB.

    Peace,

    Cameron Purdy
    Tangosol Coherence: Clustered Shared Memory for Java
  23. [...]run on the old C version of BDB.
    [...] the old C version.

    God damn it Cam, you know I love you but if you keep saying "old" and "C" together I'm going to have to return my fan club membership card !
  24. Has anybody used BDB in real world project?I wonder how scalable is it?Can it handle 10 GB of data?

    Google, Amazon, EMC are customers - picked up from a google search.
  25. Amazon and I bet google for their index (or maybe wrote their own) use it.
  26. Amazon and I bet google for their index (or maybe wrote their own) use it.
    I remember I read a rather interesting and detailed article on the google setup. They do use it.
  27. Google uses BDB for user profile/authentication services, which includes your GMail login.

    There's a really detailed techie article by Chris Newcombe about building BDB into Steam, the content and user authentication engine for Valve Software, of Halflife 2 fame. It's in "almost as old" C++ though but it does handle a lot of traffic given that they use Dell PC's as the servers. The folks at Valve went to great lengths to get the maximum performance possible.

    http://www.sdmagazine.com/documents/s=9734/cuj0504newcombe/

    You can also check the latest stats online to see how many people are logged on (usually 150-200k).

    http://steampowered.com/status/status.html

    michael.