On Tue, Oct 16, 2012 at 5:54 AM, Peter Eisentraut <peter_e@gmx.net> wrote:
> On 10/15/12 5:33 PM, Simon Riggs wrote:
>> There are a few options
>> 1) Manual separation of the value space, so that N1 has 50% of
>> possible values and N2 has 50%. That has problems when we reconfigure
>> the cluster, and requires complex manual reallocation of values. So it
>> starts good but ends badly.
>> 2) Automatic separation of the value space. This could mimic the
>> manual operation, so it does everything for you - but thats just
>> making a bad idea automatic
>> 3) Lazy allocation from the value space. When a node is close to
>> running out of values, it requests a new allocation and coordinates
>> with all nodes to confirm the new allocation is good.
>
> What would the allocation service look like? Is it another PostgreSQL
> server? What's the communication protocol? How would backups work?
> Crash recovery?
As a reasonable proxy to look at the first question, one may look at
how twitter uses their home-grown software snowflake.
https://github.com/twitter/snowflake
A colleague, Blake Mizerany, wrote a smaller version called "noeqd",
based on the same ideas, but he wanted something with fewer
dependencies. Unless you are very Java-library-and-toolchain adept
you might find this more fun to play with.
https://github.com/bmizerany/noeqd
--
fdr