(no title)
irfansharif | 6 years ago
In case you didn't know, a row [idA, valA, valB, valC] is not stored as [idA: [valA, valB, valC]]. It's more [id/colA: valA, id/colB: valB, id/colC: valC] (modulo caveats around what we call column families[0], where you can have it be more like option (a) if you want). My explanation here is pretty bad, but [1][2] go into more details.
[0]: https://www.cockroachlabs.com/docs/stable/column-families.ht...
[1]: https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mappin...
[2]: https://github.com/cockroachdb/cockroach/blob/master/docs/te...
ahachete|6 years ago
There are several ways to map a row to K-V stores, and different databases have chosen different approaches, I'm not referring specifically to CCDB's.
Whether you do [idA: [valA, valB, valC]] or [id/colA: valA, id/colB: valB, id/colC: valC], what I say is that I believe it is less efficient than [idA, valA, valB, valC], which actually also supports more clearly the case of compound keys (aka [idA, idB, idC, valA, ....]). Both are the ways Postgres stores rows.