[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]
Re: A summary of the MDSE meeting.
- To: <us>
- Subject: Re: A summary of the MDSE meeting.
- From: Michael McClary <michael>
- Date: Sat, 31 Dec 88 18:40:42 PST
Minor quibble on URDI: The marks in the staging stream say:
"If all the changes before this mark AND NONE AFTER have been hung
in the closet, the closet contains a consistent data structure."
The URDI has some other nice properties, which were covered in the
meeting but not in Hill's summary. Highlights:
- Single-threaded update, multi-threaded lookup falls out almost
automatically. (A lookup thread only needs a consistent view
of the data structure for the duration of an indivisible
operation. It doesn't care if that view is a quarter-second
out-of-date. Despite Drexler's wonderful work, we must assume
indivisible operations will now and then require reading more
than one snarf. With the breezes of change making Ents sway
and entries blow around on extendable hash tables, an unblurred
snapshot is necessary to keep the lookup thread from getting
lost in mixed metaphores.)
- URDI doesn't care what the snarfs contain. It only cares where
they are to be stored and where the boundaries of a multi-snarf
update lie. Thus it can be specified, coded, and debugged without
waiting for the data structure definitions to settle, and changes
to the data structure won't require re-writing it.
- URDI manages a write cache for snarfs, and must intercept and
sometimes redirect snarf reads to provide the consistent viewpoint.
The simple way to do this makes URDI do the read caching and disk
access optimization as well, with the MDSE threads telling it only
what they want to see and when they're done with it. (URDI's caching
strategy MAY be affected by the data structure organization, but
doesn't have to track structure changes tightly. Using a "wrong"
strategy means fewer cache hits, not algorithm failure.)
- URDI encapsulates platform-dependent file-access issues, insulating
the MDSE from the opsystem and hardware.
Just before Christmas Break, Marcm sat down with me and we sketched the
URDI/MDSE interface. It is a set of nine MDSE->URDI calls, covering
steady-state operation (i.e., not startup or shutdown). My next steps
are to flesh this into a full spec and code an URDI. Related research:
- Following a Drexler-supplied pointer ("Shadow Files") into DBMS
theory (to see if I'm re-inventing a wheel and/or missing a bet.)
- Examining the guts behind the "fsync()" system call in SunOS and A/UX.
(I don't expect these to take much time, and each can be abandoned or
punted if they prove lengthy.)