我有一个GIS系统,有40个表,每个表从1 000行到60 000行不等。这些表是市政当局资产的记录制度。
表中的地理信息系统资产每周集成到订单管理系统 (WMS)中。该集成基于网络服务,为WMS提供地理信息系统表。
工作订单管理系统的集成是多功能的.
asset
表,它通过cron任务进行更新,其中包含对GIS资产(新资产、更改的资产和退役资产)所做的任何编辑。只有已编辑的资产才会在WMS中更新。asset
表中的记录或cron任务。众所周知,WMS cron任务非常缓慢。考虑到我的组织的基础设施,我的供应商说WMS任务每分钟只能同步150条记录。
地理信息系统的数据是出了名的混乱。
在约束#2中,我提到记录是用Java类处理的。Java类检查错误(父/子、字段规则等)并标记任何失败的记录。
鉴于上述限制,我认为我需要找到一种方法将所有GIS资产集成到WMS (约束1.2),但也标记由于编辑而需要同步的记录(约束1.1)。
发布于 2019-09-23 12:48:01
你在运行闪回数据库吗?如果您是的话,您可以运行一个进程,它将在每个小时的顶部之后开始。该过程将查看每个表,就像在每小时开始时一样,并在源数据库和目标数据库之间执行一个合并命令,以实现单向同步。然后,您就可以每小时复制所有的表。如果由于某种原因,这个过程需要超过一个小时,那么您将使用每奇偶小时的顶部作为起点,每隔一个小时复制一次。您每次都将基于所有表的一致数据进行复制。
如果你获得许可,戈登盖特可能会更好地工作。它将使数据在更多的时间内保持更新。政府应该得到比公司更高的折扣。即使你发现戈登盖特的价格太贵,也是值得的。
发布于 2019-09-27 14:42:35
如果系统支持/允许,我将倾向于构建一个队列表,并在应用程序或数据库中使用触发器将同步请求插入到队列表中。然后,您可以有一个作业来读取队列表,执行请求的同步,可能会将同步请求复制到同步审核表,然后删除同步请求。如果同步失败,应该有一个状态标志,可以设置为ERROR
或RETRY
。
发布于 2020-11-09 04:36:59
REST服务、>>、JSON对象、>>、将JSON解析为单个记录、>>为每个记录生成>>进程、用>>类处理>>记录、将记录插入数据库。
你有一个地理信息系统数据库,我想,它是一个Oracle数据库。假设您不需要WMS中的几何学,那么我认为上面的CRON作业可以用来提高性能。GIS服务的参与--(再一次,我在这里做了巨大的基础设施假设)--可能是最大的问题。从历史上看,供应商web服务是无法销售的,而且基础设施可能被用来做其他事情(生成地图、mnagage查询等)。
我非常喜欢面向服务的体系结构,但我也不赞成需要100亿份不同文件副本和不同格式等的解决方案。
也许另一种看待这个问题的方法是,您--正如其他人所建议的那样--实现数据库触发器。它们可以创建新表(可能查看表?)Oracle数据库中编辑的记录-它们没有几何学(因为我们假设您在WMS解决方案中不需要它)。同样,作为Oracle DB,您的Java解决方案可以重新编写,只需从视图表中读取数据,然后插入到WMS中。这样就可以消除
正如提到的其他解决方案一样,如果插入了记录,请从视图表中删除。如果没有,请稍后再试或标记为分隔区域以进行手动修复。
另一个好处是,这将释放您的GIS服务器,它可以完成您的地图绘制,并有望提高其性能。
不管怎么说,只是一些想法!
https://dba.stackexchange.com/questions/249384
复制相似问题