-> Multiple implementations by "Dave Collier-Brown" -> Re: Multiple implementations by chris@kosh.punk.net (Christopher Ambler) -> Re: Multiple implementations by Michael Dillon -> Re: Multiple implementations by chris@kosh.punk.net (Christopher Ambler) -> Re: Multiple implementations by "Richard J. Sexton" -> Re: Multiple implementations by Michael Dillon -> Re: Multiple implementations by chris@kosh.punk.net (Christopher Ambler) ---------------------------------------------------------------------- Date: 28 Aug 1996 11:31:56 -0700 From: Kent Crispin Subject: Re: Modelling the Process Dave Collier-Brown allegedly said: > Well, it's time t ocomment on requirements next (as I promised > all too many moons ago). This is the partially-proofread example > > As with the appreciation, I'll upload it to a web site presently. > --dave > -- > David Collier-Brown, | Always do right. This will gratify some people > 185 Ellerslie Ave., | and astonish the rest. -- Mark Twain > Willowdale, Ontario | davecb@hobbes.ss.org, unicaat.yorku.ca > N2M 1Y3. 416-223-8968 | http://java.science.yorku.ca/~davecb [900 lines of html deleted] Dave, it was a little hard to read, until I went to your web site. The technique and notation you used for modelling state transitions was quite interesting. I thought the level of generality you used was too high (in general :-). In particular, I think that that the CDB (regardless of whether it is implemented in a special purpose database or DNS) would only contain (C,d,R) triples (probably some more data too, but at an abstract level...). All the changes would be, then, something like this: So, in my view, the only legal transitions would be: C,d,R -> (C,d,R) (C,d,R) -> (C,d,R') (C,d,R) -> C,d,R, and possibly (C,d,R) -> (C',d,R) Now, possibly I see it this way, because I am thinking that the database will actually be imbedded in DNS. - -- Kent Crispin "No reason to get excited", kent@songbird.com,kc@llnl.gov the thief he kindly spoke... PGP fingerprint: B6 04 CC 30 9E DE CD FE 6A 04 90 BB 26 77 4A 5E ---------------------------------------------------------------------- Date: 28 Aug 1996 18:46:24 -0700 From: "Dave Collier-Brown" Subject: Re: Modelling the Process Kent Crispin saith: |Dave, it was a little hard to read, until I went to your web site. |The technique and notation you used for modelling state transitions |was quite interesting. | |I thought the level of generality you used was too high (in general |:-). In particular, I think that that the CDB (regardless of whether |it is implemented in a special purpose database or DNS) would only |contain (C,d,R) triples (probably some more data too, but at an |abstract level...). All the changes would be, then, something like this: | |So, in my view, the only legal transitions would be: | |C,d,R -> (C,d,R) |(C,d,R) -> (C,d,R') |(C,d,R) -> C,d,R, and |possibly (C,d,R) -> (C',d,R) | |Now, possibly I see it this way, because I am thinking that the |database will actually be imbedded in DNS. Yes, that's substantially what you'd hope to have at the end. The diagram I drew was a prototype TTM (Timed Transition Model), which explicitly represents transitions to ``illegal' 'states. These are used to put bounds on the action that puts the model back into a legal state, and in this case to illustrate all the possible states so we could decide which were errors and would need to be fixed. The odd states usually have names like ``decending'' or ``travelling'' or ``approaching'' (from a train and crossing-gate example), and represent things which necessarily happen, but which you'd prefer to take zero time... except they refuse to do so. So you design so that a) the time is bounded, and that some thing is done beforehand so that nothing bad can occur in that time period, or b) the peculiar state is self-curing, or c) the state can't effect anyone. A time-bounded example might be ``before returning YES and allocating a domain name, start a timer that will return the name to the pool if you don't have 2 NS records and a whois file by the time it goes off''. A self-curing state might be ``the NS records of the domain are removed from the DNS on entering the (C,d) R state''. Some element outside the model will tend to drive **that** one back to the desired state! A state that can't affect anyone is harder to think up. I might claim (C,R) d is such, on the ground that it just leads to (C',R',d) but that's stretching the arguement. Anyway, your analysis is correct: there should only be very few legal transitions, and all the others should either be rendered impossible or coerced into legal ones. If it weren't simple, full-scale examples which have a complete TTM for each physical component would be unmanageable. Ours might have a second TTM which showed what records became visible/invisible to the world, but I didn't feel like trying to draw it until I understood the first picture fully! - --dave - -- The text for this is Jonathan Ostroff, ``Temporal Logic for Real-Time Systems'', Taunton, Somerset (Research Studies Press / John Wiley), 1989, ISBN 0-471-92402-4. I understand he has a newer one in draft. This was for a grad course, which I found exceedingly difficult. He's now teaching it to undergrads, which says impressive things about my younger colleagues! - -- David Collier-Brown, | Always do right. This will gratify some people 185 Ellerslie Ave., | astonish the rest. -- Mark Twain Willowdale, Ontario | davecb@hobbes.ss.org, unicaat.yorku.ca N2M 1Y3. 416-223-8968 | http://java.science.yorku.ca/~davecb ---------------------------------------------------------------------- Date: 28 Aug 1996 19:31:43 -0700 From: "Dave Collier-Brown" Subject: Multiple implementations To go along with the web-page and all-dns prototypes proposed, I did mock up the server and client programs in C with my daemon kit. They do absolutely nothing real, but will be easy to experiment with when we get down to brass tacks. But I lied: it took me two evenings because I broke my apraNaut kit while trying to do timeouts properly. Here's an actual run of the fake-a-type: hobbes:/home/davecb/projects/active/sdmp/src> sdmpd 220 sdmpd server on hobbes.ss.org ready at 28 Aug 96 22:20:09 EDT hello davecb@hobbes.ss.org 320 challenge xyzzy authorize gb25nhsl; 250 OK help 250-Shared/Simple Domain Management Protocol server. 250-Supported commands are: 250- HELLO registry 250- AUTHORIZE reply 250- REGISTER domain 250- UPDATE domain 250- RELEASE domain 250- UNREGISTER domain 250- REREGISTER domain 250- NAMESERVER name [address] 250- CONTACTS 250- NOOP 250- HELP 250 QUIT register grurr.shared 250 OK nameserver ns1.gnurr.shared 142.77.1.22 250 OK nameservr ns2.gnurr.shared 142.77.1.23 550-Unexpected command "nameservr ns2.gnurr.shared 142.77.1.23" 550 expected one of quit noop help nameserver contacts nameserver ns2.gnurr.shared 142.77.1.23 250 OK contacts 350 Send contact information, terminated with . hi ho hum . 250 OK noop 250 Ok, did nothing quit hobbes:/home/davecb/projects/active/sdmp/src> - --dave ---------------------------------------------------------------------- Date: 28 Aug 1996 19:37:37 -0700 From: chris@kosh.punk.net (Christopher Ambler) Subject: Re: Multiple implementations Blindingly stupid question, I admit: what is the problem with having a central database running an SQL server and all shared registries using an ODBC-driven front end? Too bulky? I ask not as a serious consideration, but to find out what the common feeling is as to why *not* to use this strategy. Humour me. :-) Christopher Ambler President, Image Online Design, Inc. ---------------------------------------------------------------------- Date: 28 Aug 1996 19:51:51 -0700 From: Michael Dillon Subject: Re: Multiple implementations On Wed, 28 Aug 1996, Christopher Ambler wrote: > Blindingly stupid question, I admit: what is the problem with having > a central database running an SQL server and all shared registries > using an ODBC-driven front end? Too bulky? Yes. SQL is pretty bulky to begin with and was never designed for this kind of transaction oriented stuff. ODBC just makes it worse. That's why I favor using a CGI based transaction protocol that just requires HTTP POST transactions from the client. And an email form based protocol for non 7/24 conected sites. > I ask not as a serious consideration, but to find out what the common > feeling is as to why *not* to use this strategy. Humour me. :-) Some of us started programming relational database applications almost twenty years ago ( or more ) so we know it can be done without the incredibly complex multilayer stuff that is being flogged in PC Magazine these days. I was quite serious when I said that a moderate sized registry could be run on an MAI Basic 4 minicomputer of late 1970's vintage with its serial ports hooked up to a terminal server in order to provide Internet connectivity. Of course I wouldn't do it that way with cheap Pentiums and FreeBSD or SCO UNIX readily available. Michael Dillon - ISP & Internet Consulting Memra Software Inc. - Fax: +1-604-546-3049 http://www.memra.com - E-mail: michael@memra.com ---------------------------------------------------------------------- Date: 28 Aug 1996 20:02:43 -0700 From: chris@kosh.punk.net (Christopher Ambler) Subject: Re: Multiple implementations >Yes. SQL is pretty bulky to begin with and was never designed for this >kind of transaction oriented stuff. ODBC just makes it worse. Okay, that's what I thought. What brought this up is that we've based our .WEB registry on Microsoft SQL Server 6.5, and made all the in-house interfaces out of an ODBC front end. It works very well for us, and supports thousands of queries a minute, as well as a nice locking strategy for multiple people doing database additions/changes while offering a very workable interface to the web. In putting it all together, however, I'm very convinced that it's a solution for a single registry, but would start to overburden a shared model. Not coming from a database background (I've been doing protocols for the last 12 years), this was a learning experience. Christopher Ambler President, Image Online Design, Inc. ---------------------------------------------------------------------- Date: 28 Aug 1996 20:15:55 -0700 From: "Richard J. Sexton" Subject: Re: Multiple implementations Wadda ya mean "bulky". mSQL appears to be fairly resonable. ---------------------------------------------------------------------- Date: 28 Aug 1996 20:19:16 -0700 From: Michael Dillon Subject: Re: Multiple implementations On Wed, 28 Aug 1996, Christopher Ambler wrote: > Okay, that's what I thought. What brought this up is that we've based > our .WEB registry on Microsoft SQL Server 6.5, and made all the > in-house interfaces out of an ODBC front end. It works very well > for us, and supports thousands of queries a minute, as well as a nice > locking strategy for multiple people doing database additions/changes All relational databases do that. > while offering a very workable interface to the web. And this is pretty easy to do with PERL scripts on any platform with any database. > In putting it all together, however, I'm very convinced that it's a > solution for a single registry, but would start to overburden a > shared model. Not coming from a database background (I've been doing > protocols for the last 12 years), this was a learning experience. People doing large quantities of transactions against a database usually go for a product like Oracle, Informix or Progress running on a UNIX server. These systems can scale up to size huge just by running on an SMP UNIX system and adding CPU's and RAM. And because they are heavy duty commercial products they should all provide a way to easily maintain a fallback mirrored system although you may have to do a little scripting to tie it all together. Nevertheless, hardware has gotten powerful enough that even stuff from the GUI environments can usually handle a moderately large load of well-defined transactions such as the shared TLD scenario. Michael Dillon - ISP & Internet Consulting Memra Software Inc. - Fax: +1-604-546-3049 http://www.memra.com - E-mail: michael@memra.com ---------------------------------------------------------------------- Date: 28 Aug 1996 20:25:03 -0700 From: chris@kosh.punk.net (Christopher Ambler) Subject: Re: Multiple implementations >People doing large quantities of transactions against a database usually >go for a product like Oracle, Informix or Progress running on a UNIX >server. These systems can scale up to size huge just by running on an SMP >UNIX system and adding CPU's and RAM. And because they are heavy duty >commercial products they should all provide a way to easily maintain a >fallback mirrored system although you may have to do a little scripting to >tie it all together. We did initial testing on a Pentium 133 with 32 megs of RAM, and then moved it to a Pentium 166 with 32 megs of RAM. Not much difference. Taking it to 64 megs made quite a difference, so we're going to put it on a dual processor Pentium Pro 200 with 256 megs of RAM and forget about it. We can take the machine up to 4 processors and a gig of ram if need be, though I doubt we'll have to. Okay, enough pontificating on what won't work, let's not lose focus that we're working on things that *will* work :-) (but I have to say, I have more respect for people that hack databases these days) Christopher Ambler President, Image Online Design, Inc.