-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Review API-Guidelines: UUID as identifier #45
Comments
Actionable, long-term stable and semantic web compatible identifiers for access to biological collection objects: |
The suggestion from the "Actionable, long-term stable and semantic web compatible identifiers for access to biological collection objects" paper to use HTTP URIs looks effective and quite simply to explain and implement.
Anton Güntsch, Roger Hyam, Gregor Hagedorn, Simon Chagnoux, Dominik Röpert, Ana Casino, Gabi Droege, Falko Glöckler, Karsten Gödderz, Quentin Groom, Jana Hoffmann, Ayco Holleman, Matúš Kempa, Hanna Koivula, Karol Marhold, Nicky Nicolson, Vincent S. Smith, Dagmar Triebel, Actionable, long-term stable and semantic web compatible identifiers for access to biological collection objects, Database, Volume 2017, 2017, bax003, https://doi.org/10.1093/database/bax003 |
Suggestion for the API guidelines:
|
Just for clarification, when using UUIDs then we should use variant 1 (date-time and MAC address). See also: https://en.wikipedia.org/wiki/Universally_unique_identifier |
Yes, that should be clarified. Actually the current suggestion was Variant 5. |
Some background on decision to use UUIDv5 from @dimus http://globalnames.org/news/2015/05/31/gn-uuid-0-5-0/. Agree with decision to use v5 because they are independently repeatable so long as all parties agree on namespace. Suggest |
I see the advantages of v5 when assigning uuid for scientific names but it`s unclear to me the advantage of using v5 vs v4 for assigning uuid when a local identifier is used. Maybe I missed something but it could be wrong if 2 implementations would decide to use a primary key as local identifier. Since we would share the same namespace we would end up with the same identifier for 2 completely different entries. Unless the idea would be to use different namespace per institution? |
@cgendreau Agree. Will have to put some thought into the reasons why you want to assign a UUID to something. If the primary reasons are to uniquely identify a predominantly string-based entity AND to resolve that identity among and between organizations then a publicly-exposed UUID v5 makes some sense. If these are not the goals, then we'd have to question why we'd want to bother with the overhead when a local, incrementing primary key is far better. |
All database identifiers should be numerical based since it's efficient and easier to manage at the database level. Even if there is no issue about leaking business information we will still expose UUID instead of the database key in the API. This will give us more flexibility at the database level while reducing potential issues with API users iterating over ids or using a wrong set of ids. Based on the “Inter-module foreign key” module, UUID’s will help detect wrong linkages by making it almost impossible to reuse a key of the wrong resource. Numerical id’s can be reused in different resources (even if this can be solved by using a global sequence) while UUID are more likely to be unique across the system.
This will/should not prevent resources to get a DOI assigned.
The text was updated successfully, but these errors were encountered: