要素服务之长事务

别再混淆了!一文讲透ArcGIS Server中的要素服务(Feature Service)与托管要素服务 本文详细解析了ArcGIS Server中的要素服务(Feature Service)与托管要素服务(Hosted Feature Service)的核心差异与应用场景。通过技术架构对比、选型决策模型和性能优化技巧,帮助用户根据数据敏感性、编辑复杂度等维度做出合理选择,提升GIS系统部署效率。 阅读详情

在GIS应用中,常常会出现这样一种情况,空间数据库中对某个数据集进行的一次操作(比如编辑)很复杂,或者是出于某种原因无法在有限的特定时间内完成,全部完成操作需要比较长的时间,而传统的关系数据库在编辑的数据时要锁定数据,这样就会造成别的用户在很长一段时间内也无法访问(至少是无法编辑)这些数据集,所以GIS中通过长事务解决这类问题。

在关系数据库中,事务应该具有四个属性:原子性、一致性、隔离性、持续性,这四个属性通常称为ACID特性。

l  原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

l  一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,一致性与原子性是密切相关的。

l  隔离性(Isolation):一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

l  持久性(Durability):持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。

长事务是一种持续时间可以持续几天、几个月甚至更长的时间,可以涉及多个会话(Session)的事务,它除了具有ACID特性外,一般会在当前基态数据库版本的基础上建立分支版本,采用“乐观锁定”的策略,在提交事务的时候由事务管理程序统一协调处理,没有冲突的直接提交,有冲突的返回通知消息给用户,交互式解决或按事先规定好的规则处理。

大部分空间数据库都采用版本管理的方式来实现长事务,版本管理的实质是以某个数据作为基准数据,只记录变化的情况和信息,不重复记录不变的数据。在空间数据库中,使用特定的表来分别记录特征和对象被添加、删除或修改的情况。当数据库创建之时,就建立了数据库缺省的状态和版本,即根版本(Root Version)。所以,在MapGuide中所有长事务都有一个根长事务作为它的祖先。许多空间数据库支持嵌套的长事务,即在一个长事务A中可以启动另一个长事务B,长事务B的父亲为长事务A,这样长事务之间的依赖关系最后会形成一个树。

MapGuide是一个GIS数据的发布平台,并不是GIS数据的编辑平台,所以要素服务没有提供启动、提交和回滚长事务的API,仅是提供了遍历要素源中已经启动的长事务和设置当前用户会话(Session)所使用的长事务的功能。

调用方法MgFeatureService::GetLongTransactions(…)可以获得指定要素源中的长事务,该方法的签名如下所示,参数resource用于指定一个要素源,参数bActiveOnly为true,则返只回要素源中活动的长事务,否则返回要素源中所有的长事务,返回值为长事务读取器MgLongTransactionReader的一个实例。长事务读取器是一个前向只读读取器,在访问任何数据之前需要调用方法MgLongTransactionReader::ReadNext(),调用MgLongTransactionReader:: GetParents()可以得到当前长事务的父长事务,调用MgLongTransactionReader::GetChildren()可以得到当前长事务的子长事务。

MgLongTransactionReader GetLongTransactions(

MgResourceIdentifier resource,

bool bActiveOnly); 

如下的代码将指定长事务读取器中的所有信息输出到一个文件。

function printLongTransactionReader($longTransactionReader)

{

    global $logFileHandle;

    $i = 0;

    fwrite($logFileHandle, "Printing long transaction readern");

    while ($longTransactionReader->ReadNext())

    {

       $i++;

       $name = $longTransactionReader->GetName();

       fwrite($logFileHandle, "Name: $namen");

       $desc = $longTransactionReader->GetDescription();

       fwrite($logFileHandle, "Description: $descn");

       $owner = $longTransactionReader->GetOwner();

       fwrite($logFileHandle, "Owner: $ownern");

       $dateTime = $longTransactionReader->GetCreationDate();

       $printableDateTime = printDateTime($dateTime);

       fwrite($logFileHandle, "Creation Date: $printableDateTimen");

       $isActive = $longTransactionReader->IsActive();

       $printableIsActive = prtBool($isActive);

       fwrite($logFileHandle, "IsActive: $printableIsActiven");

       $isFrozen = $longTransactionReader->IsFrozen();

       $printableIsFrozen = prtBool($isFrozen);

       fwrite($logFileHandle, "IsFrozen: $printableIsFrozenn");

       $parentLongTransactionReader = $longTransactionReader->GetParents();

       if ($parentLongTransactionReader == NULL)

       {

          fwrite($logFileHandle, "There is no parent long transactionn");

       }

       else

       {

          fwrite($logFileHandle, "Printing parent long transaction readern");

          printLongTransactionReader($parentLongTransactionReader);

          $parentLongTransactionReader->Close();

       }

       $childrenLongTransactionReader = $longTransactionReader->GetChildren();

       if ($childrenLongTransactionReader == NULL)

       {

          fwrite($logFileHandle, "There are no child long transactionsn");

       }

       else

       {

          fwrite($logFileHandle, "Printing children long transaction readern");

          printLongTransactionReader($childrenLongTransactionReader);

          $childrenLongTransactionReader->Close();

       }

    }

    fwrite($logFileHandle, "Printed $i long transaction(s)n");

}

分布式事务补偿机制:基于事件溯源的实现 事件溯源驱动的补偿机制,通过重构事务处理范式,显著提升了分布式系统的可靠性和可维护性。技术层面,将事务失败率降低至0.1%以下;业务层面,支持复杂业务流程的原子化拆分;运维层面,使故障恢复时间从小时级降至分钟级。1)建立行业级事件溯源标准,统一事件模型和补偿协议;2)加强跨云平台的事件互操作性,解决多云环境下的事务一致性难题;3)探索事件溯源与AI的深度结合,实现智能化的异常预测和自动补偿。据IDC预测,到2027年采用事件溯源的事务系统将占据金融、电商等关键行业的65%市场份额。 阅读详情

相关推荐

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,真实环境下的网络攻防演练也是检验一个单位,企业网络防御能力,发现潜在危险最好的方法。1.政策要求2安全威胁驱动当前,我国关键信息基础设施面临的网络安全形势严峻复杂,网站平台大规模数据泄露事件频发,生产业务系统安全隐患突出,甚至有的系统长期被控面对高级持续性的网络攻击,防护能力十分欠缺。目前,我国面临的网络安全威胁主要有以下几点。

wxh的博客 1574

为什么不要使用长事务

比如,在某个时刻(今天上午9:00)开启了一个事务A(对于可重复读隔离级别,此时一个视图read-view A也创建了),这是一个很长的事务…… 事务A在今天上午9:20的时候,查询了一个记录R1的一个字段f1的值为1…… 今天上午9:25的时候,一个事务B(随之而来的read-view B)也被开启了,它更新了R1.f1的值为2(同时也创建了一个由2到1的回滚日志),这是一个短事务,事务随后就被...

Thxxxxxx 1389

无法找到 Adobe PDF资源文件。“Acrobat PDFMaker“您必须具有”管理员”权限方可安装这些文件...错误怎么解决

本文的内容是无法找到 Adobe PDF资源文件。“Acrobat PDFMaker“您必须具有”管理员”权限方可安装这些文件...错误的解决办法。

西岸贤 1万+

长事务@Transactional(死锁、连接不足)

