NoSQL Zone is brought to you in partnership with:

Steve is the Chief Solutions Architect at 10gen where he is responsible for the user experience of MongoDB including drivers, integrations, web & docs and evangelism. Steve previously has held executive roles at OpenSky, Portero, Takkle. Steve blogs, authors books, teaches, speaks, writes code and maintains a popular Vim distribution. You can find out more at Steve is a DZone MVB and is not an employee of DZone and has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

Where Have all the Good Databases Gone?

  • submit to reddit

Perhaps you’ll recognize these words, “About five years ago I started to notice an odd thing. The products that the database vendors were building had less and less to do with what the customers wanted. … So, what is this growing disconnect?” Those words were written in 2004 by Adam Bosworth, a veteren of Microsoft, Google and BEA. In the 7 years since things have only gotten worse. Open source products came to maturity (if you can call it that), but none improved on any of the challenges Bosworth outlines. He points out 3 things that everyone wants in a database, but nobody is providing.. well nobody except MongoDB.

1. Dynamic Schema

He writes:

Dynamic schema so that as the business model/description of goods or services changes and evolves, this evolution can be handled seamlessly in a system running 24 by 7, 365 days a year. This means that Amazon can track new things about new goods without changing the running system. It means that Federal Express can add Federal Express Ground seamlessly to their running tracking system and so on. In short, the database should handle unlimited change.

Mongo with it’s document design handles this elegantly and gracefully. We’ve made loads of changes to our database without even needing to worry about migrations. The responsibility to maintain changes falls on the application and isn’t a constrained by the database.

2. Dynamic Partitioning

He Writes:

Dynamic partitioning of data across large dynamic numbers of machines. … The only issue is that it needs to be dynamic so that as items are added or get “busy” the system dynamically load balances their data across the machines. In short, the database should handle unlimited scale with very low latency. It can do this because the vast majority of queries will be local to a product or a customer or something over which you can partion.

Mongo has solved this as well with it’s automatic sharding. It runs pretty much exactly as he requests. Mongo automatically distributes data among shards and balances them dynamically.

3. Modern Indexing

He Writes:

Google has spoiled the world. Everyone has learned that just typing in a few words should show the relevant results in a couple of hundred milliseconds.

He is a bit vague on what he means here, so taken one way, everyone has solved this, but then again if taken that way, it was solved long before 2004 when this was written. I’m going to take it to mean real indexing across highly distributed data stores. So you can find a set of data across many nodes all extremely quickly. I’d like to add this to automatic indexing. There is no reason not to do this using a similar approach to how mongo tackled sharding. Again as he ins’t clear on what he is asking for it’s not clear if MongoDB has solved it or not. I think with their map reduce framework and the ability to create combined indexes on rich structured documents I think they are heading in the right direction, but I don’t think they’ve quite solved this yet.

Published at DZone with permission of Steve Francia, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Liam Knox replied on Tue, 2012/04/24 - 9:15pm

I think you need statistcs here.


If there is any question of Oracle, DB2 or Sybase being redundent in the next 10 years please make this claim.

All I see here is a nice to have. 

Mark Unknown replied on Wed, 2012/04/25 - 8:32am

What I need in a database (RDBMS or not) is the ability to just say "String" or "Number". Having to guess what the max length is a PITA.

Barry Morris replied on Wed, 2012/04/25 - 1:00pm

Disclosure: I represent NuoDB.

NuoDB is a SQL/ACID database system that scales-out/in elastically on commodity machines. As relates to NuoDB and the above issues:

1. "Dynamic schema": Yes

2.  "Dynamic partitioning": Yes

3. "Modern indexing": Nothing announced. 

4. To Mark's point NuoDB does not require specification of field sizes.  A number is a number.   A string is a string.

Beta 6 is available at


Mike P(Okidoky) replied on Wed, 2012/04/25 - 2:19pm in response to: Barry Morris

Barry, could this be a replacement for MySql that we're using with Hibernate in JBoss? We hate the tuning, innodb storage inefficiencies, and the seemingly uncertain master-slave mechanism it has. Does it run on Linux (perhaps it's written in Java?)?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.