【问题标题】:Online storage / sync of large iPhone user databases: perform on server or on device?大型 iPhone 用户数据库的在线存储/同步:在服务器上还是在设备上执行?
【发布时间】:2010-12-01 11:03:36
【问题描述】:

我正在为一个流行的基于 SQLite 的 iPhone 抽认卡应用开发在线用户数据库备份/同步系统;这是相当大的规模——我们可以很快达到 1 亿条或更多的个人抽认卡记录(10,000 个用户,每个用户 10,000 张卡片)——我们需要在设计系统时考虑到这种可扩展性。但我们并不是真正从事基于 Web 的软件业务,至少最初我们不打算实际提供这么多的 Web 界面,除了帐户管理 - 所有对用户数据的实际操作都将离线进行。

因此,对于如何实现这一点,我们似乎有两个基本选择:

  • 在服务器上执行同步;将所有用户的数据存储在 MySQL 数据库中(或在我们扩大规模时存储其中的一堆)并仅下载/上传更改列表。

  • 在本地执行同步;从服务器下载最新版本的数据库,在设备上检查/应用更改,然后上传合并的数据库。

本地同步选项似乎意味着我们的编程工作量减少了很多,托管成本也降低了很多,但也意味着我们的用户使用的带宽显着增加——每个用户可能需要大约 2-4 MB同步操作与基于 Web 的同步需要几十 K。

有没有人觉得这些选项中的一个明显优于另一个?还有其他我们没有考虑过的方法吗?

谢谢。

【问题讨论】:

    标签: iphone mysql sqlite synchronization amazon-s3


    【解决方案1】:

    我可能无法理解这种工作方式,但由于这是同步,为什么数据库的本地副本无法记录可以在服务器端复制的更改列表?这仅适用于单个设备,当然不会将多个设备同步到同一数据集。

    可以通过多种方式记录更改:例如您可以将iPhone上的记录校验和,并在同步时再次校验它们,然后上传已更改的,删除需要单独记录。

    【讨论】:

    • 这部分不是我担心的,实际上,我最关心的是在服务器端有效地管理那么多记录;这不会是一个小型的 MySQL 项目,如果事情发展起来,我们可以很容易地进入集群/分片领域。而如果我们只是检索/写入整个数据库文件,我们可能会使用一个小型 EC2 实例,而按照 S3 标准,文件存储量是微乎其微的。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2012-06-18
    • 1970-01-01
    • 2012-01-21
    • 2018-04-27
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多