文章
Michael Lei · 七月 6, 2021 阅读大约需 2 分钟
使用 Yape 解包 pButtons - 更新说明和快速指南

如果一张图片胜过千言万语,那么一段视频又价值几何? 当然胜过敲一个帖子。

请在 InterSystems Developers YouTube 观看我的“Coding talks”:

1. 使用 Yape 分析 InterSystems IRIS 系统性能。 第 1 部分:安装 Yape

 

在容器中运行 Yape。

2. Yape 容器 SQLite iostat InterSystems

提取和绘制 pButtons 数据,包括时间范围和 iostat。

0 0
0 47
文章
Michael Lei · 七月 6, 2021 阅读大约需 16 分钟
精华文章置顶--虚拟化大型数据库 - VMware CPU 容量规划

供应商或内部团队要求说明如何为 VMware vSphere 上运行的大型生产数据库进行 CPU 容量规划。

总的来说,在调整大型生产数据库的 CPU 规模时,有几个简单的最佳做法可以遵循:

  • 为每个物理 CPU 核心规划一个 vCPU。
  • 考虑 NUMA 并按理想情况调整虚拟机规模,以使 CPU 和内存对于 NUMA 节点是本地的。
  • 合理调整虚拟机规模。 仅在需要时才添加 vCPU。

通常,这会引出几个常见问题:

  • 由于使用超线程技术,VMware 创建的虚拟机的 CPU 数量可以是物理 CPU 数量的两倍。 那不就是双倍容量吗? 创建的虚拟机不应该有尽可能多的 CPU 吗?
  • 什么是 NUMA 节点? 我应该在意 NUMA 吗?
  • 虚拟机应该合理调整规模,但我如何知道什么时候合理?

我以下面的示例回答这些问题。 但也要记住,最佳做法并不是一成不变的。 有时需要做出妥协。 例如,大型生产数据库虚拟机很可能不适合 NUMA 节点,但我们会看到,其实是没问题的。 最佳做法是指必须针对应用程序和环境进行评估和验证的准则。

0 0
0 345
问题
deng hang · 六月 21, 2021
数据结构+排序算法

除了objectscript 自带的 list,array 数据结构以外,是否有存在其它已经实现好的数据结构,类似 java 里面 collection包一样,是否有已经实现好的排序工具,有没有针对集合类的sort工具。

0 6
0 80

(ECP) Caché 出色的可用性和扩展特性之一是企业缓存协议 (ECP)。 在应用程序开发过程中,如对使用 ECP 的分布式处理加以考虑,可以横向扩展 Caché 应用程序的架构。 应用程序处理可以调整为非常高的速率,处理能力从单个应用程序服务器扩展到最多 255 个应用程序服务器,并且不需要任何应用程序更改。

在我参与的 TrakCare 部署中,ECP 已广泛使用多年。 十年前,主要供应商之一的一台“大型”x86 服务器可能总共只有八个核心。 对于大型部署来说,ECP 是横向扩展商业服务器处理能力的方式,不适合单台昂贵的大型企业服务器。 即使是高核心数的企业服务器也有限制,因此 ECP 也用于扩展这些服务器上的部署。

0 0
0 110
文章
姚 鑫 · 七月 4, 2021 阅读大约需 4 分钟
第二十七章 定制SAX解析器的执行自定义实体解析

第二十七章 定制SAX解析器的执行自定义实体解析

执行自定义实体解析

XML文档可能包含对外部DTD或其他实体的引用。默认情况下,InterSystems IRIS尝试查找这些实体的源文档并解析它们。要控制InterSystems IRIS解析外部实体的方式,请使用以下步骤:

  1. 定义实体解析程序类。

此类必须在扩展%XML.SAX.EntityResolver,并且必须实现 resolveEntity()方法,该方法具有以下签名:

method resolveEntity(publicID As %Library.String, systemID As %Library.String) as %Library.Integer

