Mongo Database

A NoSql database, http://www.mongodb.org/ , with a _long_ list of customers, and only primal database abilities:

That's all. To get schemas, relations, & migrations, you write them yourself into your ORM layer. OR you encode them as embedded application-specific JavaScript that Mongo stores & calls at various trigger times.

Transactions in MongoDB are limited to a single document, though one can apply all the normal tricks involved with ReadCopyUpdate and PersistentDataStructure to explicitly model larger transactions. Similarly, we can model 'pending transactions' explicitly as document state, assuming sufficient cooperation between applications.

This is a lot of extra complexity for the application and schema developers to deal with, but I guess the hope is that it isn't often necessary.


After I switched to MongoDB, I was surprised how little SQL I missed. It seems that adding whatever touch of relations you need, to your ORM, is actually cheaper than adding all the excess cruft you need to connect a modern language to classical SQL statements. --PhlIp

What sort of application are you developing?

A ThinServer? that pushes dynamic content to iPads, and journals which iPads have what version of what content.

These are not us, but we are in this space:

http://www.macrumors.com/2011/08/23/united-airlines-deploying-11000-ipads-to-pilots-as-electronic-flight-bags/

http://www.tampabay.com/sports/football/bucs/article1187879.ece

Fat server (the WorldWideWeb) was fun, but we are on to the next big thing. And we don't use Mongo for the actual relations, not because they are too few, but because they are too many!


As a fellow application developer, I'm not surprised at how little SQL you missed. Or, how little you missed SQL. You will miss SQL, however, when management decides your storage solution (which is what NoSql databases are) needs to be concurrently shared by multiple applications -- some legacy, and some new, in a variety of languages and platforms -- and support ad-hoc queries from popular reporting and/or ETL tools.

Ah, the "older, wiser, and more experienced than you" argument. I'm sure NoSql can be abused, but point of our server is stash everything in a common database cluster, and serve it all via REST to multiple applications. So, yes, we have the ad-hoc query layer...

No, that would be the "been there, done that, got the T-shirt" argument. What you have is a general access mechanism using a recognised architectural style. You have neither a standard query language nor a standardised protocol, either of which could be the basis for an ad-hoc query layer. As described, there's nothing "ad-hoc" about it.


See also: DynamicRelational


EditText of this page (last edited October 19, 2012) or FindPage with title or text search