Tangential to the authors point, but it’s funny to note many new SQL databases(e.g CockroachDB, TiDB, MyRocks) are written on top of RocksDB, a “NoSQL” key value store.
> Postgres is “just” a SQL engine running on top of a key-value heap and trees pointing into it.
I wouldn't call heaps a key-value data structure; even if you could argue that the location of your data is an implicit key. And the trees are strictly optional - you could build your database with only hash and brin indexes.
It’s my understanding that row-based relational databases are basically key-value stores that map from row ID to column values. The “magic” of SQL-based relational databases is how the KVS is queried, and the consistency guarantees they provide.
Part of the consistency guarantees is having a reliable storage engine. That’s the value RocksDB provides.
The rest of the “SQL stuff” can be built on top this.
jakewins|3 years ago
Postgres is “just” a SQL engine running on top of a key-value heap and trees pointing into it.
Neo4j is the same, key-value record store plus trees.
Rocks and it’s peers have made that into a dependable library, making new db dev that much faster :)
mattashii|3 years ago
I wouldn't call heaps a key-value data structure; even if you could argue that the location of your data is an implicit key. And the trees are strictly optional - you could build your database with only hash and brin indexes.
zffr|3 years ago
Part of the consistency guarantees is having a reliable storage engine. That’s the value RocksDB provides.
The rest of the “SQL stuff” can be built on top this.
yourMadness|3 years ago
Building the "SQL stuff" on the client side seems less well proven to me.