Internal Memorandum To Database group Date September 28, 1982 From Rick Cattell Location PARC/CSL Subject Minutes of DB applications File [Indigo]Squirrel>Doc> group meeting of 9-28-82 9-28-82.minutes XEROX Edited by Cattell, September 30, 1982 1:09 pm Attendees Mark Brown, Rick Cattell, Jim Donahue, John Maxwell, Willie-Sue Haugeland Progress Reports Walnut is going to be released in Cedar 3.4! We finally think the B-tree bugs in CedarDB are rare enough that we can widen out user community. The functionality has not only been adequate for some time, but now is reasonably stable. Willie-Sue is making some minor changes and one major change: opening the log under a separate transaction to improve efficiency. Rick has learned how to use Tioga for the database group minutes. The minutes are still being kept on Squirrel>Doc>date.minutes. There is now a file Squirrel>Doc> TiogaForm.Minutes for use for minutes of future meetings. Many of the items in the last meeting's minutes have already been done or the need obviated. John has made most of the noted fixes to Squirrel. Jim has volunteered to work on a new project which now has very high priority: a memo explaining how to build a database application and use Squirrel. He is also working on improvements to the Squirrel/Palm entity editor to solve some known problems. Mark has volunteered to work on another documentation project: Walnut. The documentation that Rick and Willie-Sue put together is not in very good shape. And Rick is finally back to work on documentation of the database system itself. We should be swimming in wonderful documentation by the next meeting. Miscellaneous There is still a lot of interest in database applications besides the five of us: Brotz, Crowther, and McGregor all have expressed plans to get involved. We're unfortunately not ready for them yet... We are all going to change our "Re-Use" buttons to be "Freeze" buttons since that's a better name, and we will make them be the right-most buttons in the viewer pending analysis by Jim looking for a better plan. Editor viewers will also have the Save and Reset buttons, which will be the leftmost two buttons now. I think. Jim noticed that applications are not notified of schema changes by the Nut notification facility. There's no reason why this couldn't be done, Hickory is mainly interested in updates to the SubType relation which we could fix. But in general applications are not likely to encounter schema changes during their execution, and even Hickory could handle this by supplying an executive command to add new subtypes of Event so that it can update its data structures at that time. Supporting Non-Walnut Databases Until segments are implements (next item), Rick proposed the following plan for scavenging and backing up when users have both Walnut and other data in their database: a set of command files for dumping and scavenging, different for "Walnut" and "Walnut+other" users: Walnut users Walnut + other To dump: (use dump button) @DBBackup.cm: does DBDump of non-Walnut, then WalnutDump To rebuild database: @WScav.cm @DBScav.cm: does WScav.cm, then does DBLoad of DB.backup Segments John and Rick outlined the plan for the implementation of segments, to enable databases consisting of more than one file. A number of changes will be necessary to Squirrel, but current applications will be affected only in their declaration of their data schema and in the database open/close procedures. Basically each application will be assigned a segment in which to put its data. For our current applications (Hickory, Walnut) this will be a local segment, however remote Juniper segments will also be possible. Each application will have both a file name (e.g. [Local]Walnut.DB) and a "segment number" (e.g., 23) assigned. The segment number is necessary because the hack we are using to split up the database address space uses the number to identify the space assigned to that segment. It will now be possible to copy database files or move them to another machine, they will continue to work as databases because no file identifiers are stored inside. However the segment number assigned the file may not change, and will be checked when the segment is opened. Furthermore, no more than on file with the same segment number may be opened, thus if one application expects to deal with more than one database file, it must have a segment assigned to each file, e.g. according to its use (public whitepages, private whitepages, private Hickory, public Hickory, etc.) When each application declares its data schema, the segment in which the data will reside must be passed to the DeclareRelation and DeclareDomain calls. The relation and domain handles will thereafter refer only to data in that segment, i.e., a relation or domain does not cross segment boundaries. If an attempt is made to cross segment boundaries, e.g. by calling SetF[relship, attribute, entity] where entity is in a different segment than relship, an error is generated. When a RelationSubset or DomainSubset call is invoked, only the appropriate segement is searched. The only exception to this encoding of segments into the relation and domain handles will be the "system" entities, e.g. DomainDomain and RelationDomain. When a DomainSubset is invoked on these, all open segments are searched. Only Squirrel uses these system entities now (e.g. for DBDump and Palm), and it will be changed to demand a segment name as well as a domain name and entity name when creating a displayer window, put the segment name in dump files, etc. Each application will call OpenSegment in its initialization code, and the Nut.Notify procedure will be changed to act upon opens or closes of its segment rather than of the whole database. Mark and Rick intend to implement segments soon after converting to Cedar 3.4, the rest will convert application code at that time. We believe the segment implementation is relatively straightforward. John and Rick started to outline a design for more complex segments ("augments") which allow applications to make references across segment boundaries, though relations still do not cross segment boundaries. They didn't get very far into the description, however, and deferred it to another meeting.  "Cedar" styleJI continuationxblImemoHeadst.L $L=L  ;IlogoIbody tv$-N JSIheadNNNO NNNONItableP7PP>PONNNNNN