【发布时间】:2009-09-14 15:12:43
【问题描述】:
我想设计一个通过非常慢的网络链接访问的数据库。幸运的是,数据库本身是相当静态的。所以我将使用积极的结果缓存。有时,在客户端运行时,表上可能会发生其他插入和更新,因此我想设计一个低带宽系统,客户端可以准确地知道何时更新了某些内容,以避免甚至打扰检查远程数据库。
我的想法是创建一个包含两列的特殊表,一列是表的名称,另一列是版本号。该表永远不会被应用程序查询直接修改。它将使用存储过程进行更新。每当修改任何表时,存储过程都应增加此特殊表的编号。
然后,客户端可以将查询结果与表的版本号一起存储在本地数据库(比如 sqlite)中。然后,下次在特殊表上运行 select 并检查表是否已更改。
这听起来怎么样?是否有其他策略来最小化冗余数据库带宽并积极缓存数据库?事情将不仅是跨平台的,而且编程语言中的不同客户端将访问它(C、C++、Obj-C、Python 等),所以我试图找到最简单的东西在所有情况下都可以工作。
理想情况下,我想将表设计为增量(删除是实际插入),因此我可以只查询表的最高 ID 并与本地 ID 进行比较。但是,我不知道在哪里可以找到这样的例子。阅读CouchDB's technical page 让我头疼。
【问题讨论】:
-
我认为时间戳只有在批量更新时才能正常工作。或者,当您往返于时间戳时,您可能已经完成了!