每当XML处理器找到对外部实体(如DTD)的引用时,就会调用该方法;这里的public ID和systemID是该实体的Public和系统标识符字符串。

0 0
0 37
文章
姚 鑫 · 七月 3, 2021 阅读大约需 7 分钟
第二十六章 定制SAX解析器的使用方式

第二十六章 定制 SAX解析器的使用方式

每当InterSystems IRIS读取XML文档时,它都会使用InterSystems IRIS SAX(Simple API For XML)解析器。本章介绍用于控制系统间IRIS SAX解析器的选项。

关于IRIS SAX解析器

每当InterSystems IRIS读取XML文档时,都会使用InterSystems IRIS SAX解析器。

它是一个事件驱动的XML解析器,读取XML文件,并在找到感兴趣的项(如XML元素的开始、DTD的开始等)时发出回调。

(更准确地说,解析器与内容处理程序协同工作,内容处理程序发出回调。只有在自定义SAX接口时,此区别才很重要,如本章后面的“创建自定义内容处理程序”中所述。)

解析器使用标准Xerces-C++库,该库符合XML1.0推荐标准和许多相关标准。

可用的解析器选项

可以通过以下方式控制SAX解析器的行为:

  • 可以设置标志来指定要执行的验证和处理类型。

请注意,解析器始终检查文档是否为格式良好的XML文档。

0 0
0 40
文章
姚 鑫 · 七月 2, 2021 阅读大约需 5 分钟
第二十五章 添加和使用XSLT扩展函数

第二十五章 添加和使用XSLT扩展函数

自定义错误处理

当出现错误时,XSLT处理器(XalanSaxon)执行当前错误处理程序的error()方法,将消息作为参数发送到该方法。类似地,当发生致命错误或警告时,XSLT处理器会根据需要执行datalError()Warning()方法。

对于所有这三种方法,默认行为是将消息写入当前设备。

要自定义错误处理,请执行以下操作:

  • 对于XalanSaxon处理器,在创建%XML.XSLT.ErrorHandler的子类。在这个子类中,根据需要实现Error()FatealError()Warning()方法。

这些方法中的每一个都接受单个参数,即包含由XSLT处理器发送的消息的字符串。

这些方法不返回值。

0 0
0 32
文章
姚 鑫 · 七月 1, 2021 阅读大约需 3 分钟
第二十四章 执行XSLT转换

第二十四章 执行XSLT转换

执行XSLT转换

要执行XSLT转换,请执行以下操作:
- 如果使用的是Xalan处理器(对于XSLT 1.0),请使用%XML.XSLT.Transformer的以下类方法之一:
- TransformFile()——转换给定XSLT样式表的文件。
- TransformFileWithCompiledXSL()——转换一个文件,给定一个已编译的XSLT样式表。
- TransformStream()——转换给定XSLT样式表的流。
- TransformStreamWithCompiledXSL()——转换一个流,给定一个已编译的XSLT样式表。
- TransformStringWithCompiledXSL()——转换给定已编译XSLT样式表的字符串。

0 0
0 29
文章
姚 鑫 · 六月 30, 2021 阅读大约需 7 分钟
第二十三章 执行XSLT转换

第二十三章 执行XSLT转换概述

XSLT(Extensible StyleSheet Language Transformations,可扩展样式表语言转换)是一种基于XML的语言,用于描述如何将给定的XML文档转换为另一个XML或其他“人类可读”的文档。可以使用%XML.XSLT%XML.XSLT2包中的类来执行XSLT 1.02.0转换。

注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码, IRIS将使用本书前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。

0 0
0 27
文章
姚 鑫 · 六月 29, 2021 阅读大约需 9 分钟
第二十二章 计算XPath表达式

第二十二章 计算XPath表达式

XPath(XML路径语言)是一种基于XML的表达式语言,用于从XML文档获取数据。使用类中的%XML.XPATH.Document,可以轻松地计算XPath表达式(给定提供的任意XML文档)。

