gpt4 book ai didi

MongoDB 自定义和唯一 ID

转载 作者:IT老高 更新时间:2023-10-28 13:10:57 24 4
gpt4 key购买 nike

我正在使用 MongoDB,我想为博客文章生成唯一且神秘的 ID(将用于静态 URL),例如 s52ruf6wstxR2ru286zjI .

您认为生成这些 ID 的最佳和更具可扩展性的方式是什么?

我正在考虑以下架构:

  • 定期(每天?)批处理运行以生成大量随机和唯一 ID,并使用 InsertIfNotPresent 将它们插入到专用 MongoDB 集合中
  • 每次我想生成一篇新博文时,我都会从该集合中获取一个 ID,并使用 UpdateIfCurrent 原子操作将其标记为“已获取”

WDYT ?

最佳答案

这正是 MongoDB 的开发人员按照他们的方式构建 ObjectID(_id)的原因……跨节点扩展等等。

A BSON ObjectID is a 12-byte value consisting of a 4-byte timestamp (seconds since epoch), a 3-byte machine id, a 2-byte process id, and a 3-byte counter. Note that the timestamp and counter fields must be stored big endian unlike the rest of BSON. This is because they are compared byte-by-byte and we want to ensure a mostly increasing order. Here's the schema:

0123   456      78    91011
time machine pid inc

Traditional databases often use monotonically increasing sequence numbers for primary keys. In MongoDB, the preferred approach is to use Object IDs instead. Object IDs are more synergistic with sharding and distribution.

http://www.mongodb.org/display/DOCS/Object+IDs

所以我想说只使用 ObjectID 的

当转换为字符串时,它们并没有那么糟糕(它们是一个接一个地插入的)...

例如:

4d128b6ea794fc13a8000001
4d128e88a794fc13a8000002

它们看起来乍一看是“可以猜到的”,但它们真的没那么容易猜到......

4d128 b6e a794fc13a8000001
4d128 e88 a794fc13a8000002

对于博客,我认为这没什么大不了的......我们在整个地方都使用它来生产。

关于MongoDB 自定义和唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com