Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为唯一性和URL引用创建ID_Url_Uuid - Fatal编程技术网

为唯一性和URL引用创建ID

为唯一性和URL引用创建ID,url,uuid,Url,Uuid,我需要创建对象并使它们在web上可用。与stackoverflow类似,我有类似的东西 http://stackoverflow.com/users/78374 但是,在我的例子中,我创建的对象的ID必须是唯一的,因此我考虑使用UUID,从而生成类似URL的URL http://example.com/users/{8e931066-7d87-4f2b-a3b5-608c4c9a9083} 因为稍后我将不得不将不同的数据库合并在一起,我不希望出现合并问题 这是公认的做法吗?有哪些替代方案?这

我需要创建对象并使它们在web上可用。与stackoverflow类似,我有类似的东西

http://stackoverflow.com/users/78374
但是,在我的例子中,我创建的对象的ID必须是唯一的,因此我考虑使用UUID,从而生成类似URL的URL

http://example.com/users/{8e931066-7d87-4f2b-a3b5-608c4c9a9083}
因为稍后我将不得不将不同的数据库合并在一起,我不希望出现合并问题


这是公认的做法吗?有哪些替代方案?

这没有问题。Hotmail就是这样做的。

如果这只是一个合并数据库的问题,那么给每个数据库一个唯一的标识符,然后将其与自动增量PK相结合,将为您可以使用的每个对象提供唯一的ID,而不必担心合并问题。

如果合并必须是100%无缝的,那么UUID可能是您最好的选择。如果你想生成更多人性化的URL,你可以考虑使用用户可以定义的唯一的“帐户名”。如果合并数据库,这可能会产生冲突,但这些冲突是可以克服的。

我同意这是一种可接受的做法,因为在多个数据库和应用程序上使用时,它会保持用户ID的唯一性


我在缓存应用程序块中使用相同的做法。缓存应用程序块在缓存项时生成GUID,应用程序使用该GUID从缓存中检索项。

我猜用户ID的自动增量会在您提到的稍后日期导致合并问题?是,自动增量将是一个问题,因为合并意味着用户234241在合并时将变成,比如说452467。使用uuid,该用户在任何情况下都是8e931066-7d87-4f2b-a3b5-608c4c9a9083。我猜其他人使用的是第一种技术,但我的情况比这要复杂一些(我不是在和用户打交道,我还修改了维基百科),我认为这是正确的方法。使用UUID是过分的。URL是用户看到的东西;如果可能的话,它们需要简短。但这意味着ID将在合并时发生变化。我已经合并了一些,只需在第二个数据库的ID中添加10000个,然后调整我的序列。在一种情况下,我将一种物化视图放入两个仍在增长的数据库中,其中一个在合并之前乘以
-1
。但在这种情况下,合并表中只有两列,命名机构和分配的编号是主键。@StefanoBorini:如果合并两个单独的数据库,很可能是两个单独的系统被两个单独的URL引用。在这种情况下,某些对象的URL无论如何都会更改。