在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务@Transactional划上了等号,只要有数据库相关操作就直接给方法加上@Transactional注解。 /** * 代码片段1 */ @Transactional(rollbackFor = Exception.class) public void save(RequestBillDTO r...

woshimyc的专栏 1万+

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的额主机、路由器,以及与降低网 拥塞控制的算法有:慢开始、拥塞避免、快重传、快恢复四种。 慢开始和拥塞避免 发送方维持一个拥塞窗口的状态变量,其大小取决于网络的拥塞程度

兰亭风雨的专栏 1万+

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4105

【SpringBoot优雅处理长事务】

数据库连接池被占满,应用无法获取连接资源容易引发数据库死锁数据库回滚时间长综上,合理的对事务进行拆分,尽量让事务变小,变快,减小事务的颗粒度显得尤为重要;如下,提供两种常见的解决方案;

scs_susi的博客 1410

Verilog——反相器

反相器代码: module inv( A, Y );//A,Y是端口 //定义端口属性 input A; output Y; //定义输入输出关系 assign Y=~A;//Y等于A的反 endmodule //inv是module的名字

weixin_41788560的博客 9500

2024年Java最全分布式事务最经典的 7 种解决方案,一文彻底搞懂!!,程序员翻身之路

无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取并发度较高,无长期资源锁定。开发量较大,需要提供Try/Confirm/Cancel接口。

2301_82243232的博客 5051

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

Python 爬虫实战:赛事分析平台构建与比赛数据抓取

在体育赛事日益丰富的今天,对比赛数据的收集与分析对于运动员、教练团队以及体育爱好者都具有重要意义。通过构建一个赛事分析平台,我们可以系统地抓取、整理和展示各类比赛数据,为用户提供全面的赛事洞察。本文将深入讲解如何利用 Python 爬虫技术实现这一平台的构建,涵盖从目标网站分析到数据可视化展示的全过程。

u014481728的博客 3180

@Transactional导致的生产事故

@Transactional导致的生产事故 当我们遇到一个长事务的时候,尽量不要是用@Transactional注解 因为当高并发的时候可能出现:数据库监控平台一直收到告警短信,数据库连接不足,出现大量死锁;日志显示调用流程引擎接口出现大量超时;同时一直提示CannotGetJdbcConnectionException,数据库连接池连接占满。 原因:当 Spring 遇到该注解时,会自动从数据库连接池中获取 connection,并开启事务然后绑定到 ThreadLocal 上,对于@Transactio

爱上编程2705 1346

Oracle EBS Interface/API(43) -自定义AP发票状态说明API

在某项目,客户需求获得AP发票的状态说明,例如对账系统或者某些报表。由于标准系统未提供状态说明,需要通过AP发票的标准Form获得相关业务逻辑,然后自定义AP发票状态说明API。

陈显平的专栏-Oracle EBS 605

iServer RestApi实现WFS服务的增删改

作者:yjl 背景 近期很多小伙伴使用WFS ,OGC服务进行要素的增删改查。之前已经有同事写了关于基于Supermap iClient for Openlayer的wfs查询的方法,但是没有完整的的说明wfs的增删改的使用方法,本文章将介绍对wfs服务的增删改的使用方式 一、WFS-Transaction 操作 对于WFS-Transaction 操作详细方法可参考[文档],然后搜索wfs即...

SuperMap技术控 1743

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OGC WebGIS 常用服务标准(WMS/WMTS/TMS/WFS)速查

你在WMTS能力文档中,一定能看到这两个东西。但是我觉得官方文档废话太多,索性把自己的理解写了出来。笔者译为“瓦片阵集”,而TileMatrix即“瓦片阵”。很多人也许第一次看到这个词,一时半会儿想不通为什么是“Matrix”。直译来说,“Matrix”即矩阵假如这个矩阵的每个元素块上填充的是地图瓦片,那就能理解了。所以,TileMatrix指的就是某个层级的所有瓦片;自然而然,就是所有层级的TileMatrix“集”。举例,GeoServer中的内置瓦片阵集有一个是EPSG4326。...

树后树前 3193

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数据要素×旅游业:打开高质量发展新空间

将数据转化为可执行的洞察和解决方案,是数据要素价值的最终体现。2023年底,国家数据局联合文旅部等17部门印发的《“数据要素×”三年行动计划》明确提出“数据要素×文化旅游”,标志着数据要素在旅游业中的重要性被提升到国家战略层面。建立旅游大数据研究院,攻关多模态数据融合、游客情感计算等核心技术,开发集预订、客服、规划、导航等功能于一体的智能平台,是数据研发的重要方向。包含数据确权、定价、交易和监管四个方面的流通机制,是激活数据要素价值的关键。旅游数据交易中心的建立,标准体系的制定,为数据流通创造了条件。

AIwenIPgeolocation的博客 788

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

事务进阶和上传文件

事务进阶-rollbackForrollbackFor属性用于控制出现何种异常类型,回滚事务。

m0_74931752的博客 691

没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

<br />在windows2003下执行分布式事务的时候出现如下情况。<br />一、 问题现象<br />在执行分布式事务时,在sql server 2005下收到如下错误:<br />链接服务器"xxxxxxx"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "没有活动事务。"。<br />消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行<br />无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。<br

寒风雨(lanman)的专栏 4904

wms、wmts、wfs等地图服务区别

OGC OGC 全称是开放地理空间信息联盟(Open Geospatial Consortium),是一个非盈利的国际标准组织,它制定了数据和服务的一系列标准,GIS厂商按照这个标准进行开发可保证空间数据的互操作,致力于提供地理信息行业软件和数据及服务的标准化工作。 WMS WMS服务:Web Map Service,网络地图服务,它是利用具有地理空间位置信息的数据制...

二十同学 11万+

loadrunner中的响应时间与事务响应时间

1. 响应时间 事务是指用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容;另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户端时间的差值来计算用户操作响应时间的,如图1所示。 这里的响应时间不包含客户端GUI时间(例如浏览器解释页面所消耗的时间)。 前面说响应时间是用户请求发出和服务器返回之

he_jian1的专栏 2万+

事务相关知识点

点击上方「蓝字」关注我们0x01:事务的基本要素(ACID)原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚...

weixin_44742132的博客 129

EDM营销构成的五个因素详解

我们都知道,EDM营销样式千差万别,包含的内容丰富多样,但是,在众多纷繁的信息表象下,每封邮件都有5个关键要素构成,它们分别是:创立品牌效应、在设计中增加智能控制、激发欲购买、建立事务性服务信息、增加病毒式营销要素。 构成要素之一:建立事务性服务信息 事务性或者服务性基础邮件,并不以市场营销为目标。他们的目的是通知客户刚才所做的行为已经发生,是确认性邮件。它们可以极大的吸引客户的...

338

地图服务OGC

WMS:动态地图服务,在ArcGIS中我们经常利用理由的mxd文件发布的服务,就是这种地图服务,如果你的数据会变化,建议发这种服务。这种服务优点是动态,缺点是慢。WMS-C:可以理解为WMS的升级版,预先缓存瓦片,按需请求,提高了访问的速度。WMTS:相比WMS,牺牲了提供定制地图的灵活性,代之以通过提供静态数据(基础地图)来增强伸缩性,这些静态数据的范围框和比例尺被限定在各个图块内。WFS:支持要素的增删改等事务操作,支持空间和属性查询。WCS:主要是面向空间影像数据。

weixin_45188172的博客 919

SpringCloud 微服务入门:服务调用流程解析

《SpringCloud 微服务入门:服务调用流程解析》这篇博客旨在为读者介绍SpringCloud微服务的基础概念,并详细阐述其与单体项目的主要区别,特别是服务间调用的流程。文章通过一系列实际代码演示,帮助读者理解微服务架构下的服务调用过程,包括服务注册、发现以及负载均衡等关键步骤。重点不在于具体中间件(如Nacos、Seata、Sentinel和RabbitMQ)的细节,而是通过简洁的实例展现微服务如何实现不同服务之间的交互和通信。通过这篇博客,读者将对SpringCloud微服务有一个清晰的入门了解

m0_74123949的博客 2912

违反了primarykey约束怎么解决_基于RabbitMQ的分布式事务解决方案

这里的分布式指的是基于服务的柔性事务,柔性事务必须满足4大项:1、可查询操作:服务操作具有全局唯一的标识,操作唯一的确定的时间。2、幂等操作:重复调用多次产生的业务结果与调用一次产生的结果相同。一是通过业务操作实现幂等性,二是系统缓存所有请求与处理的结果,最后是检测到重复请求之后,自动返回之前的处理结果。3、TCC操作:Try阶段,尝试执行业务,完成所有业务的检查,实现一致性;预留必须的业务资源,...

weixin_39957186的博客 2820
上一篇: 要素服务之缓存
下一篇: Autodesk地理信息系统解决方案
MapGuide_Inside
博客等级 码龄17年 340粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值