Testing the waters.

Mike McDonald mikemac@titian.engr.sgi.com
Fri, 09 May 1997 00:06:09 -0700


>Date: Fri, 09 May 1997 14:26:02 +1000
>From: "Chris Bitmead uid(x22068)" <Chris.Bitmead@alcatel.com.au>
>Subject: Re: Testing the waters.
>To: lispos@math.gatech.edu

>It worked. You can still do it on UNIX either with raw partitions or
>just having one gigantic file. Would you want to?

  Typically for performance reasons. I may know something about my
data that I can take advantage of that the normal Unix FS can't. But I
agree, most of the time it's not worth the effort.

>I assume you have never used an ODBMS.

  I have. In fact, I've written one for Lisp, no less.

>You don't think you need an OOFS? (I'll stop using "POS" I think. I
>forgot it can stand for piece of shit).

  SO, are you proposing a persistent store or an OODB? They are
definitely different beasts.

>If you have ever compared writing a C++ application with ORACLE or a
>flat file, to writing an OO application with an ODBMS, then you will
>understand what the concept buys you.
>
>I will repeat the example I gave before. It's not a great example, but
>I've got to get some work done today so I'll keep it simple.
>
>How long would it take you to write a program which looked through
>your mail folder and deleted all the items from "Fred Smith" which had
>"LispOS" in the Subject line, using a conventional byte-stream file
>system?
>
>This is what it would look like in LispOS with OOFS...
>(forgive my use of scheme)
>
>(let ((mf (mail-folders *root*)))
>  (set-my-folder! *root*
>    (filter (lambda (item) (and 
>                                (equal? (from item) "Fred Smith")
>                                (match (subject item) ".*LispOS.*")))
>		(get-my-folder mf))))
>
>That's it. That's the whole thing.
>
>There's no code for parsing the mail folder, for reading the
>folder. 

  Sure there is! It's either mail-folders or get-my-folder. :-)

  Oh and you interface functions aren't symetrical, so you have a bad
design for an ABI. :-)))

>For writing the folder back in the right format. In fact, the
>actual mail messages will never be lifted off the disk. Only their
>summary object which contains the from field and subject field.

  They may or may not depending on how you layout the scheme for the
DB. If we design it so you can do filtering on the headers efficiently,
then you are probably correct.

>>>LispOS is different in that it will make maximum milage out of having
>>>a POS as the way of storing everything on the system. (And believe me
>>>there is incredible milage to be made).
>>
>>I guess I missed the decision that LispOS was by declaration going to do
>>all things the POS way.  There haven't even been a thousand messages yet,
>>how did I miss it :-)
>
>A nice OS needs a standard way to store files. On Unix the standard is
>ascii with new-lines. This is bad. This makes unnecessary work. This
>is why we have perl and awk and sed. (Need I say more?)

  You have a better way of storing unstructured text than as ASCII
characters seperated by newlines? The advantage of flat files is they
are more flexible than sturctured ones. I can always build structure
on top of a flat file but I may not be able to flatten a structured
one. In your example, what if I want to search the entire message? Now
all of a sudden, your example becomes a lot more complicated than sed,
awk, and perl. Or in my case, fgrep.

  Mike McDonald
  mikemac@engr.sgi.com