Oracle Unveils New Open Source BerkeleyDB Release 103
Mark Brunelli writes to tell us that Oracle has released the newest version of the open source Oracle BerkeleyDB Java Edition. From the article: "The new release of the Java embeddable database is the third to come out in three years and the first new version to come out of Sleepycat Software since Oracle purchased the open source stalwart back in February. Rex Wang, Oracle's vice president of embedded systems and a former vice president of marketing at Sleepycat, said the latest release lets Java developers take advantage of a new Persistence application programming interface (API) that provides greater flexibility and new performance optimizations that enable applications to run faster."
Rex Wang? (Score:1, Funny)
Re:Rex Wang? (Score:2)
Re:Rex Wang? (Score:3, Funny)
Re:Rex Wang? (Score:1)
Many using SQLite instead. (Score:5, Interesting)
SQLite is even starting to take over from MySQL for many smaller websites. The overhead (both in terms of system resources and administration) can't be justified when using a server-based system, especially when SQLite does the job just fine.
What we may even see is MySQL squeezed out of the market. I know many database developers who are starting to use PostgreSQL for their higher-end databases, and SQLite for the lower-end. MySQL could be considered the best contender for mid-range DBs, but SQLite and PostgreSQL keep converging, thus pushing MySQL out to a point of irrelevance. Of course, there has been a decade and more of development using MySQL, so for legacy reasons alone it will continue to be used for ages.
Re:Many using SQLite instead. (Score:5, Informative)
You're missing the point. Putting aside for the moment that we're discussing the Java version of BDB (which would be useless on the types of embedded platforms you're talking about), BDB is a basic database engine. Which means it's the type of software you can use to build a database management system on top of rather than being a DBMS in its own right. SQLite and HSQL are complete DBMS packages that will only meet your needs if an SQL engine is what you want.
For example, if you're looking to build an Object Storage Database, SQLite and HSQL would both be terrible choices. But BDB would fit the bill perfectly.
Re:Many using SQLite instead. (Score:2)
Re:Many using SQLite instead. (Score:2)
<old-fogg
Re:Many using SQLite instead. (Score:2)
Re:Many using SQLite instead. (Score:2)
The benefits of BDB, with the addition of SQL. (Score:2, Insightful)
While you are correct regarding BDB being superior for storing certain types of data (eg. objects), in the past BDB has often been used in embedded applications to store relational data. It isn't well suited to such uses, without additional layers
Re:Many using SQLite instead. (Score:1)
Why? This is exactly the sort of thing Java was invented for. Don't confuse whichever head of the Hydra you are familiar with with the body of the beast.
KFG
Re:Many using SQLite instead. (Score:2)
Java wasn't invented to run on systems with no JVM and lack of dynamic library support. SQLite and BDB, however, will run on those systems.
Re:Many using SQLite instead. (Score:1)
Well, D'oh! Cars weren't invented to run without wheels either. So if you want a car, you put wheels on it.
SQLite and BDB, however, will run on those systems.
Why do you believe those are the systems OP was talking about? There's nothing in "handheld" that implies that.
Bias note: You'd probably have to shoot me before you could get me to use Java in an embedable system, or any other for that matter. I'm no Java fanboy defe
Re:Many using SQLite instead. (Score:2)
2. He mentions that BDB's "library-based archtecture" is a problem for said platforms. This denotes that he statically compiles SQLite on systems lacking dynamic libarary support.
3. Nowhere does he mention Java capabilities, such as the type you'd use to power an engine like HSQL [hsqldb.org]. Instead he goes off into discussions about larger native engines like MySQL.
Argue all you want, but he was referring to non-Java platf
Re:Many using SQLite instead. (Score:1)
Ok.
1. He suggests SQLite instead of BDB.
That's right, as an alternative, suggesting the use of BDB as an option in the systems he's talking about.
2. He mentions that BDB's "library-based archtecture" is a problem for said platforms.
No, he says that SQLite's library-based architecture is a plus in such systems.
KFG
Re:Many using SQLite instead. (Score:2)
Ah, sorry. I misread that part. My point still holds, however. He's talking about native code, not Java.
That's right, as an alternative, suggesting the use of BDB as an option in the systems he's talking about.
He's comparing the native version of BDB. SQLite doesn't come in a Java version. And for J2ME platforms, you don't get the option of deploying a native binary. You either deploy all-Java, or you don't deploy at all. Which m
Re:Many using SQLite instead. (Score:1)
Another plus. Now if only something could be done about the SQL part.
KFG
Re:Many using SQLite instead. (Score:2)
BDB comes in a (generally better supported than the Java version) native version AND it doesn't support SQL. So I guess that's double-plus good in your book.
Re:Many using SQLite instead. (Score:2, Interesting)
Many developers use some sort of embeded / open source databases for prototyping and for small scale projects these DBs often end up being the production databases.
The reasoning is we have written some triggers/stored procedures etc in PostgreSQL/MySQL etc, and now it's too much of a hasel to convert every thing to Oracle or DB2.
This leads to a lot of loss in revenue for the big guys, especially from
Re:Many using SQLite instead. (Score:3, Insightful)
It'd take some time to figure out what exactly is Oracle trying to do with it.
Re:Many using SQLite instead. (Score:1)
Who has that kind of time?
Re:Many using SQLite instead. (Score:2)
Re:Many using SQLite instead. (Score:2)
I'm glad to see oracle releasing open source products.
Re:Many using SQLite instead. (Score:5, Informative)
Re:Many using SQLite instead. (Score:4, Insightful)
If you are a database person, as opposed to a programmer who needs some kind of persistent store, database implies the prsence of certain abstractions that BDB doesn't have. It's the abstractions that matter, because they implement a kind of data reusability. This is a big aspect of databases that programmers don't always appreciate, but if you remmber the early adoption days of the relational model (as I do), the idea of abstracting data from its application was a big thing. We had methods already after all for managing storage: hash tables, b trees, record pointers. We even had models (the hierarchical model). But relational databases allow you to create a model of your data that is abstracted from what you are doing with it.
I'd go so far as to say that absracting data for reusability is what distinguishes a true database from other kinds of collections of data. Of course people do use words in a vague way, but this property definitely separates out what is unquestionably a datbase from what is only arguably a database.
There is no question of BDB being a database management system. Collections of data in BDB format might arguably be databases depending on the effort the programmer went through, but usually they're just indexed files.
Things like SQLLite that implement a generaly query and data manipulation language (e.g. including but not limited to SQL) is clearly a database management system, although it may not be a very good one.
Re:Many using SQLite instead. (Score:2)
This is of course the way that MySQL started, a collection of BDB files binded together to appear on the outside as a collection of tables.
Re:Many using SQLite instead. (Score:1)
A topic I actually know something about.
There are several things wrong with your statement regarding the comparison of the two database. The first is that you assume that a database has to be relational in order to promote reusability. There can be many ways of promoting reusability including OODB and even the old ISAM model. BDB offers a very unique model of reusability and there are no constructs or foreign key relationships that are not possible to implement in BDB. Case in point MySQL can u
Re:Many using SQLite instead. (Score:1)
Re:Many using SQLite instead. (Score:2)
If I was already using BDB or the like, what does SQLite really give me? I didn't need SQL if I was using BDB (and many things really don't need it at all).
Larger applications are still going to need the power of a server based DB. There are a lot of choices like MySQL, PostgreSQL, and even Oracle when you can finally afford it. But I just don't see SQLite ever breaking through the "embedded library DB" ceiling to bump out MySQL. If Larry wants to destroy MySQL, then he should release a free open sourc
Re:Many using SQLite instead. (Score:2)
I can understand porting to PostgreSQL for higher end stuff since PostgreSQL is more enterprise ready. I can see small home user sites using SQLite for there database. Even small apps can store configs among other things. On the other hand, For simplistic data storage but large amounts of it. (storing blogs, BBS (in toda
Re:Many using SQLite instead. (Score:3, Informative)
SQlite is so incredibly cool (for a database, of course; databases are intrinsically limited in coolness). It's tiny, it's easy to set up, it's portable, it's faster than MySQL for most operations, and it's not just open source, it's actually in the public domain. It
Re:Many using SQLite instead. (Score:2)
Re:Many using SQLite instead. (Score:1)
Sweet! (Score:4, Informative)
Re:Sweet! (Score:2)
Re:Sweet! (Score:3, Informative)
There are no restrictions on accessing partial records in BDB Java Edition -- it is the same as the BDB C Edition in this respect. However, you may have a misunderstanding about the way partial records work in both products: neither product has a BLOB capability.
In both products, when you do a partial get/put of a record, the entire record must be loaded into the BDB cache. The only advantage of a partial get/put is that it reduces the
Re:Sweet! (Score:2)
There are no restrictions on accessing partial records in BDB Java Edition -- it is the same as the BDB C Edition in this respect. However, you may have a misunderstanding about the way partial records work in both products: neither product has a BLOB capability.
Well that's not so good. I was under the impression that BDB was able to easily handle large binary chunks up to 4GBs in size. From this page [sleepycat.com]:
Re:Sweet! (Score:1)
Each record is loaded into cache separately, and records are evicted when the cache is full according to an LRU algorithm. The total size of a database can therefore exceed the size of main memory and swap.
But for a single record, in most cases it is completely loaded into cache, even when a partial get/put is performed. Even when using memory mapping with the BDB C Edition, in most cases the complete record is
Re:Sweet! (Score:1)
Re:Sweet! (Score:1)
Mark
Re:Sweet! (Score:2)
Main Entry: showstopper
Pronunciation: -"stä-p&r
Function: noun
1 : an act, song, or performer that wins applause so prolonged as to interrupt a performance
2 : something or someone exceptionally arresting or attractive
Now, in IT it is mostly used to mean exactly the opposite, but it seems to me that introducing that meaning as well might let things get a bit confusing...
That is: I suppose you weren'
Alternate link (Score:2, Informative)
http://www.oracle.com/corporate/press/2006_may/be
"high-performance" Java? (Score:1, Troll)
Re:"high-performance" Java? (Score:5, Insightful)
Re:"high-performance" Java? (Score:3, Funny)
> For the same amount of keystrokes, I can ... write it in C...
Too funny.
Re:"high-performance" Java? (Score:2)
Re:"high-performance" Java? (Score:1)
Re:"high-performance" Java? (Score:2)
The previous version loaded the entire record prior to reading/writing. This was a huge performance bottleneck if you were working with records above a kilobyte or two in size. In addition, the old version didn't make use of memory mapping like the C version did.
I'm still trying to confirm the exact design of the new version, but I get the impression that they're using memory mapping in Java to give the sam
Re:"high-performance" Java? (Score:2)
Re:"high-performance" Java? (Score:3, Insightful)
So when you stick to basically writing code like you would in C, it's the same speed, but when you add more complicated, time-saving, features, it slows down? Wow, that's surprising. (</sarcasm>)
Re:"high-performance" Java? (Score:2)
Re:"high-performance" Java? (Score:3, Insightful)
Re:"high-performance" Java? (Score:2)
So what? It's possible to write shit code in any language.
Re:"high-performance" Java? (Score:1)
-1, Wrong (Score:5, Informative)
Java classes get compiled to native code with machine-specific optimizations at runtime. If you had done any research on the subject [google.com], you would find that Java out-performs other languages at times. Java is fast. This argument is over, so please can it.
Re:-1, Wrong (Score:3, Insightful)
Java can be almost as fast a C code, and in some weird cases even more. The problem is that java requires a jvm, and loading the jvm plus having the garbage collector running means your program will start slower, and use more ram. Also the fact that it is not
5, Insightful (Score:1, Troll)
Your comments are all valid, except I disagree with the last one. I find myself pleasantly surprised by the performance of Eclipse and applications based on its platform (in terms such as interface responsiveness). The other point I would make in contrary to yours is that Java is, these days at least, primarily intended for server applications. Most code written on the Java platform is never touched by the end user, but rather agents acting on behalf of the user. Hence interface response is rarely a con
Depends. (Score:2)
Re:-1, Wrong (Score:2, Troll)
OpenOffice isn't written in Java. It optionally uses it for various scripting components. The speed of OOo (which is actually pretty good these days) has everything to do with the performance of C/C++ code.
And Azureus?
Works fine here. Maybe if you put more than 64MB in your system, you'd see better response out of programs that are memory demanding? And I can't think of anything that demands more memory than an app that caches hundreds of megs of P2P data in memory.
Why doe
Re:-1, Wrong (Score:2)
I don't know about you but Azureus runs horribly on my machine and I have a 1GB of ram. It runs fine initially, but after a while it is hogging system resources to an unbelievable extent, making it impossible to leave running for a period of
Re:-1, Wrong (Score:2)
It has nothing to do with Java, and everything to do with Azureus's design. Azureus gobbles up system resources for performance. In addition, it's constantly computing pretty charts, graphs, and statistics which further its resource requirements. Not to mention all the plugins it loads to provide extra features.
People keep holding up Azureus as a "problem" even t
Why OOo is slow. (Score:2)
I'm not sure about the rest, but I can address this one.
StarOffice 5.x was the series where the people at Sun started to think, "hmmm, this could actually be something someday" - and they started showing it to a very small group of people. Those people said, "Well, that's not bad, but it crashes all the time."
StarOffice 6.x was more stable, and is when Sun spawned OpenOffice.org. It reached a slightly larger audience who said, "Well, it's stable now, but it's missing a who
Re:-1, Wrong (Score:2)
That is quite irrelevant. Java as a language is slower than C (and both are slower than Fortran) because the language imposes constraints upon expression. Java's object-heavy type system and required garbage collection impose performance penalties which are not present in C. Java's lack of native pointers imposes performance penalties in some specific circumstances - mostly those where C can use pointer arithmatic for ma
Transfer from Berkeley to Postgres? (Score:3, Interesting)
If there's no such wrapper, is there a way to use this BDB source to strip out everything below the BDB interfaces, install mapping to PG interfaces, then integrate with PG?
Re:Transfer from Berkeley to Postgres? (Score:3, Interesting)
Re:Transfer from Berkeley to Postgres? (Score:2)
Asterisk uses BDB for configs and MySQL for CDRs and other persistent app data, and I integrate it with apps already using Postgres. Especially when I want to join across those multiple databases, it's a real pain. None of these apps are using any DB features unique to any of those RDBMS'es, though the interface calls are often annoyingly idiomatic. DB migration tools should
BDB on flash drives (Score:3, Insightful)
Of course, on the backend [blogs.com] we use PostgreSQL. Rails + PostgreSQL is good stuff.
Apache Derby/Cloudscape also available (Score:2)
Its optimizer is not the smartest in the world, but we use Derby and if you get your indexes right, you can usually get very good performance on very large datasets.
Re:Apache Derby/Cloudscape also available (Score:2)
You're trolling...but... (Score:2)
Disk bottleneck is just an excuse (Score:1)
Years behind db4o (Score:2, Interesting)
However BerkeleyDB JE is still years behind db4o [db4o.com]. The querying functionality of BDB is very rudimentary. It requires manual selection of indexes to be used, not really sophisiticated in comparison to db4o's Query-By-Example and Native Query concepts.
It would be interesting to see BerkeleyDB and db4o race head to head in the Poleposition benchmark [polepos.org].
BDB has best performance of all choices (Score:2, Informative)
My company has been using Berkeley DB for quite some time and I must say that is indeed quite a good product. Sleepycat has great support and the tool itself is very stable. The java version is fairly new and doesn't have the features of the C version but works great as object storage.
However it is not very user friendly and also not very programmer friendly. It doesn't have any single protocol like JDBC for access because you can literally program it to do anything. Also the documentation is very
Re:BDB has best performance of all choices (Score:2)
Re:BDB has best performance of all choices (Score:1)
If you know how SQLLite compares to HSQL then let me know and you will have your answer to a certain extent.
Our evaluation phase is over so I can't justify doing any tests on SQL Lite but I may try it if I ever get some spare time as I am sure I could just use the HSQL tests against SQLLite as well
Rex Wang, what an insanely cool name! (Score:1)
[GN]dbm any one? (Score:1)
That is mostly what BerkeleyDB is.
As for handheld scaners, I put tiny tcl http://tinytcl.sourceforge.net/ [sourceforge.net] on mine. I am sure calling ndbm would be easy. execpt the handheld was a DOS_5. I don't have the time to go find all the junk like 'C' compilers for that. The next version of the scanned will run Linux and all will be well.
Will it be backward- and forward-compatible? (Score:2)
If Oracle solves this problem, I'll be a very happy camper...