Not‐So‐Common Features of NoSQL
Although some features are fairly common to NoSQL databases (for example, schema agnosticism and non‐relational structure), it’s not uncommon for a database to lack one or more of the following features and still qualify as a modern NoSQL database.
NoSQL software is unique because the open‐source movement has driven development rather than follow a set of commercial companies. You therefore can find a host of open‐source NoSQL products to suit every need. When developers couldn’t find a NoSQL database for their needs, they created one, and published it initially as open‐source.
The majority of popular NoSQL solutions are driven by commercial companies, with the open source variant lacking the key features required for mission critical use in large enterprises.
The difference between open‐source NoSQL vendors and these wholly commercial companies is that open‐source vendors have a business model similar to the Red Hat model. Basically, they release an open‐source product and also sell enterprise add‐on features, support, and implementation services.
This isn’t a bad thing! It’s worth noting, though, that people at NoSQL aren’t driven purely, or even mainly, by open‐source developers working in their spare time — instead, they work for the commercial companies behind the products.
Buyer beware! When it comes to selecting a NoSQL database, remember “total cost of ownership.” Many organizations acquired open‐source products only to find that they need a high‐priced subscription in order to get the features they want.
BASE versus ACID
Prior to 2014, the majority of NoSQL definitions didn’t include ACID transaction support as a defining feature of NoSQL databases. This is no longer true.
ACID‐compliant transaction means the database is designed so it absolutely will not lose data:
Each operation moves the database from one valid state to another (Atomic).
Everyone has the same view of the data at any point in time (Consistent).
Operations on the database don’t interfere with each other (Isolation).
When a database says it has saved data, you know the data is safe (Durable).
Not many NoSQL databases have ACID transactions. Exceptions to that norm are FoundationDB, Neo4j, and MarkLogic Server, which do provide fully serializable ACID transactions.
So why is ACID compliance a not‐so‐common feature? When the Oracle RDBMS was released, it didn’t provide ACID compliance either. It took seven versions before ACID compliance was supported across multiple database updates and tables.
Similarly, if you look at the roadmaps of all the NoSQL databases, you’ll see that all of them refer to work on transactional consistency. MongoDB, for example, raised $150 million in the fall of 2013 specifically to address this and other enterprise issues. MongoDB has announced a new ACID compliant storage engine. The ACID versus BASE debate is an interesting one.