反向映射

时间:2021-03-20 02:01:43

标签: dictionary hashmap couchdb bidirectional

我需要你对一个问题的意见。

在我的服务器中,我将电子邮件 ID 映射到唯一 ID。这个唯一 ID 是为设备生成的,每当用户登录时,它都会发送一个带有电子邮件 ID 和这个唯一 ID 的请求,我在内部存储如下:

Map<Email id, Set<unique ID>>

一个电子邮件 ID 可以从多个设备登录,因此我们需要为每个电子邮件 ID 存储一组 ID。

不过,我还需要维护一个反向映射。我想确保每个唯一 ID 只有一个电子邮件 ID。这是因为每个设备都会生成唯一 ID,并且在给定时间,只能在一个设备上登录一个电子邮件 ID。 基本上,我正在考虑维护这样的地图:

Map<unique ID, email ID>

还有比这更好的方法吗?我在后端使用 CouchDB,主要是想看看是否可以避免再添加一张表。

我想出了以下可能的选项:

  1. 双向映射:(我认为这是一个谷歌库)...但是我认为当键和值之间存在唯一的反向映射时,这会起作用。例如:对于类似的东西 (email id, unique id) 映射和 (unique id, email id) 映射,这会很好用。但就我而言,对于电子邮件 ID,可以有多个唯一 ID,但对于每个唯一 ID,只能有一个电子邮件 ID。

  2. 按照上面的建议维护多个地图:不错的选择和万无一失。但我们能做得更好吗?

  3. 当用户注销时,我们已经发送了一个请求,从地图中删除电子邮件 ID 的唯一 ID。但这不会考虑到用户只是关闭应用程序并且没有彻底退出前一个用户,而是以新用户身份登录的情况。

请建议是否可以以更好的方式解决此问题。从我上面看到的第 2 点(维护 2 张地图)似乎是最好的解决方案。

0 个答案:

没有答案
相关问题