[squeak-dev] Re: Our process, some loose ideas regarding DS + MC
Göran Krampe
goran at krampe.se
Sun Aug 16 14:25:09 UTC 2009
Hi!
Igor Stasenko wrote:
> 2009/8/16 Göran Krampe <goran at krampe.se>:
>> Hi!
>>
>> Igor Stasenko wrote:
>>> 2009/8/16 Andreas Raab <andreas.raab at gmx.de>:
>>>> Which reminds me: Where are the deltas stored and how big is the space
>>>> overhead for keeping them?
>>> i think most common overhead is 2x more space comparing to analoguous
>>> changeset record, since you have to keep 'before' version in addition
>>> to 'after' version. And most common change is changing the method(s)
>>> source a little bit.
>> Well, in fact it is more - a Changeset does in fact not hold a copy of the
>> new method source - just a pointer to the method modified (IIRC).
>
> oh, i meant not in-image space, but storage space required for
> interchange format.
The domain model in DS is more or less done. Matthew implemented a file
format but I am not pursuing that format for various reasons - I instead
am working on hooking Tirade into DS to use Tirade as fileformat.
For info about Tirade, see my blog articles:
http://goran.krampe.se/blog/Squeak/Tirade.rdoc
http://goran.krampe.se/blog/Squeak/Tirade2.rdoc
http://goran.krampe.se/blog/Squeak/Tirade3.rdoc
Basically Tirade looks like Smalltalk message sends so it will be in
"low level syntax" similar to the chunk format used for Changesets but
it does not use Compiler to load.
>> Thus Changesets are sneaky beasts, most people get the wrong impression.
>>
> yes, and we could do same with deltas - use external storage for
> keeping them in file(s), while in-image
> they hold only a pointers.
Outside of the image I would primarily use the Tirade format. In image a
Delta does NOT use pointers to live code, and that is by design. A Delta
is a "fully self contained" object graph with no outgoing references. It
is totally independent of current image state.
This is highly different from a Changeset. A Changeset is typically
"filed in" and that means you change the image.
A Delta is handled in two steps: First you load it. This just means
deserializing it from Tirade into an object. Then you apply it. This is
the step that affects the image, atomically, using SystemEditor.
> But i think its too early to think about it.
> Or.. why too early?
Not too early at all, in fact almost too late. :)
> You already mentioned different ways to persist the deltas.. so
> a delta 'pointer' could be represented by a tuple: (adaptor , id)
>
> where adaptor could be: file, couch DB, url or anything else,
> and id is an additional info , identifying given delta.
>
> Or, just use a common denominator of all of this stuff - URI.
> I don't think that its hard to introduce a new URI, which identifies a
> Couch DB storage :)
The CouchDB API is purely HTTP restful. Each document in CouchDB is
accessed simply by a URL. Fits nicely in this area.
regards, Göran
More information about the Squeak-dev
mailing list
|