Caché Shadow
上次介绍了使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更。但早期的Caché并不支持镜像,例如Caché 2008,它只支持Shadow。
在这些早期版本上是否也可以实利用Journal实现类似CDC的功能呢?答案是肯定的,就是利用Shadow服务器的Dejournaling filter routine (Dejournaling过滤器routine)。
Dejournaling filter routine
InterSystems Caché的 Dejournaling过滤器routine是一个用户自定义的routine,用于在Shadow服务器上过滤Journal记录。当配置了Dejournaling 过滤器后,Shadow服务器在redo journal前会自动调用Dejournaling过滤器routine。该routine传入参数以下:
程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
第十五章 使用管理门户SQL接口(二)
过滤模式内容
Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容
1. 通过单击SQL interface页面顶部的Switch选项,指定希望使用的名称空间。
这将显示可用名称空间的列表,可以从中进行选择。
2. 应用筛选器或从模式下拉列表中选择模式。
可以使用Filter字段通过输入搜索模式来筛选列表。
可以在一个模式或多个模式中筛选模式,或筛选表/视图/过程名(项)。
搜索模式由模式名、点(.
)和项目名组成——每个名称由文字和通配符的某种组合组成。字面值不区分大小写。
通配符是:
第二章 定义和构建索引(四)
位片索引
当数字数据字段用于某些数值运算时,位片索引用于该字段。位片索引将每个数值数据值表示为二进制位串。位片索引不是使用布尔标志来索引数值数据值(如在位图索引中那样),而是以二进制值表示每个值,并为二进制值中的每个数字创建一个位图,以记录哪些行的该二进制数字具有1。这是一种高度专门化的索引类型,可以显著提高以下操作的性能:
SUM
、COUNT
或AVG
Aggregate计算。(位片索引不用于COUNT(*)
计算。)。位片索引不用于其他聚合函数。
- 指定的字段
TOP n ... ORDER BY field
- 在范围条件运算中指定的字段,
WHERE field > n
或 WHERE field BETWEEN lownum AND highnum
、
SQL优化器确定是否应该使用定义的位片索引。通常,优化器仅在处理大量(数千)行时才使用位片索引。
我有一个SQL查询,我想使用SQL外向适配器从Caché Ensemble针对MS SQL运行。如果我直接从MS SQL Studio运行此查询,则最多需要7秒钟的时间,并返回大约50万行。该行仅包含一列,它是一个大小均相同的数字,如果我在Ensemble生产环境中运行此查询,它将一直运行但不会返回响应。同样的查询在Enssemble环境外的caché中运行,将结果写入文件,返回的结果大约需要3分钟完成。但是如果我把结果加载到一个列表或记录图(Record Map)中,它就会一直运行下去。 能加载到记录图或列表中的数据行数是否有限制,是什么原因导致了这种情况的发生?这个查询所返回的文件大约是5.7MB。
SQL ODBC Connection query running longer than expected
我想将图像转换为base64。我只有一个远程图像URL。
请提建议允许使用cors来源的解决方案。
How to Convert Image located on remote location to base64 from image url
I want to convert the image to base64.
I have only a remote image URL.
please suggest the solution with allow cors origin.
你好,
我要求将具有内置在Caché中的基于字符的界面的几个屏幕转换为Java中基于Web的界面,同时仍将Cache作为后端,这意味着数据库将保持不变。想知道我们在市场上是否有任何工具可以帮助您做到这一点,同时考虑到Caché中的这些屏幕正在使用MUMPS代码。
如果我们没有任何工具,也希望有人也分享他们在手动转换方面的经验。
Cache code conversion tool
Hi,
第一章 单元测试概述
本教程的第一部分概述了单元测试。完成本教程的这一部分后,将能够:
- 定义单元测试并区分单元测试和集成测试
- 列出单元测试的几个好处
- 描述InterSystems IRIS %UnitTest
包和xUnit
测试框架之间的相似性。
- 列出软件开发中测试优先方法经常声称的几个好处。
什么是单元测试?
单元测试是对单个代码模块的正确性的测试,例如,方法或类的测试。通常,开发人员在开发代码时为其代码创建单元测试。典型的单元测试是一种执行方法的方法,该方法测试并验证该方法是否为给定的一组输入生成了正确的输出。
单元测试不同于集成测试。集成测试验证了一组代码模块交互的正确性。单元测试仅单独验证代码模块的正确性。一组代码模块的集成测试可能会失败,即使每个模块都通过了单元测试。
为什么要进行单元测试?
单元测试提供了许多好处,包括:
第一章 发送HTTP请求
本主题介绍如何发送HTTP
请求(如POST
或GET
)和处理响应。
HTTP请求简介
可以创建%Net.HttpRequest
的实例来发送各种HTTP
请求并接收响应。此对象相当于Web浏览器,可以使用它发出多个请求。它会自动发送正确的cookie
,并根据需要设置Referer
标头。
要创建HTTP请求,请使用以下常规流程:
第十三章 使用SSH
%Net.SSH
软件包支持SSH
(安全外壳)通信。本主题简要介绍此包中的类。
创建SSH会话
%Net.SSH.Session
表示SSH
会话。要使用此类,请执行以下操作:
- 创建类的实例。
- 使用
Connect()
实例方法连接到服务器。
- 使用
AuthenticateWithKeyPair()
或AuthenticateWithUsername()
向服务器验证身份。
- 使用
%Net.SSH.Session
的其他方法执行进出远程系统的单个文件的SCP(安全复制)操作、执行远程命令、传输TCP通信或执行SFTP操作。
例如,使用SFTP
将会话用于SFTP
操作。此方法通过引用返回可用于SFTP
操作的%Net.SSH.SFTP
实例。
本帖概述了通过为 InterSystems 数据平台(InterSystems IRIS、Caché 和 Ensemble)上的数据库磁盘创建 LVM 物理盘区 (PE) 条带来实现低延迟存储 IO 的最佳实践配置,并提供了有用链接。
一致的低延迟存储是获得最佳数据库应用程序性能的关键。 例如,对于在 Linux 上运行的应用程序,经常在数据库磁盘中使用逻辑卷管理器 (LVM) ,因为它能够扩展卷和文件系统,或者为在线备份创建快照。 对于数据库应用程序,在使用 LVM PE 条带化逻辑卷的情况下,并行写入还可提高数据 I/O 的效率,从而有助于提高大规模连续读取和写入的性能。
第六章 控制名称空间的使用
控制名称空间的使用
如将对象投射到XML
中所述,可以将类分配给名称空间,以便相应的XML元素属于该名称空间,还可以控制类的属性是否也属于该名称空间。
将类中的对象导出为XML时,%XML.Write
提供其他选项,例如指定元素是否为其父级的本地元素。本节包括以下主题:
- 默认情况下,
%XML.Writer
如何处理命名空间
- 如何指定本地元素是否合格
- 如何指定元素是否为其父元素的本地元素
- 如何指定属性是否合格
- 命名空间分配方式的摘要
注意:在InterSystems IRIS XML支持中,可以按类指定名称空间。通常,每个类都有自己的命名空间声明;但是,通常只需要一个或少量的命名空间。还可以在逐个类的基础上指定相关信息(而不是以某种全局方式)。这包括控制元素是否为其父元素的本地元素以及子元素是否合格的设置。为简单起见,建议使用一致的方法。
第二十三章 执行XSLT转换概述
XSLT(Extensible StyleSheet Language Transformations,可扩展样式表语言转换)是一种基于XML的语言,用于描述如何将给定的XML文档转换为另一个XML或其他“人类可读”的文档。可以使用%XML.XSLT
和%XML.XSLT2
包中的类来执行XSLT 1.0
和2.0
转换。
注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码, IRIS将使用本书前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。
刚才好像发了一遍没成功
试用IRIS,关闭了workspace之后;再打开、没有project. 只能从打开最近的workspace中找,怎么回事噢?哈哈哈哈哈
第二十九章 类关键字 - PropertyClass
向该类添加属性参数。
用法
要向该类添加属性参数,请使用以下语法:
Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members }
其中·propertyclasslist·是下列之一:
[ PropertyClass = PropClass.MyPropertyClass ]
详情
如果需要添加自定义属性参数,请执行以下操作:
第六十一章 方法关键字 - Deprecated
指定不推荐使用此方法。该关键字被类编译器忽略,只是提供了一个人类可读的指示符,表明该方法已被弃用。
用法
要指定不推荐使用此方法,请使用以下语法:
Method name(formal_spec) As returnclass [ Deprecated ]
{ //implementation }
否则,省略此关键字或将单词Not
放在关键字的前面。
第六十二章 方法关键字 - ExternalProcName
当此方法在外部数据库中用作存储过程时,指定其名称。仅当方法被投影为存储过程时适用。
若要在方法用作外部数据库中的存储过程时重写该方法的默认名称,请使用以下语法:
这些API虽然在IRIS 2020.1中已经实现了,但没有被放在官方文档里。
这都是直接从Class Reference中提取的,我只是收集了它来创建第一个概述。
ObjectScript的本地API遵循其他语言平台上使用的API。它从一个静态API开始,允许用户使用Iris Connection连接到IRIS命名空间,无论是本地还是远程。连接接口允许用户实例化IRIS本地API类(%Net.DB.Iris)。然后,该实例可用于访问IRIS全局数组,管理事务,调用例程或类中实现的函数和方法,以及实例化远程迭代器。
第二章 SQL命令 ALTER TABLE(二)
删除列限制
DROP COLUMN
可以删除指定为逗号分隔列表的多个列定义。每个列出的列名后面必须紧跟其RESTORY
或CASCADE
(如果未指定,则默认为RESTRICE
)和%DELDATA
或%NODELDATE
(如果未指定,则默认为%NODELDATA
)选项。
默认情况下,删除列定义不会从数据映射中删除存储在该列中的任何数据。
要同时删除列定义和数据,请指定%DELDATA
选项。
删除列定义并不删除相应的列级特权。
例如,授予用户在该列上插入、更新或删除数据的权限。
这将产生以下后果:
- 如果删除了一个列,然后添加了另一个同名的列,那么用户和角色将在新列上拥有与旧列相同的特权。
- 删除列后,不可能撤销该列的对象特权。
由于这些原因,通常建议在删除列定义之前使用REVOKE
命令从列中撤销列级特权。
众所周知,医生和护士是临床一线最主要的决策者和执行者,二者的紧密衔接与顺畅合作是医疗质量和患者转归的重要决定因素。其中,医生更侧重于病例分析、诊断确认和方案制定,护士则在医嘱执行、任务管理和患者教育方面更胜一筹。将上述临床工作内容映射到医疗信息系统的使用时,我们不难发现,护士与系统的交互更为频繁、复杂和多样。因此,尽管本系列标注为“临床医生与信息系统”,本文则主要探讨如何应用便捷、清晰、高效、完整的系统功能给予护士更多支持。
亲爱的社区开发者们,大家好!
我们诚挚地邀请您参加与InterSystems开发者竞赛(InterSystems IRIS Analytics)竞赛优胜者交流 online meetup!
日期 & 时间: 美国东部时间2021年9月17日(周五)12:00;北京时间2021年9月18日(周六)0:00-1:00
在此次线上交流会上,您将了解到:
- 优胜者简介
- 优胜者提交项目的简短demo
- 关于项目中使用到的技术的开放探讨、问答,以及下一场开发者竞赛的安排。

InterSystems IRIS 基础:连接一个 IDE
本文档告诉您如何快速连接您的集成开发环境(IDE),用于 ObjectScript、Java、.NET、Python 或 JavaScript/Node.js 的集成开发环境连接到 InterSystems IRIS® 的一个实例,并使用从 GitHub 下载的模板文件验证您是否已经成功连接。
此外,接下来的两节还包括以下内容:
• 部署 InterSystems IRIS
列出用于部署 InterSystems IRIS 的已授权和免费评估实例的选项。如果您还没有一个可以使用的实例,请查看本节。
• InterSystems IRIS 连接信息
详细介绍了将 IDE 连接到已授权或免费的 InterSystems IRIS 实例,以及以其他方式与之进行交互所需的信息 ,并解释了如何获得实例的信息。无论您想用哪个 IDE 连接到 InterSystems IRIS,都要查看涉及您所使用的实例类型的部分。
1 部署 InterSystems IRIS
本节涵盖了已授权的实例和免费的评估实例。
第三十章 SQL命令 DROP AGGREGATE
删除用户定义的聚合函数。
大纲
DROP AGGREGATE name
参数
name
- 要删除的用户定义聚合函数的名称。名称可以是限定的(schema.aggname
),也可以是非限定的(aggname
)。非限定名称采用默认架构名称。
描述
DROP Aggregate
命令删除用户定义的聚合函数(UDAF
)。使用CREATE Aggregate
命令创建用户定义的聚合函数。
如果尝试删除不存在的UDAF,SQL会发出SQLCODE-428
错误,并显示如下消息:User Defined Aggregate Function Sample.SecondHighest does not exist
.
第四十二章 SQL命令 EXPLAIN
返回指定查询的查询计划。
第五十一章 SQL命令 HAVING(二)
In和%INLIST谓词
IN
谓词用于将值与一系列非结构化的项进行匹配。
%INLIST
谓词是 IRIS扩展,用于将值与列表结构的元素进行匹配。
使用任一谓词,都可以执行相等比较和子查询比较。
在中有两种格式。第一个用作使用与OR运
算符链接在一起的多个相等比较的速记。例如:
SELECT Name, Home_State FROM Sample.Person
GROUP BY Home_State
HAVING Home_State IN ('ME','NH','VT','MA','RI','CT')
如果Home_State
等于括号列表中的任意值,则计算为TRUE
。列表元素可以是常量或表达式。排序规则适用于IN比较,因为它适用于相等性测试。默认情况下,IN
比较使用字段定义的排序规则类型;默认情况下,字符串字段定义为SQLUPPER
,不区分大小写。
本文档解释了如何使用 Native API 从 Node.js 应用程序访问 InterSystems IRIS® globals。Native API 还允许您运行 ObjectScript 方法、函数和例程。在本文中,您将首先连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个 global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 Node.js 应用程序中执行。
为了让您体验 Native API,而又不陷入细节的困境,本次探索特意设计得很简单。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。本文档末尾提供的参考资料将使您对在生产中使 Native API 的情况有一个很好的了解。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。