代码之家  ›  专栏  ›  技术社区  ›  David

POS应用的最佳解决方案是什么?

  •  0
  • David  · 技术社区  · 14 年前

    我现在正在做POS项目。用户要求这个应用程序可以在线和离线工作,这意味着他们需要本地数据库。我决定在每个车间和总部之间使用SQL Server复制。每个商店都需要安装SQL Server Express,并且总部已经有了SQL Server企业版。复制将按计划每30分钟运行一次,我选择合并复制,因为数据在车间和总部都可以更改。

    当我进行POC时,我发现这个解决方案不能正常工作,有时工作是错误的,我需要重新初始化它。这个解决方案也需要很长时间,这显然是用户无法接受的。

    我想知道,有没有比我现在做的更好的解决方案?

    更新1:

    系统的约束是

    1. 几乎有个事务可以发生在 商店和总部。
    2. 有些事务需要在实时模式下工作,也就是说, 用户将数据保存到本地商店后,该数据也应在总部进行更新。(如果他们现在在线)
    3. 用户可以工作,即使他们的商店已与总部数据库断开连接。
    4. 我们估计每天的数据量最多为2000行。
    5. Windows 2003是总部服务器的操作系统,Windows XP是所有客户机的操作系统。

    更新2:

    1. 目前他们大约有15个客户,但这一数字增长速度相当缓慢。
    2. 每个复制的数据大小大约为100到200行,我认为它可能不超过5 MB。
    3. 客户端通过租用线路连接到服务器;128 Kbps。

    在这种情况下,复制需要很长时间(大约55分钟,而我们只有5分钟左右),而且几乎有几次我需要重新初始化作业才能重新开始复制,如果我不重新初始化作业,它就根本无法复制。在我的POC中,我发现在重新初始化之后复制总是需要很长的时间,时间的长短并不依赖于数据的数量。顺便说一下,重新初始化是解决我的问题的唯一方法。

    如上所述,我的结论是,复制可能不适合我的问题,我认为它可能有另一个更好的解决方案,可以满足我的需要。 更新1:

    3 回复  |  直到 14 年前
        1
  •  2
  •   Oded    14 年前

    听起来您可能需要启动自己的双向复制引擎。

    之所以需要这么长时间,部分原因是在这么窄的链路(128kbps)上,两个数据库必须保持一致(因此它们需要检查所有行),然后才能开始复制。正如你所能想象的,这可能(而且确实)需要很长时间。即使是5兆也需要大约一分钟的时间才能通过这个链接传输。

    在编写自己的引擎时,请确定需要复制的内容(对更改的项使用时间戳),并确定冲突解决方案(如果在复制期间的两个位置更改了相同的记录,会发生什么)等。这不容易。

        2
  •  0
  •   Manjoor    14 年前

    我的建议是在本地使用MS Access,并在一定时间间隔后继续向服务器更新数据。向每个表添加更新的列。添加或更新记录时,设置更新的列。要删除,您需要有一个单独的表,您可以在其中放置主键值和表名。同步时,获取未设置更新字段的所有本地记录,并将其更新(修改或插入)到中央服务器。使用本地已删除表删除所有记录,然后完成操作!

    我假设您的中央服务器只用于收集数据。

        3
  •  0
  •   Brandon Williams    14 年前

    我目前正按照您所描述的,使用为Web同步配置的SQL Server合并复制。我让我的经纪人按1分钟的时间表运行,并且取得了成功。

    您看到什么样的错误消息?