我正在寻找一些输入。我正在设计一个多用户、多供应商、n 层数据库应用程序。
该系统的每个本地安装都必须将其记录复制到单个中央服务器。安装的数据库应用程序的用户不能直接使用此服务器,并且 Internet 是访问它的唯一途径。中央数据库仅用于报告,因此复制只需单向到中央服务器。
主要目标是尽可能快地将记录发送到中央数据库,以确保“伪实时”快照。
这是我到目前为止所得到的:
使用 Internet 上的 Web 服务器(SOAP 服务)上传压缩/加密文件(XML 数据)。“中央”数据库服务器定期轮询 Web 服务器以收集和导入数据。
本地数据库系统不会删除记录,而是将它们标记为已删除。
数据库中的每个表都有一个主键,使用类似 GUID 的代理键(即没有 auto-inc 字段)来防止中央数据库上的键违规。
我已经打折使用客户端的数据库服务器来运行提取和上传过程,因为在客户站点上对该系统的 IT 支持很少,所以如果上传失败(由于本地防火墙/代理服务器问题),那么我想要用户尽快知道,这样他们就可以对其进行分类。
提取过程一次只需要由一个客户端应用程序运行,因为它将查询整个本地数据库以提取更改。
我正在努力解决的问题是数据库结构能够有效(和准确)地提取最近更改的记录。这也会在用户工作时发生,即需要注意用户在提取过程中打开记录以供编辑,并且需要它“在后台”运行,以免过多地打扰用户。
即我是否使用基于日期和时间的方法?我是否使用某种状态字段,甚至是可以查询然后清除的单独更改日志表?
为这篇长文道歉,但我会重视任何人在开发此解决方案方面的任何经验。
TIA,
斯图尔特