I'm building an app that I hope will scale to need multiple servers.
For certain objects, I'd like to provide users with an "External ID". This would be either a user entered or randomly generated string, like "Fred's Data" or "q1g52xTK". This external ID would be associated with a GUID, and would allow the user to get at the object without having to know the GUID (such as at log-in). (They will also be able to select via more complete names, titles and descriptions.)
For each new external ID, I'll have to do a lookup against all existing external ID's for that object type, to make sure it's not been used.
I'm looking for design patterns for how to accomplish this.
I'm assuming one such pattern would be to put an "ExternalID_Master" table in one DB on one server, and to accesss and maintain this table through a webservice that could be called from different instances of the app on different servers. Also, I'm assuming that I could build the methods for the ExternalID_Master table access and maintenance into the "core app", and migrate them to the webservice when needed, as part of the first "multi-server" release. (And maybe add some redundancy via multiple copies of the ExternalID_Master on different servers...)
It may be as I explore this I'll find myself learning about how ASP.NET apps and their SQL companions are scaled and distributed to multiple servers...for now I'm wanting to find a path that will work at all for the "ExternalID" issue, so I can make sure to incorporate it into the design, development and deployment plans.
Any guidance on these matters would be appreciated.