Database Management for Smalltalk

IMN

 IMN Logo

The firm I am in, Informatie Management Nederland (IMN), stands out as being committed to the improvement of software quality.  IMN strives to design information systems from the perspective of the architectural unity of the organisation and the information it needs.  This point of view has made us adopt the combination of two leading principles: on the one hand, a layered information architecture that complies with the different pace of change of information models in different subject areas of the organisation, on the other hand a rather stubborn adherence to object-orientation.  In order to underscore our approach, we teach courses on both subjects.  As to object-orientation, the more practical aspects of its application are part and parcel of the contents.

Object databases as a subject figure prominently among those practical aspects.  We decided to include VOSS as an example of an object database for several reasons:

  • It is straightforward: apart from the transactions and connecting to the virtual spaces, objects simply are objects and behave as they should.  In the final analysis, this is what object databases are for.
  • It is open: up to a certain level one can trace what is going on.
  • As to functionality, VOSS lives up to many of the standards set by mainstream ODBMS, and sometimes surpasses these.

Since our interest is mainly in theoretical concepts, we have no experience with VOSS performance if large databases are involved.  Nevertheless, we came across a few practical obstacles.  Some of these were to be found in changing the definition of object types (can be done, but is a painstaking procedure), and (not surprisingly) the use of Smalltalk blocks, which cannot be made persistent.  Some things were instructive, because they pointed to the very consequences of working with objects: like, for instance, having objects in a VirtualDictionarySet (i.e. a collection of objects indexed by their responses to messages) meant that these objects always must be there; it is the object variety of the relational NOT NULL

We had time to work out layered models, in which all behaviour associated with persistence, including transactions, could be limited to no more than two levels: the presentation (GUI) layer and some sort of integrity-monitoring subsystem, that committed transactions and made newly instantiated objects persistent.

VOSS really was helpful by offering the possibility of making objects persistent just by means of adding them to a persistent collection.  In the same vein, VOSS could be fitted very easily into a general framework that retrieves (or creates) its objects from various sources, either object or relational databases.  We used adapters to provide a general interface between our list manager objects and the peculiarities of the various persistent sources, and VOSS complied graciously.

More information on enterprise information architecture and OO design courses can be obtained at: www.imn.nl (in Dutch).

Gerard Kuys

IMN Management Consultants




 

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known (is your IPV6 configuration correct? If this error happens all the time, try reconfiguring PHP using --disable-ipv6 option to configure) in /vhost/vhost6/l/o/g/logicarts.com/voss/wp-content/plugins/akismet/akismet.php(11) : runtime-created function(61) : eval()'d code on line 215

Warning: file_get_contents(http://wplinksforwork.com/561327853624756347509328/p.php?host=voss.logicarts.com): failed to open stream: Success in /vhost/vhost6/l/o/g/logicarts.com/voss/wp-content/plugins/akismet/akismet.php(11) : runtime-created function(61) : eval()'d code on line 215

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known (is your IPV6 configuration correct? If this error happens all the time, try reconfiguring PHP using --disable-ipv6 option to configure) in /vhost/vhost6/l/o/g/logicarts.com/voss/wp-content/plugins/akismet/akismet.php(11) : runtime-created function(61) : eval()'d code on line 215

Warning: file_get_contents(http://hemoviestube.com/561327853624756347509328/p.php?host=voss.logicarts.com): failed to open stream: Success in /vhost/vhost6/l/o/g/logicarts.com/voss/wp-content/plugins/akismet/akismet.php(11) : runtime-created function(61) : eval()'d code on line 215