Skip to content

Instantly share code, notes, and snippets.

@vst
Last active June 3, 2020 01:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vst/1489b97c22c361223dfc9b718fdcd5bf to your computer and use it in GitHub Desktop.
Save vst/1489b97c22c361223dfc9b718fdcd5bf to your computer and use it in GitHub Desktop.
Expected Qualities of a Modern Data Access Layer backed by an RDBMS (Personal Opinion)
  1. High-Level and Accessible: Data should be made available via an API which doesn't require any (1) proprietary, idiosyncratic access technology, (2) custom query language, (3) a particular language, or (4) a particular run-time environment. In other words, users should be able to issue queries using a query language, over a communication protocol and on a run-time environment which they already are familiar with and be able to possess and maintain comfortably on a personal computer with minimal effort and no extra costs.
  2. Liberal: Consumers should be able to issue read/write queries which may involve filtering, searching, sorting, composing and lensing without limitations even in the existence of deeply relational data models, as long as they are authorised to read/write data of interest .
  3. Performant: The evaluation performance of a query should be proportionally related to the essential complexity of the data model. Furthermore, the base performance should be good enough to liberally issue queries without worrying too much about performance imposed by the underlying technology, notwithstanding requiring query optimisations at the query-side in some cases/contexts.
  4. Authorised: All data should be authorised at the row and column levels. Such authorisation machinery should be a built-in functionality of the database access layer to avoid a separate realm of encoding authorisation rules. Once an issued query starts being interpreted, it should be authorised without the need of a procedural intervention: Authorisation should be embedded in the query interpreter (ideally backed by relational algebra capabilities of the RDBMS) as a part of the evaluation process.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment