Wow, great thread with a lot of information!
I am a DBA. I am in consulting so get to see a lot of different things and work with a lot of companies. I specialize in SQL Server but have used many of the databases discussed here (MDB, Oracle, PostgresSQL, MySQL). Hopefully my experience can be of use here.
First for Oracle (I know nobody is touting it here but since it was brought up). rdutt is exactly correct. They have gouged and treated their customers very poorly for many years. The company I currently work for has a large contingent of Oracle DBAs. Every company we work with that has Oracle is either working on getting away from it or talking about it. They are only still in Oracle due to database stickiness. Most of them end up moving to PostgresSQL, which is kinda a slap in the face since Oracle bought MySQL. One of the most common reasons I hear for preferring to go to Postgres is they don’t trust Oracle’s management because they’ve been taken to the woodshed by them for a long long time. To put in perspective why they want to get away from it, I was tasked a few years ago to work with one of my Oracle colleagues and do an apples to apples comparison SQL Server & Oracle and what it would cost a client just from startup a few years ago. The cost is not even in the same ballpark. The difference was Oracle - $200K, SQL Server $28K. In addition to all this, Oracle business is drying up. Oracle professionals see the writing on the wall and are either bitter (saying things that were true 10-15 years ago but no longer are) or learning other database technologies (SQL Server and Postgres being the most common I’ve seen them working with).
On to NoSQL
To understand the advantages & disadvantages of NoSQL & traditional SQL databases, its important to understand what/how they store data. Brittlerock mentioned his thought that NoSQL was more a of a denormalized model. A denormailized model (often referred to as a Star Schema) is more of a data warehouse type thing and this leads into BI, Big Data & AI. A NoSQL database is kinda the opposite of denormalized/big data/BI stuff. I’ll explain how and why.
A traditional SQL database stores data in tables. For example, a table of Orders, a separate table with order details and join the two tables. Think of these tables like a spreadsheet. One spreadsheet would have a list of different orders. Perhaps order date, a tie to the order details, a tie to who ordered etc… There could be millions of records (rows) in this table.
A NoSQL database stores data in documents. So each order will have its own document but will have all the detail of the order. This works great for small transactions and writing lots of data. It is very fast, don’t have to worry about contention in the table and such. It also makes it easy to do what is in my opinion, the biggest advantage of a NoSQL Database; auto-sharding. This allows for horizontal scaling. This is ideal for a globally distributed application. Think things like mobile apps or even things like water pipe flows. There are a whole lot more great use cases for this.
Where NoSQL really struggles is when trying to analyze data more than a single row at a time. In a traditional SQL database, we can simply write a query. We can pull all orders in my above example that have occurred this month, summarize the sales etc… This is very very difficult in a NoSQL database. To perform these types of operations, the data needs to be moved to a data store more conducive to this kind of thing. I’ve been on several projects where we piped data from MongoDB into a SQL database for reporting and analysis purposes. This is why I said earlier that its kinda the opposite of a denormalized data set (operationally anyway).
Disclaimer here, I’m trying to give an overview of it. There are details I’m skipping over for simplicity’s sake.
In my opinion, there are two big advantages of NoSQL and especially MongoDB. One is the auto-sharding & ability to horizontally scale. It is cheaper to scale horizontally than vertically (if we need more processing power, add another server instead of the traditional SQL method of buying the latest and greatest hardware and moving the database there). The other advantage is developer fanaticism. For the first advantage, I see traditional SQL databases getting closer to being able to auto-shard. If they do get there, it could be a game changer for them and have a big negative impact on NoSQL. The second one, developer fanaticism will be interesting to watch. I don’t know if that is enough to drive a business forward. In any case, traditional SQL databases are not there yet and I don’t think they will get there anytime soon.