Generation of unique IDs

Daniel Salama dsalama at user.net
Fri Aug 26 16:44:08 UTC 2005


That would be a great thing to have. That way I could potentially  
manage multiple MagmaCounters per application to handle multiple  
counter needs.

Thanks,
Daniel

On Aug 25, 2005, at 2:35 PM, Chris Muller wrote:

> It don't think it would be hard to add a MagmaCounter that would do  
> what you
> want.  You could initialize it with a value and then say, #next.   
> It would be a
> server request so it would be sychronized, guaranteeing a unique #  
> with no
> commit-conflict..  Interesting.
>
> If this would help you out a lot Daniel, I will try putting it  
> together for
> future version..
>
>  - Chris
>
> --- Daniel Salama <dsalama at user.net> wrote:
>
>
>> I have a general question on the generation of unique IDs for things
>> like customer number or invoice number, etc.
>>
>> I'm using Seaside with Magma. I guess that I could design the app in
>> Seaside so that there is a single user (e.g. seaside) logging into
>> Magma for a particular application. I also assume that regardless of
>> the number of users hitting the Seaside app, there is a single
>> instance of the app managing multiple sessions. Is it safe to assume
>> the following:
>>
>> 1) Communication between Seaside app and Magma is serialized in such
>> a way that at any given moment, no two sessions will be performing
>> the exact same operation? For example, if two users trying to delete
>> the same object, will seaside serialize each request to Magma so that
>> the second user will get a transaction commit error because the
>> object is no longer there?
>> 2) I maintain a dictionary of IDs in Magma so that when a new
>> customer is created, the app looks up the next customer ID in the
>> dictionary, and increments the count. I would assume that if I put
>> this code along with the code to create the customer object in the
>> same transaction, it should all happen atomically. My question is
>> (and somehow related to the above question) if two users are creating
>> different customers, what inherent fail safe mechanism exist so that
>> the second transaction will get the updated next customer ID from the
>> dictionary during its transaction process?
>> 3) I believe the way squeak works with Dictionaries is that it tries
>> to load it all in memory. Will it do the same with a Magma loaded
>> Dictionary? The question is more geared to answer the following
>> question: if I am in a transaction creating a new customer and I have
>> the Dictionary element of customer IDs "locked", will the entire
>> Dictionary be "locked"? If another transaction is occurring at the
>> same moment where another user is creating a sales order and the app
>> tries to get the next sales order number from the same dictionary,
>> will it find a conflict?
>>
>> Thanks for your input.
>>
>> - Daniel
>>
>>
>>
>
>




More information about the Magma mailing list