4 Comments
User's avatar
aleclofabbro's avatar

besides the fact that choosing the right DB heavily depends on the user case,

what you think about ArangoDB as a general purpose DB, implementing various paradigms :

key value

strict entity relations

document store

graph queries

transactions

schema validation

Expand full comment
Eric Bishard's avatar

Couchbase

Expand full comment
Guyren Howe's avatar

SQL is an abomination, but the relational model is the right thing to use for core business data. There are many reasons, but here's a simple one: once you have a function that takes a set of arguments, what you need is sets of those arguments. That's what a relation is: a set of key-value sets, with the same keys so you can do the same things to them.

I can use a SQL database (particularly Postgres, which does it far and away the best) to store non-relational data just great.

But the likes of Mongo store the data in a way that is inefficient to treat as relations, so although you might be able to use a relational query language with Mongo, the performance will be awful.

What the world needs is a database that offers relational and non-relational storage, but doesn't use SQL. I suggest Datalog for querying relations and non-relations alike. Give me Mongo, but let me have "documents" that are relations (you could see them as a JSON array of objects all having the same keys and same value types for each key) and I'll listen.

Until then, Postgres is the best general-purpose data store because it does both relational and non-relation very well (it is slower at storing non-relational data if you index it, but its indexing is so good that it's considerably faster than Mongo at retrieving it from a complex query. As a generalization).

Expand full comment