Learning about MongoDB
Combining the best features of document databases, key-value stores, and RDBMSes.
MongoDB (from "humongous") is a scalable, high-performance, open source, schema-free, document-oriented database. Written in C++, MongoDB features:
- Document-oriented storage (the simplicity and power of JSON-like data schemas)
- Dynamic queries
- Full index support, extending to inner-objects and embedded arrays
- Query profiling
- Fast, in-place updates
- Efficient storage of binary data large objects (e.g. photos and videos)
- Replication and fail-over support
- Auto-sharding for cloud-level scalability
- MapReduce for complex aggregation
- Commercial Support, Hosting, and Consulting
MongoDB bridges the gap between key-value stores (which are fast and highly scalable) and traditional RDBMS systems (which provide structured schemas and powerful queries).
On my drive home from a meeting yesterday, I listened to episode #507 of .Net Rocks! where Carl and Richard interviewed Michael Dirolf from 10gen, the creators of open-source database MongoDB.
I think there is a lot of potential in this technology, especially for agile teams. MongoDB is schema-free, so it would seem that you no longer have to spend time worrying about database schema migrations.
Here are the resources I've gathered on MongoDB:
MongoDB site:
http://www.mongodb.org/
The .Net Rocks Show
http://www.dotnetrocks.com/default.aspx?showNum=507
A webinar presented by Dwight Merriman from 10gen:
http://vivu.tv/portal/archive.jsp?flow=527-472-7945&id=1256920226675
C# Driver for Mongo (including partial Linq implementation)
http://www.mongodb.org/display/DOCS/Drivers
Experimenting with MongoDB from C# (K. Scott Allen)
http://odetocode.com/Blogs/scott/archive/2009/10/13/experimenting-with-mongod...
Using MongoDB from C#(The Dynamic Programmer)
http://blog.dynamicprogrammer.com/2009/11/10/UsingMongoDBFromC.aspx
Source code:
http://github.com/samus/mongodb-csharp/tree/master
The article from The Dynamic Programmer includes an example of deserializing collection data into entities - something I was thinking about as I'm a big fan of IntelliSense and learning about problems at compile rather than run time.
Check out MongoDB!
