在 MongoDB 的 _id 字段中存储用户名的 sha256 哈希是否有效?
Is it efficient to store sha256 hash of username in _id field in MongoDB?
我特别需要对用户名进行哈希处理,而且为了我的目的,我还需要保持用户名的唯一性。所以,我的问题是我可以用用户名的 sha256 哈希覆盖 mongoDB 的默认“_id”字段吗?我读到 _id 需要是唯一的并且已经编入索引,所以为什么我要创建另一个条目而不是存储在 _id 中。
这会导致任何我不知道的技术问题吗?在索引 _id 时搜索它是否有效?
此应用程序是一个使用 Flask-pymongo 作为 mongo 驱动程序和助手的 Flask 应用程序。
默认:
_id : ObjectId(...)
我需要:
_id : sha256(用户名)
如果此方法有任何问题,请解释。
从技术上讲,_id
的值使用 sha256 没有问题。 MongoDB 中的默认 ObjectId
类型便于“当场”创建唯一值,但 不需要 。 _id
中的位模式必须是唯一的,仅此而已。
从数据设计的角度来看,如果您对用户数据(例如 sha256)使用函数来创建链接到物理数据库机制(例如 _id
)的 material,您必须确保用户数据在数据的生命周期内不会改变。在这种情况下,username
可能没问题,但例如电子邮件地址可能很差,因为用户可以更改他们的电子邮件地址。
我特别需要对用户名进行哈希处理,而且为了我的目的,我还需要保持用户名的唯一性。所以,我的问题是我可以用用户名的 sha256 哈希覆盖 mongoDB 的默认“_id”字段吗?我读到 _id 需要是唯一的并且已经编入索引,所以为什么我要创建另一个条目而不是存储在 _id 中。
这会导致任何我不知道的技术问题吗?在索引 _id 时搜索它是否有效?
此应用程序是一个使用 Flask-pymongo 作为 mongo 驱动程序和助手的 Flask 应用程序。
默认:
_id : ObjectId(...)
我需要:
_id : sha256(用户名)
如果此方法有任何问题,请解释。
从技术上讲,_id
的值使用 sha256 没有问题。 MongoDB 中的默认 ObjectId
类型便于“当场”创建唯一值,但 不需要 。 _id
中的位模式必须是唯一的,仅此而已。
从数据设计的角度来看,如果您对用户数据(例如 sha256)使用函数来创建链接到物理数据库机制(例如 _id
)的 material,您必须确保用户数据在数据的生命周期内不会改变。在这种情况下,username
可能没问题,但例如电子邮件地址可能很差,因为用户可以更改他们的电子邮件地址。