Ok.

I've committed some initial code to svn. Next step will be to actually
replace auto_increment columns with the new bigint kind and fix all the
places where "INSERT INTO" is used.


Paul J Stevens wrote:
> I've been reading back some of the mail related to this issue.
> 
> I think I'll use the following to generate guids.
> 
> gettimeofday (2) will yield the unixtime, plus microsecs. Combined with
> a server id we get:
> 
> u64_t get_guid(int serverid)
> {
>         char guidstr[30];
>         struct timeval tv;
> 
>         if (gettimeofday(&tv,NULL))
>                 return 0;
> 
>         snprintf(guidstr,30,"%ld%06ld%02d",
>               tv.tv_sec, tv.tv_usec,serverid);
> 
>         return (u64_t)strtoll(guidstr,NULL,10);
> }
> 
> if we then store the server-id in the dbmail.conf (like mysql does), we
> get (using serverid=1) something like:
> 
> #> while [ 1 ]; do ./testguid; sleep 1; done
> 111702774760755001
> 111702774861137101
> 111702774961515701
> 111702775062210101
> 
> would that be fine-grained enough? I should think so myself.
> 
> Also, all current auto_increment fields will have to be updated. Now
> that is no big deal for mysql using alter table statements. Even for
> postgres that shouldn't be too painful since pgsql already uses bigint
> and we only have to remove the nextval() from all relevant columns.
> 
> 
> 
> 
> Kevin Baker wrote:
> 
>>Very True...
>>
>>We discussed the GUID's being generated based on sync'ed
>>datetime stamp with a unique ID per server. (NTP required)
>>
>>My primary interest now is to create simple 2 machine
>>clusters for each user segment. Each of the machines in
>>the cluster would use guid's for unique_id values.
>>
>>Each cluster synced through master-master. DNS Round Robin
>>for load "balance". Heartbeat for failover.
>>
>>This would give loadbalance and failover on commodity
>>hardware. With guid unique_id's there would be no id
>>collision so it should failover and sync well.
>>
>>
>>
>>Kevin
>>
>>
>>
>>
>>
>>
>>
>>>Kevin Baker wrote:
>>>
>>>
>>>
>>>>I was hoping to peak some new interest in using GUID's
>>>>in
>>>>place of the incrementing unique_id's in the current
>>>>code
>>>>base.
>>>>
>>>>This would be the key to non-colliding id's for a
>>>>loadbalanced/failover system on a master-master mysql.
>>>
>>>Since GUIDs can be generated by the application before
>>>inserting new records to the database (as opposed to
>>>reading back an autogenerated nmber after insert), more
>>>than one DBMail servers could use a single RDBMS backend.
>>>
>>>This, when viewed in the light of RDBMS clusters would
>>>make
>>>a formidable (/w loadbalance + failover) system.
>>>
>>>_______________________________________________
>>>Dbmail-dev mailing list
>>>Dbmail-dev@dbmail.org
>>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>>
>>
>>
>>_______________________________________________
>>Dbmail-dev mailing list
>>Dbmail-dev@dbmail.org
>>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>>
> 
> 

-- 
  ________________________________________________________________
  Paul Stevens                                      paul at nfg.nl
  NET FACILITIES GROUP                     GPG/PGP: 1024D/11F8CD31
  The Netherlands________________________________http://www.nfg.nl

Reply via email to