20 comments

[ 1.4 ms ] story [ 54.0 ms ] thread
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.
I really want to laugh along with the other cool kids at the classification of Mongo as "Not a DB" but I have no idea what he means by that.
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.

Thanks for the explanation.

I am a fan of joking flame wars as long as it is understood to be in good fun.

Seems incomplete without any mention of Microsoft Azure options like Cosmos DB, Blob and Table storage, Data Lake, etc.
Also CouchDB for integrated API serving via views (?) and extreme replication abilities.

Surprised to see Riak labeled as a "caching" DB, but well.. I'm not sure they are an option for anything anymore.

It is nowhere near complete. It also doesn't mention DynamoDB from AWS as a key/value store despite being very common in the serverless world.
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.

Comparisons of similar-ish, but basically rather different systems are always potentially interesting.

But really now, the phrase "best NoSQL database" is almost meaningless, isn't it?

Are you saying "best NoSQL db" is an oxymoron?
No, it's kind of like saying "best kitchen appliance."
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.

Agreed that columnar description is completely false in this chart but what is so special about AgensGraph?

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.

AgensGraph is PostgreSQL based , that's what make it exciting.
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.
Author here.

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 != CSV/columns/spreadsheet/tabular data.

Columnar as in column-family or wide-column is just advanced key/value.

Columnar is a CSV/spreadsheet where columns are designated by name instead of relative position.

Let's call that a column header. People have been using CSV/spreadsheets with headers for half a century.