![]() But it’s also extremely powerful: one single conceptual mechanism to deal with information, whether present in application variables, i.e. ![]() This lets you “join” a list with another one, and do strange things such as perform selection and projection on the list of all public functions defined in the application. It’s a bit unusual to think of application data in relational terms. The “values” relation, for example, is produced by scanning some simple lists stored (as dicts) in a Tcl variable:Īnd the “functions” relation is created on-the-fly by introspecting the code to find out which public functions have been exposed in each driver. Some of the information shown above is virtual, in the sense that the information is never actually stored into a table but gets extracted on-demand from the running application. There’s an “ungroup” operator to flatten this structure as many levels as needed, along with the usual “select”, “project”, “join”, etc. Note that this isn’t a hierarchical- or network-database. But since I’m supporting relations-as-values, it can all be represented as a single relation in JeeMon (I call ’em “views”, btw). In the “flat” SQL world, you’d need 5 tables to represent this sort of information. And drivers can expose a number of functions (in this case they all only expose a “decode” function). Drivers can support more than one interface (the roomNode driver supports both remote packets and direct serial connection, for example). This was rendered as nested HTML tables, btw – very convenient.Įach driver has a description of the type of values it can produce, and each set of values is grouped (as in the case of ookRelay2, which can generate data for three different types of packets it is relaying). What you’re looking at is the definition of 4 drivers (I’m leaving off a bunch more to keep this example limited). So now I’m exploring the world of pure relational data structures again: Time will tell whether that freedom won’t become a curse. The nice bit is that for JeeMon I get to pick anything I like – there are no external requirements. This is an area I’ve spent quite a few years on in a previous life. I’m having a lot of fun with JeeMon, but it’s also starting to look like a bone which is slightly too large to chew on…Īs in any application, there is the issue of how to manage, represent, and store data structures. This post strays solidly into the realms of software and database architecture…
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |