我建立了一个网站,其中包含产品的推荐链接以及与mongodb合作。 我们都知道,长的_id字段在Urls中看起来很难看,例如http://website.com/p/532600d9a715ea980a00002b/u/532af835a715eae43f00002c
我在这里阅读了一些帖子,并用谷歌搜索了一段时间,并想知道为什么人们不能生成这个简单的唯一ID:
所以每个文档都有一个以1开头的唯一编号,网址看起来像http://website.com/p/1/u/2。
我不会删除任何文件。
此解决方案的问题在哪里?
答案 0 :(得分:1)
这种方法的合理变体,即增加计数器并指定该数字,为part of the official documentation。
您的方法存在的问题是计数是一项相对昂贵的操作。此外,它的甚至没有碰撞安全,因为两个线程可以同时计数并获得相同的数字,因此第二个插入将失败。
一般来说,序列会产生瓶颈,因为您需要单点协调。对于写入较多的系统,操作数量为加倍(每次插入时额外$inc
)。更糟糕的是,序列会向外部泄漏大量信息(即数据库中的条目数)。
如果你正在经营网上商店,博客等,你可能希望你的网址更加漂亮,描述性和SEO友好,如/products/displays/27-inch/iiyama-2734FW
。
如果您构建的网络应用程序无论如何都不会向搜索引擎显示网址,我相信/users/433
和/users/532af835a715eae43f00002c
都不是您客户的理由选择或不选择您的申请。也许一个明智的顾客会,但他们拒绝前一个选择......