Mongodb 我应该使用ObjectID还是uid(由我自己实现)来标识用户?

Mongodb 我应该使用ObjectID还是uid(由我自己实现)来标识用户?,mongodb,user-identification,database,Mongodb,User Identification,Database,我不熟悉mongodb和数据库。 实现一个函数以生成uid并使用本地ObjectId。 哪个更好?您应该让客户机/驱动程序生成ObjectID。这确保生成的ID在许多事情中是唯一的,比如时间、服务器和进程。使用标准ObjectID还意味着由驱动程序实现的方法(如getTimestamp())可以工作 但是,如果您正在考虑为_ID字段使用自己的ID类型(即,不是标准的ObjectID类型),那么这是一个可行的选择。例如,如果您想存储关于twitter用户的信息,那么使用用户的twitter ID作

我不熟悉
mongodb
和数据库。 实现一个函数以生成
uid
并使用本地
ObjectId

哪个更好?

您应该让客户机/驱动程序生成ObjectID。这确保生成的ID在许多事情中是唯一的,比如时间、服务器和进程。使用标准ObjectID还意味着由驱动程序实现的方法(如getTimestamp())可以工作


但是,如果您正在考虑为_ID字段使用自己的ID类型(即,不是标准的ObjectID类型),那么这是一个可行的选择。例如,如果您想存储关于twitter用户的信息,那么使用用户的twitter ID作为_ID值是非常有意义的。就我个人而言,我尽可能少地依赖ObjectID类型,因为集合通常在每个文档中都有一个字段,唯一地标识每个文档。

您应该让客户机/驱动程序生成ObjectID。这确保生成的ID在许多事情中是唯一的,比如时间、服务器和进程。使用标准ObjectID还意味着由驱动程序实现的方法(如getTimestamp())可以工作


但是,如果您正在考虑为_ID字段使用自己的ID类型(即,不是标准的ObjectID类型),那么这是一个可行的选择。例如,如果您想存储关于twitter用户的信息,那么使用用户的twitter ID作为_ID值是非常有意义的。就我个人而言,我尽可能少地依赖ObjectID类型,因为集合通常在每个文档中都有一个字段,唯一地标识每个文档。

这取决于三个方面:

  • 其来源
  • 您在何处以及如何使用用户ID
  • 个人意见
我个人的观点是,对象ID足够好,但是,回到第一点和第二点

如果此ID出现或将在另一个数据库(如SQL数据库)中使用,您可能会发现使用递增ID是个好主意,但SQL和其他技术完全支持十六进制形式的对象ID

如果这个ID可以像账号一样使用(打电话给你的汽车保险账号),你可能会发现你的用户很难记住/重新输入一个对象ID,因为这样一个更人性化的ID在这里可能更适用


因此,这实际上取决于该ID的使用方式。

这取决于三件事:

  • 其来源
  • 您在何处以及如何使用用户ID
  • 个人意见
我个人的观点是,对象ID足够好,但是,回到第一点和第二点

如果此ID出现或将在另一个数据库(如SQL数据库)中使用,您可能会发现使用递增ID是个好主意,但SQL和其他技术完全支持十六进制形式的对象ID

如果这个ID可以像账号一样使用(打电话给你的汽车保险账号),你可能会发现你的用户很难记住/重新输入一个对象ID,因为这样一个更人性化的ID在这里可能更适用


因此,这实际上取决于该ID的使用方式。

假设我使用_ID(我自己的类型)并将其用作用户标识。哪一个更好,使用自动递增的
编号
或用户的日志id(唯一,字符串)。不要在客户端使用自动递增编号,因为如果同时有多个线程而没有昂贵的锁定,这将不起作用。假设我使用_id(我自己的类型)并将其用作用户标识符。哪一个更好,使用自动递增的
编号
或用户的日志id(唯一,字符串)。不要在客户端使用自动递增编号,因为如果同时有多个线程而没有昂贵的锁定,这将不起作用。假设我使用_id(我自己的类型)并将其用作用户标识符。哪个更好,使用一个自动递增的
数字
或用户的日志id(唯一的,字符串)。@uoryon正如我所说,这一切都取决于场景,但如果我上面说的东西不重要,那么对象id很容易提供,我使用_id(我自己的类型),我使用它作为用户标识符。哪一个更好,使用自动递增的
数字
或用户的日志id(唯一,字符串)。@uoryon正如我所说,这一切都取决于场景,但如果我上面所说的内容不重要,那么对象id很容易