[Info-vax] OpenVMS - DCL - Data entry filtering

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Mon Mar 30 10:12:55 EDT 2015


On 2015-03-30 00:08:03 +0000, JF Mezei said:

> On 15-03-29 18:03, Stephen Hoffman wrote:
> 
>> MAIL is a (good?) (bad?) example of what happens when you don't have a 
>> modern database, when you do have to work within the limitations on how 
>> fast you can scan directories (and this also from within a
> 
> But MAIL was originally designed like NOTES, with the expectation that 
> most messages would be stored in the main indexed MAIL.MAI file.

Other than that Notes doesn't use external files for any of its message 
store, AFAIK.  The internal organizations of Notes and Mail are quite 
different.  But you undoubtedly know that, and more.   Then there's 
that I wrote "when your designs can end up used at scales vastly beyond 
what was likely originally intended," further along in that paragraph 
that you had excerpted.   Which leads me to ask again, are you doing OK?

> VMS designers have to decide whether to go with the flow and just make 
> a file system very efficient for large number of files (turning the 
> file system into a database) or  provide database tools that allow apps 
> to store large number of "things" in a single file instead of one file 
> per "thing".

Which is how an operating system evolves, updating limits and updating 
features and variously replacing existing designs to meet new 
expectations and new requirements.

Where VMS was in the 1980s is increasingly unusable today, or can be 
more easily and cheaply dealt with on an Intel NUC 
<http://www.intel.com/content/www/us/en/nuc/products-overview.html>.  
So VMS changed.

As I've commented before, the file system as an application data store 
usually only looks good if you don't already have more appropriate 
database package readily available.

Unfortunately, the resulting morass of these older designs tends to 
become familiar and even normal to folks that use them, and which 
almost inevitably devolves into a gazillion different packages 
maintaining their own database schemes — Notes or Mail or SYSGEN or 
DECnet or TCP/IP or PCSI or AUTHORIZE or the rest — with some using the 
file system, some using RMS, some using the file system, and some 
embedding a database, and some using a combination.

This all works fine for some applications, and particularly for 
existing and older and smaller applications.   But programmers 
eventually end up facing the same basic problem that RMS was intended 
to solve.  Having a set of data access routines.   Preferably a common 
set of data access routines, and related tools.   Preferably 
integrated.  RMS was intended to allow programmers to solve these 
applications requirements fewer times and with less code, and 
preferably with a set of common solutions that would even allow 
inter=operations among packages.   For its time, RMS did quite well.  
RMS still works well for some cases, too.  It is after all a 
quite-reliable NoSQL database.

As applications deal with larger and larger piles of data and more 
complex relationships within and among that data, application 
programmers are left to use the file system as a database, or to use a 
database — this because applications increasingly have much more data, 
and much more complex data, and much more complex relationships between 
data and accessors and logging and the rest.   You blow past what RMS 
can do.   You might well reach the absurdity of directly rummaging 
SYSUAF.DAT, as I and others have implemented.  That rummaging is easy 
thanks to RMS, and nasty because changes to the record formats becomes 
entirely too visible to the applications.   Transactions and data 
abstractions become interesting even to some of the operating system 
components, such as to PCSI and the authorization database — you really 
want some data all written, or all not written.   This leads some to 
purchase and use Rdb — a relational database which would be nice to 
have in the base OS, but I just don't see that happening — or to the 
integration of databases such as SQLite or PostgreSQL.  Once these 
databases and packages start to breed, you get back to the complexity 
and the application-specific solutions that the introduction of RMS was 
intended to avoid, and the application developers and the operations 
folks and the support folks then get to deal with a whole zoo of 
different solutions.  Which, again, was part of what RMS was intended 
to solve.

Where does this commonality of availability all go?  It'd be nice, for 
instance, if OpenVMS had a mechanism that could coordinate with 
applications and RMS WBH caches and Rdb and the rest, so that you could 
get a consistent copy of the data when you use BACKUP or when you split 
off a shadowset member.  This via package-specific plug-ins or 
callbacks or otherwise, and already available as part of the default 
database packages — RMS, or otherwise — within the platform.





-- 
Pure Personal Opinion | HoffmanLabs LLC




More information about the Info-vax mailing list