[
https://issues.apache.org/jira/browse/COUCHDB-1495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13667116#comment-13667116
]
Robert Newson commented on COUCHDB-1495:
----------------------------------------
(browsing old tickets) The sequential algorithm does require state but the
benefit of sequential over random for b+trees is so significant that the
"imposition" is easily excused.
> 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