我正在开发一个普通的iPhone应用程序,它从服务器(XML,JSON等)中提取数据,我想知道实现同步数据的最佳方法是什么.标准是速度(较少的网络数据交换),健壮性(更新失败时的数据恢复),离线访问和灵活性(当数据库结构略有变化时适应,如新列).我知道它因应用程序而异,但你们可以分享一些策略/经验吗?
对我来说,我在考虑这样的事情:
1)在iPhone中存储上次修改日期
2)启动时,发送一条消息,如getNewData.php?lastModifiedDate = ...
3)服务器将仅处理和发回上次修改的数据.
4)此数据的格式如下:
<+><data id="..."></data></+> // add this to SQLite/CoreData
<-><data id="..."></data></-> // remove this
<%><data id="..."><attribute>newValue</attribute></data></%> // new modified value
我也不想为每个属性制作<+>,< - >,<%> ...,因为它太复杂了,所以当收到<%>字段时,我只想删除数据使用指定的id,然后再次添加它(假设此处的id不是某些自动自动递增的字段).
5)下载并更新所有内容后,我将更新"上次修改日期"字段.
这个策略的主要问题是:如果在我更新某些内容时网络出现故障=>上次修改日期尚未更新=>下次重新启动应用程序时,我将不得不再次执行相同的操作.更不用说潜在的不一致数据了.如果我使用临时表进行更新并使整个事件成为原子,那么它将起作用,但是如果更新太长(大量数据更改),则用户必须等待很长时间才能获得新数据.我应该为每个数据字段使用Last-Modified-Date并逐步更新数据吗?
我在查找数据同步和复制之间的差异时遇到了麻烦.
据我所知,复制使两个数据库之间的所有数据都相同.同步不一定使两个数据库之间的所有数据相同.复制是一次性传输,同步可以是小型更新以保持数据一致吗?我不太确定,请在这里纠正我?
如果我要拥有一个存储多个移动数据的中央mySQL数据库,我的目标是保持手机中的数据与来自mySQL的数据(仅限某些用户数据)相同,那么是同步还是复制,还是两者兼而有之?它最初会获取所有用户数据(复制),然后在此之后发送任何更新的数据(同步)?
希望有人可以清理混乱,非常感谢!
我正在使用基于XML的有效负载在iPhone和网站之间同步两个业务对象,并且愿意为最佳例程征求一些想法.
这个问题的本质是相当通用的,我可以看到它适用于需要在Web实体和客户端(桌面,移动电话等)之间同步业务对象的各种不同系统.
可以双方编辑,删除和更新业务对象.双方都可以在本地存储对象,但同步仅在iPhone端启动,以便断开连接查看.所有对象都有一个updated_at和created_at时间戳,并且两边都有一个RDBMS支持(iPhone端的SQLite和网络上的MySQL ......再次我认为这不重要)并且手机确实记录了最后一次尝试同步.否则,不存储其他数据(此刻).
您将使用什么算法来最小化系统之间的网络聊天以进行同步?如果"软删除"不是一个选项,你将如何处理删除?您会添加哪些数据模型更改以设置此功能?
通常需要将来自一个数据库中的主表的数据同步到其他数据库中的克隆表,通常是在其他服务器上.例如,考虑后端系统管理库存数据并且最终必须将库存数据推送到属于网站应用程序的一个或多个数据库的情况.
后端系统中的源数据严格标准化,具有数十个表和外键约束.它是一个精心设计的OLTP RDBMS系统.许多表中包含数百万行.需要定期将这些数据推送到其他数据库.尽可能频繁; 可以容忍延迟.最重要的是,后端和远程数据库的最大正常运行时间是必不可少的.
我正在使用SQL Server,熟悉更改跟踪,rowversion,触发器等.我知道微软会为这些场景大量推送复制,SyncFx和SSIS.但是,供应商白皮书和概述推荐技术以及解决方案的实际实施,部署和维护之间存在很大差异.在SQL Server世界中,复制通常被视为交钥匙解决方案,但我正在尝试探索替代解决方案.(有些人担心复制难以管理,难以更改架构,并且如果需要重新初始化,关键系统的停机时间会很长.)
有很多陷阱.由于大量表之间存在复杂的外键关系,因此确定执行捕获或应用更新的顺序并非易事.由于唯一索引,两行可能会以这样的方式互锁,即一次一行更新甚至不起作用(需要在最终更新之前对每一行执行中间更新).这些不一定是show-stoppers,因为唯一索引通常可以更改为常规索引,并且可以禁用外键(尽管禁用外键是非常不合需要的).通常,您会听到"只是"使用SQL 2008更改跟踪和SSIS或SyncFx.这些答案实际上并不符合实际困难.(当然,客户真的很难理解如何复制数据如此困难,使情况变得更糟!)
这个问题最终非常通用:执行许多重度相关的数据库表的单向同步.几乎每个参与数据库的人都必须处理这类问题.白皮书是常见的,实用的专业知识很难找到.我们知道这可能是一个难题,但工作必须完成.让我们来听听对你有用的东西(以及要避免的东西).告诉您使用Microsoft产品或其他供应商的产品的经验.但是,如果你个人没有对大量严重相关的表和行进行战斗测试,请不要回答.让我们保持这种实际 - 不是理论上的.
我有一个也有Web界面的应用程序,其中一个要求是即使没有可用的Internet连接也能够处理应用程序.是否需要在这些数据库之间进行同步?
那些数据库应该是相当大的磁盘空间.如果有这样的需要应该怎么做?我应该使用什么数据库?
目标操作系统是Windows,但服务器可以在Windows或Linux上运行
我的服务器上有一个大约3mb的数据库.我想用我的iphone应用程序发送它.
最重要的是我想推动对iphone的数据库更改(插入,更新,删除).这样做的最佳方法是什么?我的意思是 - 什么是必要的 - 服务器 - 客户端(= iphone) - 之间; 如何传输这些数据?
我很自由地使用技术服务器; 现在,我在服务器上有一个sqlite数据库,里面装满了我要同步到iphone的数据.
我们有一个Android应用程序和一个iPhone应用程序(相同的功能),使用sqlite进行本地数据存储.应用程序最初没有数据,然后在第一次运行时,它们从远程服务器接收数据并将其存储在sqlite数据库中.sqlite数据库由服务器创建,应用程序将其作为一个文件下载,然后用于购买应用程序.按照今天的标准,数据库文件不是很大,但也不是很小 - 大约5-6 MB.
现在,应用程序需要刷新服务器中的数据.我能想到几种方法:
从服务器下载新的完整数据库并替换现有数据库.这听起来像处理问题最简单的方法是不是重复5-6 MB的下载.应用程序会提示用户是否要下载更新,因此这可能不是太大的问题.
从服务器下载增量数据库,仅包含新的/已修改的记录,并以某种形式显示有关要删除的记录的信息.这将导致更小的下载大小,但客户端的工作更复杂.我需要读取一个数据库,并根据读取的内容更新另一个数据库.据我所知,sqlite没有办法像insert into db1.table1 (select * from db2.table1)where 一样,db1并且db2是两个包含table1相同结构的sqlite数据库.(完整的sqlite数据库包含大约10个表,其中最大的一个表可能包含大约500个记录左右.)
以某种其他格式(json,xml等)下载数据的delta,并使用此信息更新应用程序中的数据库.与以前相同:在服务器端没有太多问题,下载大小比完整数据库小,但是进行更新是一个非常痛苦的过程.
您推荐的三种方法中的哪一种?或许还有另一种我错过的方式?
提前谢谢了.
我希望rsync排除包含具有特定名称的文件的所有目录,例如".rsync-exclude",与".rsync-exclude"文件的内容无关.
如果文件".rsync-exclude"只包含"*",我可以使用rsync -r SRC DEST --filter='dir-merge,- .rsync-exclude'.
但是,应该排除目录,而不依赖于".rsync-exclude"文件的内容(至少应该可以将".rsync-exclude"文件留空).
有任何想法吗?
我有一台运行php和mysql的服务器.有一些php脚本以json格式返回服务器上的数据.这个数据是我的Android应用程序消耗的.应用程序启动时会同步数据与服务器同步,第一次大约需要2分钟,之后大约需要20秒.我可以在我的应用程序中使用syncadapter,从而避免在启动时同步,并在应用程序运行时在后台同步数据吗?或者其他一些策略会更合适.
我将有两个Rails应用程序,一个是成熟的应用程序,另一个是简化的应用程序。这两个应用程序都有自己的数据库,它们将使用API相互通信。
我有两个这样的模型(在两个应用程序中):
class Scan < ApplicationRecord
has_many :background_processes, dependent: :destroy
end
class BackgroundProcess < ApplicationRecord
belongs_to :scan
end
Run Code Online (Sandbox Code Playgroud)
现在,当两个应用程序之间发生同步时,从属模型(在这种情况下background_processes)将具有不同的scan_id。
如果发生数据同步,我们应该如何处理关联?
iphone ×4
android ×2
database ×2
sqlite ×2
associations ×1
replication ×1
rsync ×1
sql-server ×1
sync ×1