[ 
https://issues.apache.org/jira/browse/COUCHDB-1495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13669081#comment-13669081
 ] 

Nick North commented on COUCHDB-1495:
-------------------------------------

Agreed - I also have no particular attachment to removing the gen_server. My 
original concern was that there are good reasons for wanting each of the 
algorithms in different cases, and it seems a shame to force the same one on 
all databases in a CouchDb instance. But I take the point that the general 
problem of per-database configuration should be solved first.
                
> Allow the UUID algorithm to vary by database
> --------------------------------------------
>
>                 Key: COUCHDB-1495
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1495
>             Project: CouchDB
>          Issue Type: Improvement
>          Components: Database Core
>    Affects Versions: 1.2
>            Reporter: Nick North
>            Priority: Minor
>              Labels: uuid
>
> The UUID algorithm for generating document ids is currently a global setting, 
> affecting all databases. When returning to 
> https://issues.apache.org/jira/browse/COUCHDB-1373 after a long hiatus, I 
> realised it might be useful to allow a default algorithm, with per-database 
> overrides.
> I propose that the uuids section of the config be of the following form, 
> modelled somewhat on the compactions section:
> algorithm = AlgorithmName
> overrides = [ {DatabaseName, AlgorithmName, [ { ParamName, ParamValue}, 
> {ParamName, ParamValue}, ...]},
>                    {DatabaseName, AlgorithmName, [ { ParamName, ParamValue}, 
> {ParamName, ParamValue}, ...]}, ...]
> The "algorithm" element is exactly as it now is, specifying the default UUID 
> algorithm, to be used when the algorithm is not overridden and for responding 
> to the _uuids HTTP request. It also gives backwards compatibility.
> The optional "overrides" element specifies algorithms for named databases, 
> each with a list of algorithm-specific parameters. The list may be empty (or 
> potentially absent altogether, which would have the same meaning as an empty 
> list).
> The special database name _default is used to specify a default algorithm 
> that needs parameters or instead or the "algorithm" element.
> Implementation would be by giving the couch_uuids gen_server a state 
> consisting of a dictionary mapping database names to an {AlgorithmName, 
> AlgorithmState} pair, where AlgorithmState is an algorithm-dependent value 
> and the default algorithm is associated with database name _default. Requests 
> for a UUID for a specific database would pass in the database name for use in 
> determining the right algorithm. [This gives rise to a potential objection to 
> the proposal, as there is a performance hit: every new document id requires a 
> dictionary lookup of the database name, and possibly a second lookup of the 
> _default entry if the name is not found; there may also be a dictionary 
> insertion of the new AlgorithmState value. However, I suggest that is small 
> compared to everything else that goes on when creating a document.]
> If people like this idea, I am happy to put forward some code, and wrap in 
> the implementation of https://issues.apache.org/jira/browse/COUCHDB-1373, 
> which I have neglected for far too long. The two proposals are not 
> necessarily tied together, but implementing this one changes the 
> implementation of the other so it is more convenient to do both together.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to