相关疑难解决方法(0)

.NET短唯一标识符

我需要.NET中的唯一标识符(不能使用GUID,因为它对于这种情况来说太长了).

人们认为这里使用的算法是一个很好的候选人还是你有其他建议吗?

.net c# uniqueidentifier

75
推荐指数
10
解决办法
8万
查看次数

替代GUID并考虑Scalablity和友好URL

我决定使用GUID作为我的许多项目数据库表的主键.我认为这是一个很好的做法,特别是考虑到可扩展性,备份和恢复.问题是我不想使用常规GUID并搜索替代方法.我真的很想知道Pinterest我用什么作为主键.当您查看URL时,您会看到如下内容:

http://pinterest.com/pin/275001120966638272/
Run Code Online (Sandbox Code Playgroud)

我更喜欢数字表示,即使是存储为字符串.有没有办法实现这个目标?

此外,youtube还使用了一种不同的散列技术,我无法弄清楚:

http://www.youtube.com/watch?v=kOXFLI6fd5A
Run Code Online (Sandbox Code Playgroud)

这让我想起了缩短网址的方案.

我更喜欢最短的一个,但我知道它不能保证是唯一的.我首先考虑做这样的事情:

 DateTime dt1970 = new DateTime(1970, 1, 1);
 DateTime current = DateTime.Now;
 TimeSpan span = current - dt1970;
Run Code Online (Sandbox Code Playgroud)

结果示例:

1350433430523.66
Run Code Online (Sandbox Code Playgroud)

打印自1970年以来的总毫秒数,但如果我每秒有数十万次写入会发生什么.

我主要更喜欢非BIGINT自动增量解决方案,因为使用第三方工具扩展数据库以及不太有问题的备份/恢复功能会减少很少的麻烦,因为我可以在服务器之间传输数据,如果我想要的话.

另一种复杂的方法是根据我的应用定制解决方案.在数据库中,主键还将包含用户名(唯一且用户无法更改),因此我可以将名称的数值与毫秒数组合,这将为我提供唯一的数字字符串.由于用户不以如此高的速率插入数据,因此数字ID保证是唯一的.我也可以删除最后5个数字并仍然获得一个唯一的ID,因为我假设用户不会以每秒超过1的速度插入数据,但我可能不会这样做(你怎么看?这个想法?)

所以我请求你的帮助.我的数据假设增长非常大,每年2TB,每秒有10万个新行.我希望URL看起来尽可能"友好",并且不想使用"常规"GUID.

我正在使用ASP.NET 4.5和MySQL开发我的应用程序

谢谢.

asp.net friendly-url guid

7
推荐指数
2
解决办法
712
查看次数

标签 统计

.net ×1

asp.net ×1

c# ×1

friendly-url ×1

guid ×1

uniqueidentifier ×1