« Paper: A practical scalable distributed B-tree | Main | How Google Taught Me to Cache and Cash-In »

How is Berkely DB fare against other Key-Value Database

I want to know how is Berkeley DB compared against other key-value solution. I read it from Net that Google uses it for their Enterprise Sign-on feature. Is anyone has any experience using Berkeley DB. Backward compatibility is poor in Berkley DB but that is fine for me. How easy to scale using Berkeley DB.

Reader Comments (2)

Hello, I'm glad you asked that question. :)

I'm a product manager for Berkeley DB here at Oracle. I was part of Sleepycat Software, the company behind Berkeley DB acquired by Oracle a few years ago, and I've been working with Berkeley DB since it was first released as version 1.85 back in 1991. As you might imagine, I'm a bit biased so I thought I'd start off my reply with that disclosure. :-)

Google Accounts, the "Enterprise Sign-on feature" you mention, is an example of Berkeley DB's High Availability (HA) solution. Google was able to distribute basic account information globally in replication groups where the key was the Google Account name and the values were the basic account information such as password, name, etc. These replication groups had to be transactional, dependable, fast, and scalable. Sleepycat and Google worked in close partnership to make this happen.

Any trip to Amazon.com means that you're using Berkeley DB. Not only does the consumer side of the site utilize Berkeley DB for things like content caches, and shopping carts, but many of the AWS utilize Berkeley DB under the covers as well. There are dozens if not hundreds of examples of Berkeley DB deployed as a critical key-value storage engine.

The ability to cache result-set data to avoid database round trips is a very common use case for key-value (sometimes called NoSQL) solutions. Memcache is one of the more famous examples, but it was an in-memory only solution. MemcacheDB is an implementation of the Memcache API and network protocol where the data is persisted and replicated between nodes using Berkeley DB/HA.

Many other key-value solutions, open-source and commercial, use Berkeley DB to store the data and then implement network services, basic schema and minimal query language as layers on top of our database engine. This is an excellent use for Berkeley DB, we are the most mature and best supported key-value database around.

You mention backward compatibility, and I'd like you to go into more detail on that issue because we work hard to try not to break things... too much. But I'm sure you will agree that all software evolves, even "standards" like the Win32 API, POSIX, and the Java JSRs have changed over time.

I hope you, and everyone else out there, strongly consider Berkeley DB in your design where you need a dependable key-value database that you can be sure will be around for at least another decade.


Gregory Burd, Product Manager, Oracle Berkeley DB

November 29, 1990 | Unregistered CommenterGregory Burd

Thanks Gregory for all these details. I already downloaded Berkely DB and started learning it. API is easy and simple. I am developing a facebook applications which is not very complex but it has to handle very large number of users. I plan to use Berkeley DB for storage because of its scalability.

November 29, 1990 | Unregistered Commenterd17may

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>