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


schema validation

Expand full comment


Expand full comment

[Implement relational data model and programming based on hash-map (NoSQL)](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/relational_model_on_hashmap.md)

Expand full comment

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