Non-relational so there isn't relationships to keep track of
Flexible schemas, and you don't always have to even have one at all
Designed to be used at scale
NoSQL architecture
Doesn't have to use ACID, there are lots of options for how transactions can work
High availability is assumed as part of the design
Horizontally scalable instead of vertical scalability
Dynamic provisioning for the servers to ensure you have exactly what you need and no more, easy to get more power when needed
Distributed data storage so you can have lots of different data types
Hybrid and multi-model databases are becoming common
So you can have multiple NoSQL types together, like document stores that also support key-value stores
NoSQL scaling challenges
Data isn't guaranteed to be consistent immediately, it tends to have eventual consistency instead, can also have issues of corrupt data
Because there is no schema, storing the data, isn't the challenge, getting anything useful out of it is
New applications and integrations can be hard to build if the data isn't organized
The burden of finding how the data is organized and what you can get out of it falls to the application instead of the database, so the cost is moved not taken away
Once companies are big enough they need more from their data, have data analysts working, and will care more about things like downtime
Turnkey options, this is a third party that takes care of your database needs
NoSQL vendors can get pricey fast. Consultants for the vendor can be a hidden cost. Consultants can cost several thousand a day
Because everything is done by the third party, you don't have to worry about much of anything
Vendor lock-in is also an issue, switching vendors can be a VERY big problem
Hosted VM
Hosting on cloud providers like AWS, Azure, and Google Cloud is one of the most popular solutions for companies of all sizes because it can be a good intersection of cost + skill compared to DBaaS
Using a hosted VM means you have to have someone in house to run the database and be on call for it
This will allow you to not have the infrastructure and IT costs associated with your own servers
Database maintenance needs to be done by you, and this includes everything from general backups to data security
A middle ground between Hosted VM and DBaaS is where the cloud company hosts a database for you
This won't have 24/7 on call service like a DBaaS might