Nice! The title made me assume that this was an article from someone who didn't understand the different use-cases for these technologies - to the contrary, it's a handy flow-chart for understanding which NoSQL databases are suited to various types of data.
When mongo came out the picked some bad defaults so it never waited for an ack for writes. So data was lost, but benchmarks looked amazing. It had a lot of other problems, it became too big too fast by promising magic it didn't deliver. Not sure how it is right now.
besides that flame attempt, his definition of columnar databases doesn't match the standard - Dynamodb is pretty much the complete opposite of columnar.
I think it's great when people take time to make visual explanations of things and share them. This has potential.
But as it is, it is nothing more than a mind map with some flowchart symbols thrown in and is missing a lot of popular databases. Druid (timeseries) and DynamoDB (key/value) notably.
It is also only nested one level deep. Any of the sections with more than one child can be broken up into other decisions to narrow down the choice.
Columnar data stores are not like CSV, at all. Check http://database.guide/what-is-a-column-store-database/ for example "Each row can contain a different number of columns to the other rows. And the columns don’t have to match the columns in the other rows (i.e. they can have different column names, data types, etc)" This nonsense of columnar stores being a fixed schema is repeated in the next step.
Graph databases misses AgensGraph which is arguably one of the most exciting database developments nowadays.
Seriously, all you have to say about Aerospike is "cool name"? And MongoDB "not a database" is a very tired joke.
Columnar database does not mean data in columns - it's just a badly used name to describe what are effectively advanced key/value databases, usually because they supported ordering, nested levels of values and collections.
This covers the main types of databases and use cases. I believe that developers should known them all to be able to pick the right tool for the job. Sometimes, a job really has a right tool.
This doesn't cover every product in the universe. These databases are the most important databases that you should absolutely known (and use when necessary).
Many enterprise paid products are missing: Teradata, Exadata, Vertica, OpenDJ, Greenplum... not that many people have $50k/node to spend on them.
This also ignores a million of lesser known databases, most of which are not noteworthy. Apologies in advance for not mentioning your favorite or homegrown products.
20 comments
[ 1.4 ms ] story [ 54.0 ms ] threadbesides that flame attempt, his definition of columnar databases doesn't match the standard - Dynamodb is pretty much the complete opposite of columnar.
I am a fan of joking flame wars as long as it is understood to be in good fun.
Surprised to see Riak labeled as a "caching" DB, but well.. I'm not sure they are an option for anything anymore.
But as it is, it is nothing more than a mind map with some flowchart symbols thrown in and is missing a lot of popular databases. Druid (timeseries) and DynamoDB (key/value) notably.
It is also only nested one level deep. Any of the sections with more than one child can be broken up into other decisions to narrow down the choice.
But really now, the phrase "best NoSQL database" is almost meaningless, isn't it?
Graph databases misses AgensGraph which is arguably one of the most exciting database developments nowadays.
Seriously, all you have to say about Aerospike is "cool name"? And MongoDB "not a database" is a very tired joke.
JanusGraph is another graph database engine that uses more pluggable storage and indexing backends.
There's also DGraph which is a new focused distributed graph database designed to be faster and more scalable.
This covers the main types of databases and use cases. I believe that developers should known them all to be able to pick the right tool for the job. Sometimes, a job really has a right tool.
This doesn't cover every product in the universe. These databases are the most important databases that you should absolutely known (and use when necessary).
Many enterprise paid products are missing: Teradata, Exadata, Vertica, OpenDJ, Greenplum... not that many people have $50k/node to spend on them.
This also ignores a million of lesser known databases, most of which are not noteworthy. Apologies in advance for not mentioning your favorite or homegrown products.
Columnar as in column-family or wide-column is just advanced key/value.
Let's call that a column header. People have been using CSV/spreadsheets with headers for half a century.