When reading articles about NoSQL databases e.g. FoundationDB
I very often encounter a notion of "storage substrate"
. I tried to find some formal or exact definition of what is a storage substrate
in the context of databases but didn't find anything, just mentions not a definition.
Can someone clarify for me what is a storage substrate
? Is it a synonym of database or some part of it? Just a small definition or link will be helpful. Thanks
FoundationDB uses the term to indicate the 'bottom' of a database technology stack. It's used when you want to think about how how data is accessed separately from how it is stored. For example, with FoundationDB, the Key-Value core is the storage substrate. Various APIs, or layers, can be added on top of that substrate and provide different ways of accessing your data.
Here's an example. An application uses the SQL query language to access FoundationDB's SQL Layer, which then converts those queries into a Key-Value API. Those Key-Value commands are sent to the storage substrate, aka FoundationDB Cluster:
When we start thinking of storage substrates as different from how we access our data, it opens an interesting possibility. What if you could have one storage substrate, but access it with a variety of different APIs, depending on whichever one was most appropriate for your application? I think this can be very powerful from an operations point of view, as we no longer have to figure out how to install, scale, and maintain multiple databases.
Full disclosure: I'm an engineer at FoundationDB