database - 如何将基于 xBase 的 ERP 连接到 Web 应用程序?

标签 database synchronization erp edi xbase

我需要设置一个与现有 ERP 系统 (WinMagi) 交互的 Web 应用程序。 ERP 基本上是 xBase (FoxPro) 数据库的前端。该数据库位于内部服务器上。据我所知,ERP 没有 API,但可以通过 EDI 模块接受采购订单等。 Web 应用程序应该能够接受在线订单和查询数据以进行报告。

目前我的计划:

  1. 将 xBase 数据库同步到云托管 VM 上的 SQL 服务器实例。
    • (从 ERP 单向 -> SQL Server)
  2. 将此同步过程用作 ERP 和网络应用程序之间的接口(interface)。
  3. 使用 EDI 将采购订单推送回 ERP。
    • 我的想法是,从数据并发的角度来看,通过受控和接受(由 ERP)的接口(interface)在 ERP 中创建或更新数据会更安全。

问题/疑虑:

  1. 从 xBase 数据库更新 SQL 数据库的最佳方法是什么?是否有任何预先存在的库可以执行此操作,这样我就不必重新发明轮子?
  2. xBase 数据库会在同步期间被锁定吗?或者以其他方式导致实时 ERP 出现问题?
  3. 如何避免同步期间出现数据并发/完整性问题?
  4. 此系统不会向网络应用程序提供实时数据。我会因此而遇到什么样的问题?
  5. 对于这类项目,我应该更喜欢一种语言还是另一种语言?我的计划是使用 Java/Hibernate MVC。

我是不是用错了方法?将我的 Web 应用程序直接与 xBase 数据库连接会更好吗?使用这种方法时立即想到的一些问题是办公室和基于云的 VM 之间的网络问题,以及直接将 ERP 开放到互联网的潜在安全漏洞。

如果您能提供任何意见或建议,我们将不胜感激!!提前致谢。

更新 - 2012 年 9 月 3 日

我目前如何进行数据复制(这不是同步)- 每晚运行:

  1. 办公室中的 linux box 将所需的 DBF 从 ERP 服务器上的只读共享复制到本地存储。
  2. 使用 Dave Burton 出色的 dbf2csv perl script 将 DBF 转换为 CSV
  3. 生成的 CSV 将同步到远程 VM。数据只有很小的变化,所以速度非常快。
  4. rsync 完成后,远程 VM 将 mysqlimport 导入到生产数据库。

这种方法的优点

  • ERP 不能以任何方式损坏,因为网络访问是只读的。
  • 无需实现自定义逻辑来同步数据,因此无需担心远程 VM 上的数据可能出错。
  • 由于数据副本在夜间运行,因此运行时间并不太重要。
    • 对于超过 100 万条记录,每条记录大约有 20-30 个字段,当前运行时间约为 7 分钟。
    • 最长的阶段是 DBF 复制和转换为 CSV。

缺点

  • 每次都必须完整复制 DBF。
  • 每次都必须完整转换 DBF。
  • 正在复制的表在 mysqlimport 期间被锁定。这并不是什么大问题,因为导入在夜间运行,而 mysqlimport 只需要大约 20 秒。

最佳答案

  1. 如果您使用的是 Visual Foxpro 3.0 或更高版本,则可以使用内置的数据库容器来创建到 SQL Server 数据库的连接。然后 .DBC 中的 View 将完成读取和更新 SQL Server 表的繁重工作。

  2. 我会设想一个循环遍历您的 Foxpro 表并读取行然后对 SQL Server 数据库进行更新的例程。因此,不应锁定 Foxpro 表。为确保这一点,您可以先将 DBF 查询到游标中,然后遍历游标。

  3. 我建议添加程序来进行并发检查。

在您的 Web 应用程序中服务器实时 Foxpro 数据的另一种选择是在 SQL Server 中创建一个链接服务器到您的 Foxpro 数据库。这样就可以实时访问您的 Foxpro 数据。

关于database - 如何将基于 xBase 的 ERP 连接到 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9657151/

相关文章:

mysql - 如何在规范化数据库中加入 tag_map

c - fread() 操作将错误的数据补充到结构中

Spring 交易TransactionSynchronizationManager : isActualTransactionActive vs isSynchronizationActive

erp - 在 Adempiere 中导入/导出数据

workflow - 流程图:生产管理处理拆解项目的剩余部分

php - 多数据库选择php mysql

mysql - 错误 : cannot find the c:\wamp64\bin\mysql5. 7.19\my.ini 文件

java - 在静态对象上同步

java - 以下同步块(synchronized block)的目的是什么?

xml - 如何检查openerp xml View 中的one2many字段是否为空