I Want Hierarchical, not Tabular, Databases
Many databases model data as tables containing rows and columns.
But I think that’s the wrong way to model data. Instead, it should be modeled hierarchically, with a bunch of fields, and sub-records. Like JSON or protobufs or some other hierarchical format.
Why?
First, UIs are hierarchical, with nested <div>s in the web, or UIViews on iOS. Modeling data hierarchically fits the UI well. For example, if you’re showing a search results page on an e-commerce site, your UI consists of a list containing items, each of which contain a name, description, photos, price, ratings, etc. To bind the UI to a data source, it’s simpler to model data hierarchically, too.
Second, when you have an app on users’ devices making calls to your backend, the backend returns data hierarchically in JSON.
Third, if you have a multi-tier architecture on the backend, with servers communicating between each other using some protocol like HTTP or gRPC, they again transfer data between each other in a hierarchical format like JSON or protobufs respectively.
You can see that data is modeled hierarchically at all layers of the system — in the UI, in the wire protocol between users’ devices and your datacenters, and within your datacenters. If the database stores data in rows and columns 1, or a graph, or key-value pairs, or some other representation, you have an impedance mis-match that you need to solve by converting one format to another. This conversion doesn’t add value. It just amounts to busy work, which you want to eliminate. You should work that generates business value.
I have no problem with SQL as a query language, just with the underlying storage model. One could theoretically have a JSON database that exposes SQL, with columns mapping to fields in JSON. I don’t know if this will work well, but in any case, my concern is with the underlying data representation, not the query language.