Lars Hofhansl created PHOENIX-1954:
--------------------------------------

             Summary: Reserve chunks of numbers for a sequence
                 Key: PHOENIX-1954
                 URL: https://issues.apache.org/jira/browse/PHOENIX-1954
             Project: Phoenix
          Issue Type: Bug
            Reporter: Lars Hofhansl


In order to be able to generate many ids in bulk (for example in map reduce 
jobs) we need a way to generate or reserve large sets of ids. We also need to 
mix ids reserved with incrementally generated ids from other clients. 

For this we need to atomically increment the sequence and return the value it 
had when the increment happened.

If we're OK to throw the current cached set of values away we can do
{{NEXT VALUE FOR <seq>(,<N>)}}, that needs to increment value and return the 
value it incremented from (i.e. it has to throw the current cache away, and 
return the next value it found at the server).

Or we can invent a new syntax {{RESERVE VALUES FOR <seq>, <N>}} that does the 
same, but does not invalidate the cache.

Note that in either case we won't retrieve the reserved set of values via 
{{NEXT VALUE FOR}} because we'd need to be idempotent in our case, all we need 
to guarantee is that after a call to {{RESERVE VALUES FOR <seq>, <N>}}, which 
returns a value <M> is that the range [M, M+N) won't be used by any other user 
of the sequence. My might need reserve 1bn ids this way ahead of a map reduce 
run.

Any better ideas?




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to