注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码,InterSystems IRIS将使用本书前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。

IRIS中XPath表达式求值概述

要使用InterSystems IRIS XML支持使用任意XML文档计算XPath表达式,请执行以下操作:

0 0
0 36
问题
e e · 六月 7, 2021
csp和webservice文件上传

为什么我用webservice上传文件比csp上传文件快?

webservice用的soap协议也得走http呀。csp直接处理http,少了xml的封装,按理来说应该更快。

经测试,1M的文件,csp慢了0.1s左右。在网关连接到1972后,有0.1s左右的停滞,不知道原因。

有什么办法能够使csp的文件上传速度比webservice快吗?

 

0 1
0 56
文章
姚 鑫 · 六月 28, 2021 阅读大约需 6 分钟
第二十一章 使用%XML.TextReader 导航文档

第二十一章 使用%XML.TextReader 导航文档

导航文档

要在文档中导航,请使用文本阅读器的以下方法:Read()ReadStartElement()MoveToAttributeIndex()MoveToAttributeName()MoveToElement()MoveToContent()Rewind()

导航到下一个节点

要移动到文档中的下一个节点,请使用read()方法。Read()方法返回TRUE值,直到没有更多节点可读为止(即,直到到达文档末尾)。前面的示例在如下所示的循环中使用了此方法:

0 0
0 22
文章
姚 鑫 · 六月 27, 2021 阅读大约需 5 分钟
第二十章 使用%XML.TextReader 节点属性

第二十章 使用%XML.TextReader 节点属性

节点属性

如前所述,类中的%XML.TextReader解析XML文档并创建一个text reader对象,该对象由一组与文档组件相对应的节点组成;节点类型在本章前面的“文档节点”中进行了描述。

当将焦点更改到其他节点时,text reader对象的属性将更新,以包含有关当前检查的节点的信息。本节介绍类中%XML.TextReader的所有属性。

AttributeCount

如果当前节点是元素或属性,则此属性指示元素的属性数。在给定元素中,第一个属性编号为1。对于任何其他类型的节点,此属性为0

Depth

指示文档中当前节点的深度。根元素位于深度1;根元素之外的项位于深度0。请注意,属性与其所属元素的深度相同。同样,错误或警告与导致错误或警告的项的深度相同。

EOF

如果读取器已到达源文档的末尾,则为true;否则为false。

0 0
0 26
文章
姚 鑫 · 六月 26, 2021 阅读大约需 6 分钟
第十九章 使用%XML.TextReader

第十九章 使用%XML.TextReader

%XML.TextReader类提供了一种简单、容易的方法来读取可能直接映射到InterSystems IRIS对象,也可能不直接映射到InterSystems IRIS对象的任意XML文档。具体地说,该类提供了导航格式良好的XML文档并查看其中信息(元素、属性、注释、名称空间URI等)的方法。该类还基于DTDXML架构提供完整的文档验证。但是,与%XML.Reader不同的是,%XML.TextReader不提供返回DOM的方法。如果需要DOM,请参阅前面的“将XML导入对象”一章。

注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码,InterSystems IRIS将使用前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。

0 0
0 26
文章
姚 鑫 · 六月 25, 2021 阅读大约需 10 分钟
第十八章 签署XML文档

第十八章 签署XML文档

本章介绍如何向XML文档添加数字签名。

关于数字签名文档

数字签名的XML文档包括一个或多个<Signature>元素,每个元素都是数字签名。
每个<Signature>元素对文档中的特定元素进行如下签名:

0 0
0 45
文章
姚 鑫 · 六月 15, 2021 阅读大约需 5 分钟
第七章 控制命名空间分配的外观

第七章 控制命名空间分配的外观

控制命名空间分配的外观

除了控制命名空间分配外,还可以控制命名空间分配在XML输出中的显示方式。具体地说,可以控制以下内容:

