用于存储Android注册ID的数据库模式?
对于与用户ID链接的字符串GCM注册ID,有效的数据库模式应该是什么?我读过。它建议:用于存储Android注册ID的数据库模式?,android,database,schema,google-cloud-messaging,Android,Database,Schema,Google Cloud Messaging,对于与用户ID链接的字符串GCM注册ID,有效的数据库模式应该是什么?我读过。它建议: 为了存储注册ID本身,最好使用 VARBINARY(4096)列。如果你编码,它比文本更有效 具有有效字符集(如UTF-8)的注册ID 为了高效搜索,您还应该有一个附加的索引 哈希列(二进制(32))-我们使用SHA-256摘要算法来获取 来自注册ID的32字节哈希。哈希列不 必须是独一无二的。碰撞应该非常罕见,即使它们 如果发生这种情况,您的查询将为您提供少量注册ID 它们共享相同的哈希,因此在 您的Ja
- 为了存储注册ID本身,最好使用 VARBINARY(4096)列。如果你编码,它比文本更有效 具有有效字符集(如UTF-8)的注册ID
- 为了高效搜索,您还应该有一个附加的索引
哈希列(二进制(32))-我们使用SHA-256摘要算法来获取 来自注册ID的32字节哈希。哈希列不
必须是独一无二的。碰撞应该非常罕见,即使它们
如果发生这种情况,您的查询将为您提供少量注册ID
它们共享相同的哈希,因此在
您的Java代码中哪一个(如果有的话)与 您正在寻找的注册ID - 如果您选择存储唯一的设备ID并基于它进行搜索,则I
建议您为每个设备分配自己的标识符。那
标识符可以是(例如)BIGINT(java中的long)。你可以
要求应用程序调用服务器以获取唯一的
首次启动时的标识符。您可以将其存储在外部
存储设备,以便卸载应用程序的设备 然后重新安装的将仍然具有相同的标识符
但是如果我遵循这种设计,如果用户从设备注销并使用该帐户登录,我可能不会使用更新的用户id更新行,因为哈希中可能存在冲突。但是如果我不使用散列,我不知道如何在上面创建索引。我应该如何设计这样一个数据库?谢谢 实际上,您可以安全地忽略4096字节数据的SHA256哈希上发生冲突的风险 有关碰撞风险的完整讨论,请参阅