我的系统只需要从服务器获取更新。我如何设计我的数据库?有一个审计表或有没有其他设计机制?我正在计划的是从我的设备发送更新ID,并检索新的更新。如何真正实现这个?'只获取更新'设计
回答
写入审计或更改表发生了什么变化是你所提到的一种方法。
如果您使用SQLServer的,还有一个时间戳列。这不是一个数据时间列 - 名称是不正确的。相反,它是一个递增的数字,当一行被触摸时,它会得到下一个数字。如果获得最大时间戳记,然后再查询时间戳大于那么长的所有行,则会得到更改/添加的行。
http://msdn.microsoft.com/en-us/library/ms182776(v=sql.90).aspx
的SQL Server时间戳数据类型无关,与时间或日期 。 SQL Server时间戳是二进制数字,表示 数据库中发生数据修改的相对序列。时间戳数据类型最初实现为支持SQL Server恢复算法的 。
我特别要警惕的一种方法是使用datetime作为水印。它转变,可以改变,并且不适合在算法中使用 - 特别是用于检测已经发生了什么变化。我看到系统试图依靠日期时间作为可靠的水印方法。
//是的,我穿过时间戳,我发现它很有趣。但如何正确实施?我打算在所有表中插入一个时间戳列,或者使用一个单独的审计表,其中使用其他表调用的触发器插入数据。如果是这样,我的表格结构是什么? //表Action_History(Action_Id,Action,TableName,Primary_Key_OfTable,TimeStamp)// OR //表Action_History(Action_Id,Action,TableName,Column Name,Old_Value,New_Value,TimeStamp)?那么,如何将复合PK连接到表格呢?我如何跟踪他们的变化? –
对于时间戳 - 假设您有一张客户表。而且,客户表与其他客户表相关。当客户被添加或编辑时,他们的时间戳列会发生变化。然后,试图获得“所有改变的顾客”的消费者将调用GetCustomersSince(长水印)方法。该make会查询所有客户的时间戳>水印并返回。 – bryanmac
对于历史记录表,必须具有像object_type_id,object_id,action_id,who_changed之类的内容。在该解决方案中,它是仅附加表格,并且自动生成的pk id成为水印。如果我这样做了,我会避免触发器,并且sprocs或批处理在交易中写入。 – bryanmac
这听起来像你正在寻找SQL Server Replication。您可能需要查看technet文章Exchanging Data with Mobile Users,其中描述了两种常见模型,以及如何使用SQL Server来帮助您。
您可以选择与审计表推出自己的,但你仍然需要管理的复制服务,旨在帮助您解决更新冲突的问题。
我认为他说他需要(读)发生了什么变化。不确定这意味着复制两个数据库。可能是一位客户拉取自上次访问以来发生更改的内容。 – bryanmac
几年前,我实现了这种设计。这是非常微不足道的,但它的工作。 据我所知,你想像Adobe一样将更新推送到你的客户端。 在数据库中保留一个表格(它甚至不需要是一个表格,你可以用XML保持输入)。 当你的客户端应用程序的负载,核对服务器的版本,如果不匹配,然后下载最新的更新,然后更新客户端版本其他正常加载客户端应用程序
- 1. Diffing两个对象,只获取更新
- 2. sql server只获取更新记录
- 3. MSBuild任务获取只更新项目的更新FileAssemblyVersion
- 4. 如何获取更新表上的更新(不计数)行
- 5. 更新密码设计
- 6. 设计密码更新
- 7. 更新实体设计器
- 8. 设计。获取current_user角色
- 9. 获取Vue更新对象更新
- 10. 测试设计用Rspec更新用户注册信息并获取:ActionController :: UnknownFormat:Error
- 11. 黑莓 - 从地址簿只获取更新的联系人
- 12. 一个NSFetchedResultsController vs几个UITableViews - 只有一个UITableView获取更新?
- 13. 通过使用OUTPUT子句获取只更新的列sql
- 14. SQL Server更新触发器,获取只修改的字段
- 15. 如何只从svn获取更新的文件?
- 16. 如何获取此Twitter的JavaScript只显示3个更新
- 17. 获取错误更新sqlite
- 18. 更新GridView时获取DataItem
- 19. 获取更新 - Facebook的SyndicationErrorFeed
- 20. 获取更新JTable值
- 21. 获取WCF Progess更新
- 22. 获取iFrame的更新值
- 23. Android获取时间更新
- 24. 正在获取更新RecyclerView.Adapter
- 25. 用于读取和更新的HBase行密钥设计
- 26. XML数据更新时只能读取
- 27. 设计新报告时获取的限制行数
- 28. 流星订阅只获取新文档
- 29. 只使用libgit2获取新分支
- 30. 只有新闻获取类别
你指的是什么样的更新?这与数据库有什么关系?你需要提供更多的细节 – Suhas