iPhone数据库&;服务器数据库-iPhone仅更新修改
我有一些疑问。首先,让我们来看一个iPhone应用程序流,这是一个普通应用程序的流程。(基于内容的应用程序)iPhone数据库&;服务器数据库-iPhone仅更新修改,iphone,sql-server,xcode,sqlite,Iphone,Sql Server,Xcode,Sqlite,我有一些疑问。首先,让我们来看一个iPhone应用程序流,这是一个普通应用程序的流程。(基于内容的应用程序) 应用程序启动并检查网络可用性 如果网络可用-iPhone使用web服务或API下载数据 我们可以将这些响应(web服务响应/api响应)存储到*.plist文件中 当我们需要更新数据时,再次调用web服务&再次将整个数据存储在*.plist文件中 现在,假设服务器上有一个表“eBooks”&它有500多个条目 调用API/web服务将给出500条记录的响应 OK—第一次可以等待所有响应
- 应用程序启动并检查网络可用性
- 如果网络可用-iPhone使用web服务或API下载数据
- 我们可以将这些响应(web服务响应/api响应)存储到*.plist文件中
- 当我们需要更新数据时,再次调用web服务&再次将整个数据存储在*.plist文件中
- 现在,假设服务器上有一个表“eBooks”&它有500多个条目
- 调用API/web服务将给出500条记录的响应
- OK—第一次可以等待所有响应(我们可能会使用LIBXML2作为块)
- 但是,如果我们经常使用web服务下载它呢
- 无线上网不必要的使用
- iPhone CPU开销
- 服务器CPU开销
- 应用程序的服务器+数据库=客户(当前有500条记录)
- 有5台iPhone可以检索这些数据
- 所有iPhone都离线下载了500条记录
- 现在,服务器添加了一条新记录501
- iPhone必须只下载一条记录,而不是501
这是怎么可能的?您可以非常轻松地在服务器应用程序上实现分页,让客户端限制检索的条目数。您还可以实现某种可以缓存在iPhone客户端上的唯一标识符,然后当您请求更新时,发送您缓存的最后一个项目的唯一标识符。当您的服务器发送响应时,它应该只提供比您缓存的最后一个项目新的项目。您可以为每个项目添加时间戳。每次在服务器端进行更改、添加或删除时,都会更新此时间戳 在执行查询时,您提供一个字段,指示客户端已知的最新时间戳。对于第一个查询,这类似于Epoch。对于后续查询,它将是最后一次已知的更新
然后,服务器将必须筛选条目,因此它只返回自提供的时间戳以来已更改的条目。@Claus Broch-想法很好-请您再简短一点好吗?@Claus Broch-因此,iPhone将在向服务器调用web服务时提供timestap,服务器将检查数据库的每条记录的时间戳。serverTimeStamp==iPhoneTimeStamp-针对每个记录。假设有500个iPhone应用程序用户。服务器会发生什么情况?我假定您将数据保存在某种数据库中,因此只需构造一个执行筛选的SQL语句即可(例如,类似于“SELECT*from TABLE mydata WHERE timestamp>=querystamp”)。与每次提供完整内容相比,服务器的过滤负载可能会更少。不过,这只是一个粗略的估算,您的里程数可能会有所不同。但删除的记录呢?假设401&302记录已删除-在这种情况下该怎么办?对于“已删除”记录,实际上不删除它们,而是在数据库中将它们标记为已删除。您需要在数据库中设计表,因此这只会占用用于更改管理的字段的空间。实际上,数据可以放在不同的表中。为什么寻呼需要wifi?