如:
百度贴吧:
http://tieba.baidu.com/p/4855169060/
什么值得买:
http://www.smzdm.com/p/6664641/
v2ex:
https://www.v2ex.com/t/322033
这个后面的数字是通过什么规则生成的,还是直接用数据库的自增 id
1
goofansu 2016-11-21 19:19:15 +08:00
v2 肯定是自增 id
|
2
sys64 OP |
3
kslr 2016-11-21 20:30:52 +08:00 via Android
自增是个非常简单实用的解决方案。当然考虑到隐私保护或者大规模部署也有其解决方案,你可以搜搜 ID 策略。
|
4
lissome 2016-11-21 20:54:57 +08:00
自增序列挺好的
|
5
lhbc 2016-11-21 21:11:37 +08:00 via iPhone
short uuid
|
6
sys64 OP |
7
phithon 2016-11-21 22:20:27 +08:00
http://wiki.ioin.in/ 用的 hashids
|
8
zhanglintc 2016-11-21 22:35:29 +08:00
|
9
zhanglintc 2016-11-21 22:36:01 +08:00
|
10
rogwan 2016-11-21 22:48:40 +08:00 via Android
稍微大一些的数据量,一般不建议用自增吧。不过一般的应用根本到不了自增 ID 是瓶颈的状态 LOL
据说有理想的是 随机数+uuid+时间戳 组合生成 ID ,看着有点长,其它没什么问题 |
11
windowsma 2016-11-21 23:25:10 +08:00
@sys64 您这个思维还是很独特的。。。只能说思维比较奇葩。
不过可以自己写个发号器,根据时间、密钥等,生成唯一 uuid 。微博就是这么做的 |
12
sys64 OP @windowsma 哦,请看我贴出的网址的 url ,如 http://tieba.baidu.com/p/4855169060/ 希望是短数字的不重复的。
|
14
sys64 OP @lhbc 谢谢的回复,不过这么说,那其实 unix timestamp 就是唯一的了,加不加自增 id 就无所谓了。自增 id 如果是数据库提供的话,那必须先查数据库(或由保存到数据库的时候返回的)才能得到。
|
15
nfroot 2016-11-22 01:16:35 +08:00
@sys64 unix timestamp 还不至于唯一。精确到毫秒也不至于唯一,但是可以 time()+rnd(time())
|
16
misaka19000 2016-11-22 01:54:18 +08:00 via Android
如果用的是 MySQL ,那么自增是个非常好的解决方案,如果因为某些原因用不了自增,那用 UUID 也可以
|
17
onlyhot 2016-11-22 04:11:47 +08:00 via iPhone
id uid time
|
18
Vicer 2016-11-22 08:30:21 +08:00 via Android
UUID+unix timestamp
|
19
wwek 2016-11-22 08:50:55 +08:00
规则上没有什么标准范式
我觉得豆瓣的设计的就不错 给你一个思路,把 URL 结构看成倒置树状结构 什么地方用文件夹,什么地方用文件你就非常清楚了 另外如果现在还考虑传统 SEO 的话,这个树应该是低而广阔的树,顾名思义就是目录不要深,摊开 |
20
wwek 2016-11-22 08:51:50 +08:00
ID
1. 自增 2. 放号器 |
21
Tink 2016-11-22 08:54:59 +08:00
时间戳并不唯一
|
22
qiayue 2016-11-22 09:31:53 +08:00
@sys64
你只看到了 http://tieba.baidu.com/p/4855169060/ ,你觉得 4855169060 这么大的数不可能是自增 ID ,但是你没有考虑到贴吧的流量有多大,发帖量有多大。 最简单的, http://tieba.baidu.com/p/2 可以打开,而 http://tieba.baidu.com/p/1 提示“很抱歉,该贴已被删除。”,所以是帖子被删除了,而不是不曾存在过。 |
23
windowsma 2016-11-22 10:42:05 +08:00
@sys64 贴吧其实也是自增的,自增键确实是最简单、靠谱的方案。不过题主的要求也是可以实现的,不外乎就是时间戳、内部计数器组合成的,如果有多个业务或服务器,也可以把业务、服务器编号揉进来。内部计数器是不可少的,可以用 memecache 或 redis 实现,毕竟时间戳+随机数的形式也不能保证唯一。
如果嫌长度太长,可以转为 16 进制或自定义进制。 |
24
anyforever 2016-11-22 13:48:11 +08:00
自增就很好理解了, UUID ,放号器上面也有朋友提到,以下供参考
https://github.com/zheng-ji/goSnowFlake https://github.com/osgochina/donkeyid |
25
anyforever 2016-12-01 09:37:38 +08:00
恰巧又碰到一篇关于这个的 http://calvin1978.blogcn.com/articles/uuid.html
帖上来 |