什么应该是一个有效的数据库模式的字符串GCM注册ID与用户ID的链接?我已阅读this question。这表明:用于存储Android注册ID的数据库模式?
为了存储的注册ID本身,最好使用 VARBINARY(4096)柱。如果您使用有效的字符集(如UTF-8)编码 注册ID,它比TEXT更有效。
对于高效的搜索,你还是应该有一个额外的索引
哈希列(BINARY(32)) - 我们使用SHA-256散列算法从注册ID获得 32字节的哈希值。哈希列不必
必须是唯一的。冲突应该是非常罕见的,并且即使它们发生,您的查询也会给您提供少量注册ID
,它们共享相同的散列,因此它不会损害您的Java代码中的测试代码
哪一个(如果有的话)实际上与您正在查找的
注册ID匹配。如果您选择存储唯一的设备ID并根据它进行搜索,我建议您为每个设备分配您自己的标识符。那
标识符可以是(例如)BIGINT(long in java)。您可以
要求应用程序在第一次启动时调用您的服务器以获取唯一的
标识符。您可以将其存储在设备的外部存储设备
中,以便卸载应用程序的设备 然后重新安装仍将具有相同的标识符。
但是,如果我按照这样的设计,如果用户从设备注销,并与那里的帐户登录,有我可以不与更新USER_ID更新行的可能性,因为可能在散列中有碰撞。但如果我不使用散列,我不知道如何创建索引。我应该如何设计这样一个数据库?谢谢!