首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集成:使两个系统保持同步

集成:使两个系统保持同步
EN

Database Administration用户
提问于 2019-09-22 23:08:20
回答 4查看 381关注 0票数 1

我有一个GIS系统,有40个表,每个表从1 000行到60 000行不等。这些表是市政当局资产的记录制度

表中的地理信息系统资产每周集成到订单管理系统 (WMS)中。该集成基于网络服务,为WMS提供地理信息系统表。

约束#1:

工作订单管理系统的集成是多功能的.

  1. WMS中有一个asset表,它通过cron任务进行更新,其中包含对GIS资产(新资产、更改的资产和退役资产)所做的任何编辑。只有已编辑的资产才会在WMS中更新。
  2. 集成还用于动态地将资源服务到WMS中的web地图(所有GIS资产都在地图中使用--不仅仅是编辑过的资产)。WMS中的地图直接连接到GIS服务--它不使用asset表中的记录或cron任务。

约束#2:

众所周知,WMS cron任务非常缓慢。考虑到我的组织的基础设施,我的供应商说WMS任务每分钟只能同步150条记录。

  • 测试正在进行中,但我们被告知只同步那些实际上需要同步(编辑)的记录,这是由于对性能的严重担忧。换句话说,我们不能一直集成或复制所有的记录。
  • 为了给您一个了解,cron任务流程是这样的: REST服务>> JSON对象>>将JSON解析为单个记录>>为每个记录>>进程生成XML与Java类 >>一起将记录插入数据库中。

约束#3:

地理信息系统的数据是出了名的混乱。

在约束#2中,我提到记录是用Java类处理的。Java类检查错误(父/子、字段规则等)并标记任何失败的记录。

  • 这些记录没有被集成到WMS中。
  • 应该由GIS团队纠正GIS表中的错误,然后我们将在下一个集成实例(下周)中再次尝试将GIS记录同步到WMS。

问题:

鉴于上述限制,我认为我需要找到一种方法将所有GIS资产集成到WMS (约束1.2),但也标记由于编辑而需要同步的记录(约束1.1)。

  • 对于无法同步的编辑资产--我需要在将来的同步中重新尝试它们,直到它们成功。
  • 我需要避免不必要地同步记录--因为性能方面的考虑。

,我该怎么做?

EN

回答 4

Database Administration用户

发布于 2019-09-23 12:48:01

你在运行闪回数据库吗?如果您是的话,您可以运行一个进程,它将在每个小时的顶部之后开始。该过程将查看每个表,就像在每小时开始时一样,并在源数据库和目标数据库之间执行一个合并命令,以实现单向同步。然后,您就可以每小时复制所有的表。如果由于某种原因,这个过程需要超过一个小时,那么您将使用每奇偶小时的顶部作为起点,每隔一个小时复制一次。您每次都将基于所有表的一致数据进行复制。

如果你获得许可,戈登盖特可能会更好地工作。它将使数据在更多的时间内保持更新。政府应该得到比公司更高的折扣。即使你发现戈登盖特的价格太贵,也是值得的。

票数 1
EN

Database Administration用户

发布于 2019-09-27 14:42:35

如果系统支持/允许,我将倾向于构建一个队列表,并在应用程序或数据库中使用触发器将同步请求插入到队列表中。然后,您可以有一个作业来读取队列表,执行请求的同步,可能会将同步请求复制到同步审核表,然后删除同步请求。如果同步失败,应该有一个状态标志,可以设置为ERRORRETRY

票数 1
EN

Database Administration用户

发布于 2020-11-09 04:36:59

性能改进

REST服务、>>、JSON对象、>>、将JSON解析为单个记录、>>为每个记录生成>>进程、用>>类处理>>记录、将记录插入数据库。

你有一个地理信息系统数据库,我想,它是一个Oracle数据库。假设您不需要WMS中的几何学,那么我认为上面的CRON作业可以用来提高性能。GIS服务的参与--(再一次,我在这里做了巨大的基础设施假设)--可能是最大的问题。从历史上看,供应商web服务是无法销售的,而且基础设施可能被用来做其他事情(生成地图、mnagage查询等)。

我非常喜欢面向服务的体系结构,但我也不赞成需要100亿份不同文件副本和不同格式等的解决方案。

也许另一种看待这个问题的方法是,您--正如其他人所建议的那样--实现数据库触发器。它们可以创建新表(可能查看表?)Oracle数据库中编辑的记录-它们没有几何学(因为我们假设您在WMS解决方案中不需要它)。同样,作为Oracle DB,您的Java解决方案可以重新编写,只需从视图表中读取数据,然后插入到WMS中。这样就可以消除

  • REST服务
  • JSON对象
  • 解析
  • XML生成
  • 将Java处理替换为其他java处理。

正如提到的其他解决方案一样,如果插入了记录,请从视图表中删除。如果没有,请稍后再试或标记为分隔区域以进行手动修复。

另一个好处是,这将释放您的GIS服务器,它可以完成您的地图绘制,并有望提高其性能。

不管怎么说,只是一些想法!

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/249384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档