Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我应该保留远程数据库的本地副本吗?_Android_Mysql_Database_Sqlite_Mobile - Fatal编程技术网

Android 我应该保留远程数据库的本地副本吗?

Android 我应该保留远程数据库的本地副本吗?,android,mysql,database,sqlite,mobile,Android,Mysql,Database,Sqlite,Mobile,我正在开发一个应用程序,它基本上允许人们创建、加入和管理其他人的组。小组中的人也可以互相传递信息 我一直想知道哪条路更好: 保存一个包含所有信息的远程数据库,包括发送给用户和来自用户的消息。并让应用程序在每次需要信息时查询服务器。甚至它以前见过的信息 保存一个包含所有信息的远程数据库,包括发送给用户和来自用户的消息。还要保留远程数据库的本地副本,并使其与远程数据库保持同步。每当应用程序需要查询信息时,它都会执行查询以查看本地表是否是最新的。如果不是最新的,它将更新表并在本地表上运行查询。这样,它

我正在开发一个应用程序,它基本上允许人们创建、加入和管理其他人的组。小组中的人也可以互相传递信息

我一直想知道哪条路更好:

  • 保存一个包含所有信息的远程数据库,包括发送给用户和来自用户的消息。并让应用程序在每次需要信息时查询服务器。甚至它以前见过的信息
  • 保存一个包含所有信息的远程数据库,包括发送给用户和来自用户的消息。还要保留远程数据库的本地副本,并使其与远程数据库保持同步。每当应用程序需要查询信息时,它都会执行查询以查看本地表是否是最新的。如果不是最新的,它将更新表并在本地表上运行查询。这样,它将保留一个本地副本,当远程表没有更新时,应用程序将进行快速查询

    • 移动应用程序和远程数据库通常做什么
    • 如果我只是做了第一件事,那会是“坏习惯”吗

  • 我的基本反应是,我会将数据保存在一个地方,并远程访问它,除非有主要原因将其保存在本地。必须有情有可原的情况才能强制我在本地保存一份数据副本。只需确保您的查询准确、简洁即可。不要提取超过需要的数据。

    但是,您可以在本地保存一部分数据。特定于用户的项目(如消息),但保留不相关的数据只会增加开销和膨胀。

    在我看来,在大多数情况下,移动设备中的数据库只是真实数据库(服务器中的数据库)的缓存。因此,我的建议是在本地保留所有需要与服务器同步的数据。这允许您在没有连接的情况下显示信息,并在信息更新时向用户显示某些内容

    此外,由于本地数据存储在服务器中,这种方法使得本地数据不稳定而没有风险。因此:

    • 所有信息都在服务器中
    • 使用后台进程(服务、线程、intentservice,任何最适合您的)可以将此信息与本地数据库同步
    • 用户界面总是显示来自本地数据库的信息

    当然,这是一种非常普遍的方法,需要针对每种情况进行检查,因为不同的情况可能需要不同的方法。

    有趣的讨论。我认为在设备上缓存消息是个好主意。但是,将数据库与设备同步可能不具有很强的可扩展性,因为它需要与许多用户一起保存太多的信息。为什么不将用户之间发送的消息保存在本地?不这样做是对带宽的浪费。所有大消息应用程序,如Whatsapp、Kik、Telegrame等,都会将消息保存在本地。根据您移动的内容,您可能真的会占用空间。如果不知道你在看什么样的数据,就很难给出具体的答案。如果您只是在谈论存储与本地系统相关的信息,那么是的,但是如果您谈论的是一个完整的信息数据库,而只使用了其中的一小部分,那么您就是在浪费带宽和空间。此外,如果信息是由其他来源更新的,那么您将花费大量时间和精力确保从移动角度来看,信息在许多位置保持最新。输入良好,我同意不应将完整的数据库保存在本地。但是,这些消息可能根本不应该保存在服务器上。您可以通过服务器将消息转发给应用程序的不同用户,而不保存它们(隐私问题)。然后,用户可以随时查看他们交换的消息的本地副本。如果一个用户离线,您可以在服务器上临时缓存消息。在大多数情况下,您会说应该存储消息。取决于你的行业,你必须关注这一方面。是的,需要有缓存消息的能力,并在重新连接时自动下载。消息,是的。它们应该存储在本地。您甚至可以提供选择本地存储信息的功能,以防您位于网络访问受限的区域。但不是整个数据库。