显式名称空间分配与隐式名称空间分配

将元素和属性分配给命名空间时,XML中有两种等效的表示形式,由编写器实例的SuppressXmlns属性控制。

为一个名为Person的对象生成XML输出,该对象被分配给名称空间“http://www.person.org”(通过前面讨论的namespace类参数)。
使用缺省输出(SuppressXmlns等于0)的示例如下:

0 1
0 40
文章
姚 鑫 · 六月 24, 2021 阅读大约需 6 分钟
第十七章 加密XML文档

第十七章 加密XML文档

本章介绍如何加密XML文档。

提示:发现在此命名空间中启用SOAP日志记录非常有用,这样就可以收到有关任何错误的更多信息。

关于加密的XML文档

加密的XML文档包括以下元素:

0 0
0 64
文章
姚 鑫 · 六月 23, 2021 阅读大约需 4 分钟
第十六章 创建或编辑DOM

第十六章 创建或编辑DOM

创建或编辑DOM

要创建DOM或修改现有DOM,请使用%XML.Document的以下方法在:

CreateDocument()

classmethod CreateDocument(localName As %String, 
                           namespace As %String) 
                           as %XML.Document 

在仅包含根元素的返回%XML.Document新实例。

AppendCharacter()

method AppendCharacter(text As %String)

将新的字符数据节点追加到此元素节点的子节点列表中。当前节点指针不变;此节点仍然是追加的子节点的父节点。

0 0
0 27
文章
Michael Lei · 六月 23, 2021 阅读大约需 13 分钟
使用 Ansible 预置 Caché 应用程序 - 第 1

部分 Ansible 帮助我解决了快速部署 Caché 和应用程序组件以进行数据平台基准测试的问题。 您可以使用相同的工具和方法来建立您的测试实验室、培训系统、开发或其他环境。 如果在客户站点部署应用程序,可以将大量部署自动化,并确保系统、Caché 和应用程序的配置符合您的应用程序最佳做法标准。

0 0
1 51
文章
Michael Lei · 六月 23, 2021 阅读大约需 3 分钟
Yape - 另一个 pButtons 提取程序(自动创建图表)

注(2019 年 6 月):许多内容发生了变化,最新的详细信息请参见此处
注(2018 年 9 月):自本帖首次发布以来,内容已经有了很大改动,我建议使用 Docker 容器版本,以容器形式运行的项目以及详细信息仍然在 GitHub 的同一个地址发布,您可以下载、运行并根据需要进行修改。

0 0
0 47
文章
Michael Lei · 六月 23, 2021 阅读大约需 15 分钟
最低限度的监控和警报解决方案

InterSystems 数据平台包括了用于系统监视和警报的实用程序及工具,但对于不熟悉构建于 InterSystems 数据平台(又名 Caché)的解决方案的系统管理员来说,他们需要知道从何处下手以及需要配置什么。

本指南以在线文档和开发者社区帖子为参考,介绍了实现最低限度的监视和警报解决方案的途径,以及如何启用和配置以下组件:

  1. Caché Monitor:扫描控制台日志并发送电子邮件警报。

  2. System Monitor:监视系统状态和资源,根据固定参数生成通知(警报和警告),同时跟踪整体系统运行状况。

  3. Health Monitor:对主要的系统和用户定义指标进行采样,并将它们与用户可配置的参数和既定的标准值进行比较,在样本超过适用或学习的阈值时生成通知。

  4. History Monitor:维护性能指标和系统使用情况指标的历史数据库。

  5. pButtons:每天按计划收集操作系统指标和 Caché 指标。

请记住,本指南是最低配置,所包含的工具灵活且可扩展,因此可在需要时提供更多功能。 本指南跳过了文档,让您直接上手。 您需要更深入地研究文档才能充分利用监视工具,同时,请考虑将本指南作为启动和运行的速查表。

0 0
0 87