2015-04-07 60 views
0

什么应该是一个有效的数据库模式的字符串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更新行的可能性,因为可能在散列中有碰撞。但如果我不使用散列,我不知道如何创建索引。我应该如何设计这样一个数据库?谢谢!

回答