[squeak-dev] Re: Our process, some loose ideas regarding DS + MC

Igor Stasenko siguctua at gmail.com
Sun Aug 16 15:13:04 UTC 2009


2009/8/16 Göran Krampe <goran at krampe.se>:
> 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.
>

I am well aware about Tirade, other readers may not, of course. :)

>>> 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.
>

I have nothing against one or another data format. If it designed well
to serve its purpose - no-one would put you on fire for that. :)
My concern is different - the ability to 'offload' the bulk data from
image to persistent storage and be able to reload it
back in case of need.
This is what .source & .changes files serving for with more or less success.
So, in this respect, do you see how we could improve the state of
affairs , taking in account my proposal, that
lets call it a 'hibernated' Delta (one which offloaded data from image
to some storage) could carry a pointer to resource which holding all
the information which needed to 'unhibernate' it. URI/URL mechanism..
Same, btw, as Monticello doing with different repositories i.e.
MCHttpRepository
    location: 'http://www.squeaksource.com/DeltaStreams'
    user: ''
    password: ''

> 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. :)
>
its never too late to improve things :) But can you explain what you
have in mind?

>> 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.
>
Perfect.

> regards, Göran
>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list