INCOMPLETE. The prospective script for a presentation on DocumentDB that I will give at the Baton Rouge .Net Users Group on May 13. The slides for the presentation are here.

Pros of NoSQL Databases: Speed and Flexibility

Speed: NoSQL databases tend to be faster than their relational counterparts given the same amount of data.

Flexible Data Models: Even minor changes to the data model of a relational DB require careful management and may necessitate downtime or reduced service levels. NoSQL databases give you a platform where you can easily structure the data in whichever fashion is the most appropriate, which also helps you get speed benefits.

Elastic Scaling: Newer NoSQL databases are designed to expand transparently to take advantage of new nodes, and they're usually designed with low-cost commodity hardware in mind. This makes them well-suited for cloud platforms like Azure and the applications hosted therein.

Big Data: Relational-DB capacity has matched the increases in data, but the structure of relational databases makes Big Data harder to manage in an RDBMS. NoSQL systems generally can handle much larger volumes of data.

Economics: NoSQL databases typically use clusters of cheap commodity servers to manage the exploding data and transaction volumes, while RDBMS tends to rely on expensive proprietary servers and storage systems. The result is that the cost per gigabyte or transaction/second for NoSQL can be many times less than the cost for RDBMS, allowing you to store and process more data at a much lower price point. (This is a non-factor for NoSQL versus SQL Azure.)

No need for DBAs: High-end RDBMS systems require the assistance of expensive, highly trained DBAs. DBAs must be intimately involved in the design, installation, and ongoing tuning of high-end RDBMS systems. NoSQL databases are generally designed from the ground up to require less management: automatic repair, data distribution, and simpler data models lead to lower administration and tuning requirements — in theory.

Cons of NoSQL Databases: Youth and DIY

Learning Curve: NoSQL databases are largely DIY.

Maturity: SQL Server and its relational brethren are mostly stable and richly-functional. DocumentDB is brand-spanking new, and some popular NoSQL products are works in progress.

Support: Most NoSQL systems are open source projects that don't have the resources of an Oracle, IBM or Microsoft. (This won't be an issue for DocumentDB.)

Analytics and BI: NoSQL databases have evolved to meet the scaling demands of modern Web 2.0 applications. Consequently, most of their feature set is oriented toward the demands of these applications. However, NoSQL databases offer few facilities for ad-hoc query and analysis. Even a simple query requires significant programming expertise, and commonly used BI tools do not provide connectivity to NoSQL. WIth SQL Server, you know there are tools for analytics and business intelligence and that those tools have some degree of maturity. You won't get that with NoSQL, at least not in the Microsoft world until NoSQL databases become common here.

Administration: Typical NoSQL solutions requires a lot of skill to install and a lot of effort to maintain. Hopefully that won't be the case for DocumentDB, but we won't know for sure until real applications start using it.

Expertise: There are literally millions of DBAs and developers who can work with relational databases. (There are several just in this room.) There are very few NoSQL experts at this point, and virtually nobody who is an expert with DocumentDB.


Microsoft is serious about having both SQL and NoSQL solutions in Azure. You can use SQL Azure, or you can set up SQL Server in a virtual machine. You can use DocumentDB, or you can set up MongoDB in a virtual machine.

The learning curve will flatten as more MS developers use NoSQL and develop tools to work with it.

Because DocumentDB is a Microsoft product, open-source concerns go away. The more money that DocumentDB makes for Microsoft, the more they will promote it and the better they will support it.

Will the developer community embrace it? We'll see. NoSQL is a significant paradigm shift for MS developers who used SQL Server as the data store for everything.