代码之家  ›  专栏  ›  技术社区  ›  collusionbdbh

android应用程序用户之间共享数据

  •  0
  • collusionbdbh  · 技术社区  · 11 年前

    我有一个理论问题,还没有代码,因为我还处于思考阶段。我想更新一个应用程序,允许用户通过DropBox数据存储或类似的方式与他人共享数据。然而,当用户创建的数据被填充到设备上的多个sqlite表中时,每个表都有一个自动增量整数作为主键,该主键在其他表中用作外键来链接数据。

    如果有多个用户实际创建数据并共享数据,那么主键列显然会成为一个问题。如果我下载数据并将其存储在本地,我显然无法在用户2的数据表中插入用户1的键值,首先是因为自动递增,其次是因为用户2可能已经有未与该键值共享的数据保存。

    我考虑过一些选择,但没有什么特别吸引人或特别有力的。我正在考虑创建一个UUID来标识设备,该值必须存储在每个表中,主键将是该列和当前主键整数的组合,显然必须删除自动增量。因此,要从每个表中获取所有相关数据,必须同时使用id列和UUID列。

    我觉得必须有一种更有力的方法来实现这一点,有人有更好的建议吗?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Jose L Ugia    11 年前

    如果我理解得很好,你需要一些云中的集中式数据库来与你的本地应用程序通信,对吗? 客户端永远不应该为这样的系统创建id。在这些情况下,通常的做法是始终有一个由云中的DB创建的远程id,只要您还没有这个值,就可以有一个回退值(本地创建的本地id,与远程id不同)。

    因此,为了说明我的话,我们可以举下面的例子。您的应用程序将消息存储在数据库中。假设您使用本地id 1,2,3创建消息。这些id在云中的中央数据库中永远不会是唯一的。相反,您只需要将它们用作本地后备方案。一旦你能将这3条消息发送到你的中央数据库,它就会为他们提供3个新的远程id,你将使用它们来实现独特的方式(即:35、46、54)。

    请注意,当您有多个请求者/用户访问同一个数据库时,除非您遵循所解释的方法,或者您提前并按需向云中的数据库查询一定数量的唯一ID,否则无法确保唯一性。 请记住,实际的真相只能通过服务器中的数据库来传递。