(Key-value) stores offer a dict-like interface to many different storage systems because these can all be seen through the key-value lenses (often in more than one natural way) and because there is a natural way to intepret the basic operations of getting, setting, deleting, listing and counting items.
But as we move upward from the root functionality, we'll start to discover elements and operations that only make sense for a group of systems, but not another.
Let's take file systems for example: Applicable to local file systems, remote server files (through ssh or ftp), AWS s3, dropbox, google drive, etc. These all have a distinction between folders and files, concepts like file size and extension, and have operations that are natural for the hierarchical organization of files into folders: isdir, isfile, mkdir, (path) join, listdir, getsize, copyfile, etc.
We'd like to implement our unified approach here too, so that one can enhance stores with file system persisters, in a consistent and therefore DRY-COC-SOC manner.
We need to ask ourselves the same question for other types of systems: document (e.g. mongo), tabular (e.g. sql), graphical (e.g. neo4j), etc.
(Key-value) stores offer a dict-like interface to many different storage systems because these can all be seen through the key-value lenses (often in more than one natural way) and because there is a natural way to intepret the basic operations of getting, setting, deleting, listing and counting items.
But as we move upward from the root functionality, we'll start to discover elements and operations that only make sense for a group of systems, but not another.
Let's take file systems for example: Applicable to local file systems, remote server files (through ssh or ftp), AWS s3, dropbox, google drive, etc. These all have a distinction between folders and files, concepts like file size and extension, and have operations that are natural for the hierarchical organization of files into folders:
isdir, isfile, mkdir, (path) join, listdir, getsize, copyfile, etc.
We'd like to implement our unified approach here too, so that one can enhance stores with file system persisters, in a consistent and therefore DRY-COC-SOC manner.
We need to ask ourselves the same question for other types of systems: document (e.g. mongo), tabular (e.g. sql), graphical (e.g. neo4j), etc.