文章 Michael Lei · 五月 23, 2022 阅读大约需 1 分钟 SQL Debug 小技巧 大家是不是经常遇到以下情况: 系统有 bug 但是无法在本地复现 你需要在受影响的实例中运行几行代码 能完整访问系统管理门户,但是没有终端或者管理控制台, 也不能访问 Studio, Atelier 或者 VSCode 你要怎么运行你的几行代码来测试??? #ObjectScript #调试 #Caché #InterSystems IRIS 0 0 0 121
文章 姚 鑫 · 六月 7, 2022 阅读大约需 9 分钟 第二章 数据类型(一) 第二章 数据类型(一) 指定 SQL 实体(如列)可以包含的数据类型。 描述 此处描述了以下主题: - 支持的 DDL 数据类型及其类属性映射表 - 数据类型优先级用于从具有不同数据类型的数据值中选择最具包容性的数据类型 - 日期、时间、PosixTime 和时间戳数据类型 - 使用SqlCategory和用户定义的标准 - 对 1840 年 12 月 31 日之前的日期的可配置支持 #SQL #Caché 0 0 0 87
文章 Michael Lei · 六月 21, 2022 阅读大约需 3 分钟 生成和校验验证码 如果您使用InterSystems技术开发了自己的网络应用,现在想在客户端进行验证码验证,以确定用户真实性使其更加安全。有一些现代框架可以解决验证码的问题,然而它们中的大多数需要互联网接入来生成代码,有时实施起来很复杂。考虑到图像识别已经非常成熟,您可以参考本文为基本例子。这就是为什么现在倾向于看到更多的模式识别验证码而不是单纯的阅读验证码。(例如,点击所有有店面的图片)。如果你需要更复杂的东西,请继续开发,改进这个代码并分享它。 继续阅读以了解如何使用这个基本的例子: Demo.Captcha class 使用这个类,你可以在一个物理目录上创建验证码图像文件,以便在你的应用程序上显示。请注意,创建图像的目录必须是可用的,以便你的Web应用程序访问这些图像。要创建验证码图像,请调用以下方法,将完整的文件名作为一个参数: 创建 image 文件 #CSP #ZEN #前端 #Caché 0 0 0 61
文章 姚 鑫 · 七月 3, 2022 阅读大约需 5 分钟 第十七章 进程内存 第十七章 进程内存 介绍 进程使用许多不同的资源来实现其目标。其中包括部分或全部 CPU 周期、内存、外部存储、网络带宽等。这篇文章是关于内存使用的。具体来说,它处理为数据存储分配的内存,例如: - 公共和私有变量 当第一次为它们分配值时,它们被分配了内存空间。在局部数组的情况下,局部变量名称加上所有下标的值的组合引用单个变量值。 除了包含极长字符串的变量外,变量会占用与 $STORAGE 相关的空间。包含极长字符串的变量以不同方式存储,并且不占用 $STORAGE 中的空间。 对象实例 每当实例化一个对象时,都会分配空间来保存对象的当前内容以及它所引用的对象。删除最后一个对象引用时返回该空间。 本地 I/O 缓冲区 将与该进程正在使用的设备相关联的 I/O 缓冲区存储在进程空间中。 #SQL #Caché 0 0 0 69
文章 姚 鑫 · 七月 17, 2022 阅读大约需 4 分钟 第八章 使用嵌入式 Python (五) 第八章 使用嵌入式 Python (五) 通过引用传递参数 用 ObjectScript 编写的方法中的参数可以通过值或引用传递。在下面的方法中,签名中第二个和第三个参数前面的 ByRef 关键字表示它们打算通过引用传递。 ClassMethod SandwichSwitch(bread As %String, ByRef filling1 As %String, ByRef filling2 As %String) { set bread = "whole wheat" set filling1 = "almond butter" set filling2 = "cherry preserves" } 从 ObjectScript 调用方法时,在参数前放置一个句点以通过引用传递它,如下所示: ##嵌入式 Python #Caché 0 0 0 75
文章 姚 鑫 · 八月 3, 2022 阅读大约需 3 分钟 第十六章 源代码文件 REST API 教程(一) 第十六章 源代码文件 REST API 教程(一) 本章提供了一个简短的教程,通过一系列示例演示如何使用源代码文件 REST API。它包含以下部分: API 基础 Atelier 用于访问 IRIS 源代码文件的 API 使用 REST 架构风格。 REST 的名字来源于“Representational State Transfer”。与许多 REST API 一样 IRIS 源代码文件 REST API 使用 HTTP GET、POST、PUT、DELETE 和 HEAD 方法,并将 JSON 用于传入和传出消息体。 #REST API #Caché 0 0 0 154
文章 姚 鑫 · 八月 14, 2022 阅读大约需 3 分钟 第一章 使用管理门户(一) [TOC] 第一章 使用管理门户(一) IRIS数据平台使您能够通过 Web 应用程序Management Portal 执行系统管理和管理任务。这种方法的一个优点是 IRIS 不必安装在用来管理安装的系统上。现在,通过网络远程管理系统,受制于为站点建立的访问控制,变得更加容易。跨版本兼容性问题被最小化,因为数据及其格式信息都直接来自被管理的系统。 默认情况下,管理门户在安装了IRIS 的专用 Web 服务器上运行。可以选择禁用专用 Web 服务器(使用 WebServer 设置)并配置不同的 Web 服务器来运行管理门户。 启动管理门户 可以通过以下方式启动管理门户: #Caché 0 0 0 214
文章 姚 鑫 · 八月 28, 2022 阅读大约需 2 分钟 第十五章 配置工作队列管理器类别 [toc] 第十五章 配置工作队列管理器类别 工作队列管理器使能够以编程方式将工作分配给多个并发进程,以提高性能。 当使用工作队列管理器初始化一组辅助job时,可以指定提供辅助job的类别。 类别是一个独立的worker job。 例如,假设为系统提供的SQL类别分配了最多8个worker。 然后,假设为与构建DeepSee仪表板相关的进程创建了一个类别,并为该类别分配最多4个worker。 如果在给定的时间内SQL池中的所有工作线程都被占用,DeepSee类别中的工作线程仍然可以立即处理工作项。 系统提供了两个不能删除的类别:Default 和 SQL。默认情况下,这些类别的最大工作线程数是动态的,相当于系统可用内核数的两倍。 #Caché 0 0 0 57
文章 姚 鑫 · 十月 17, 2022 阅读大约需 3 分钟 第十九章 CSP Session 管理 - %CSP.Session 对象 第十九章 CSP Session 管理 - %CSP.Session 对象 对象中的 %CSP.Session 包含有关当前Session的信息以及以编程方式控制会话各个方面的方法。 User Session Data — Data Property 可以使用其 Data 属性将 %CSP.Session 中的应用程序特定信息存储在对象中。数据是一种多维数组属性,可让关联多维数组中的特定信息。该数组的内容会在会话的整个生命周期内自动维护。 可以像使用任何其他 ObjectScript 多维数组一样在对象 Data 属性中使用 %CSP.Session。 例如,如果在 OnPage 方法中执行以下代码: #CSP #Caché 0 0 0 38
文章 姚 鑫 · 十二月 16, 2022 阅读大约需 2 分钟 第十五章 使用系统监视器 - 系统监控健康状态 第十五章 使用系统监视器 - 系统监控健康状态 基于发布到消息日志的通知,包括由IRIS 实例直接生成的系统警报以及由 System Monitor 和它的 Health Monitor 组件 System Monitor 在共享内存中的寄存器中维护一个总结整个系统健康状况的单一值。 在启动时,系统健康状态是根据在启动过程中发布到消息日志的系统(而不是系统监视器)警报的数量来设置的。系统监视器运行后,可以通过系统警报或系统监视器警报或警告来提升健康状态。自上次系统警报或系统监视器警报或警告发布后 30 分钟过去后,状态将清除到下一个较低级别。下表显示了如何确定系统健康状态。 #Caché 0 0 0 74
文章 姚 鑫 · 一月 11, 2023 阅读大约需 4 分钟 第四十一章 使用^%SYS.MONLBL检查例程性能 - 逐行监控报告示例 第四十一章 使用^%SYS.MONLBL检查例程性能 - 逐行监控报告示例 本节包含 ^%SYS.MONLBL 例程生成的各种报告的示例: Line-by-line Detail Report Line-by-line Summary Report Line-by-line Delimited Output Report Line-by-line Procedure Level Report Line-by-line Detail Report 以下是报告所选期刊实用程序的最小指标详细信息的示例,包括覆盖率分析。报告被发送到 monlbl_JRN_dtl.txt 文件,其中显示了一部分。 #Caché 0 0 0 59
文章 姚 鑫 · 二月 2, 2023 阅读大约需 4 分钟 第六十四章 使用 SNMP 监控 IRIS - 扩展 InterSystems IRIS MIB 第六十四章 使用 SNMP 监控 IRIS - 扩展 IRIS MIB 应用程序员可以添加托管对象定义并扩展 IRIS 子代理为其提供数据的 MIB。这不是一个完整的 MIB 编辑器或SNMP 工具包;相反,它是一种添加简单应用程序指标的方法,可以通过 SNMP 浏览或查询这些指标。 注意:对象必须遵循基本的 IRIS SNMP 结构,对 SNMP 表结构的支持有限(仅支持整数值索引),并且不会创建 SNMP 陷阱(请参阅新选项卡类中的 %Monitor.AlertOpens) 对管理信息的 SNMP 结构有一个基本的了解是很有帮助的。 要创建这些对象,请执行以下操作: #Caché 0 0 0 81
文章 Qiao Peng · 一月 8, 2021 阅读大约需 9 分钟 InterSystems IRIS 和 Caché 中的多模型数据并行处理 众所周知,InterSystems IRIS 提供了很多的工具来提升应用系统可伸缩性。尤其在提升数据并行处理能力方面,InterSystems 做了很多努力,例如在 SQL 查询中使用并行处理,以及在 IRIS中引入最具吸引力的特征:分片(sharding)。然而,许多成熟的开发成果最初是在 Caché中完成的,而且已经迁移到 IRIS 中。这些成熟的开发成果大都使用 DBMS(数据库管理系统)的多模型功能,实现在单独的数据库中共存不同的数据模型。例如, HIS qMS 数据库同时包含语义关系(电子病历)、传统关系(与 PACS 的交互)和层次数据模型(实验室数据以及与其他系统的集成)。这些数据模型大多是通过 SP.ARM 的 qWORD 工具(一种直接访问 Global的小型数据库管理系统)实现的。遗憾的是,由于查询未使用 IRIS SQL,无法利用并行查询处理的新功能进行扩展。 而且,随着数据库规模的不断增长,大型关系型数据库所固有的大多数问题开始出现在非关系型数据库中。这就是我们关注可用于扩展的并行数据处理技术的一个主要原因。 在本文中,我将围绕多年来在解决任务时用到的并行数据处理展开多方位讨论,而这些是我在大数据问题探讨中很少提到的。我将重点讨论数据库的技术改造,或者更确切地说,是数据库转换技术。 #大数据 #开发运维 #Caché #InterSystems IRIS 0 0 0 284
文章 姚 鑫 · 二月 8, 2021 阅读大约需 1 分钟 第二十八章 Caché 变量大全 $ZEOS 变量 第二十八章 Caché 变量大全 $ZEOS 变量 读取压缩流时包含流结束状态。 大纲 $ZEOS 大纲 $Zeos包含一个布尔值,该值指示是否已接收并处理传入(压缩)流的末尾。如果$Zeos=1,则已接收到压缩数据流的流结束。仅当流压缩/解压缩处于活动状态(/GZIP=1)时,$ZOS值才有意义。可以通过从OPEN或USE命令发出/GZIP命令关键字来激活流压缩/解压缩。 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 45
文章 姚 鑫 · 二月 24, 2021 阅读大约需 6 分钟 第四十六章 Caché 变量大全 ^$GLOBAL 变量 第四十六章 Caché 变量大全 ^$GLOBAL 变量 提供有关全局变量和进程私有全局变量的信息。 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 101
文章 姚 鑫 · 三月 11, 2021 阅读大约需 10 分钟 第八章 SQL修改数据库 第八章 SQL修改数据库 可以对现有的表使用SQL语句,也可以对相应的持久化类使用ObjectScript操作来修改InterSystems IRIS®数据平台数据库的内容。 不能修改定义为只读的持久类(表)。 使用SQL命令为维护数据的完整性提供了自动支持。 SQL命令是一个原子操作(全部或没有)。 如果表上定义了索引,SQL将自动更新它们以反映更改。 如果定义了任何数据或引用完整性约束,SQL将自动执行它们。 如果有任何已定义的触发器,执行这些操作将拉动相应的触发器。 插入数据 可以使用SQL语句或设置和保存持久化类属性将数据插入表中。 使用SQL插入数据 INSERT语句将一条新记录插入SQL表中。 可以插入一条记录或多条记录。 下面的示例插入一条记录。 它是插入单个记录的几种可用语法形式之一: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 263
文章 姚 鑫 · 三月 25, 2021 阅读大约需 11 分钟 第十三章 使用动态SQL(三) 第十三章 使用动态SQL(三) 执行SQL语句 有两种使用%SQL.Statement类执行SQL语句的方法: - %Execute(),它执行以前使用%Prepare()或%PrepareClassQuery()准备的SQL语句。 - %ExecDirect(),它同时准备和执行一条SQL语句。 也可以通过使用$SYSTEM.SQL.Execute()方法执行SQL语句而无需创建对象实例。此方法既准备又执行SQL语句。它创建一个缓存的查询。下面的终端示例显示Execute()方法: #SQL #Caché #iKnow #InterSystems IRIS for Health 0 0 0 113
文章 姚 鑫 · 四月 6, 2021 阅读大约需 13 分钟 第十八章 定义和使用存储过程 第十八章 定义和使用存储过程 本章介绍如何在IntersystemsIRIS®数据平台上定义和使用Intersystems SQL中的存储过程。它讨论了以下内容: 存储过程类型的概述 如何定义存储过程 如何使用存储过程如 何列出存储过程及其参数。 概述 SQL例程是可执行的代码单元,可以由SQL查询处理器调用。 SQL例程有两种类型:功能和存储过程。从支持FunctionName()语法的任何SQL语句中调用函数。存储过程只能由CALL语句调用。函数接受某些输入定向参数并返回单个结果值。存储过程接受某些输入,输入输出和输出参数。存储过程可以是用户定义的函数,返回单个值。 CALL语句也可以调用函数。 与大多数关系数据库系统一样,Intersystems Iris允许创建SQL存储过程。存储过程(SP)提供存储在数据库中的可调用可调用的程序,并且可以在SQL上下文中调用(例如,通过使用呼叫语句或通过ODBC或JDBC)。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 453
文章 Claire Zheng · 四月 21, 2021 阅读大约需 1 分钟 InterSystems Caché系统运维培训:InterSystems Caché架构、备份与恢复 近日,InterSystems极客俱乐部举办了线上直播“InterSystems Caché系统运维培训”,这是系列视频之一。InterSystems中国资深售前顾问吕正之讲解了“InterSystems Caché架构、备份与恢复”。 //player.bilibili.com/player.html?aid=247746045&bvid=BV1sv411L7qz&cid=327180934&page=1[这是一个嵌入式链接,但由于您拒绝了访问嵌入式内容所需的 Cookie,您无法直接在网站上进行查看。要查看嵌入式内容,您需要在 Cookie 设置中接受所有 Cookie。] #视频 #Caché 0 0 0 153
文章 姚 鑫 · 五月 5, 2021 阅读大约需 6 分钟 第三章 使用多维存储(全局变量)(一) 第三章 使用多维存储(全局变量)(一) 本章描述了使用多维存储(全局变量)可以执行的各种操作。 以全局变量存储数据 在全局节点中存储数据很简单:像对待任何其他变量一样对待全局变量。 区别在于对全局变量的操作是自动写入数据库的。 创建全局变量 创建新的全局变量不需要设置工作;只需将数据设置为全局变量即可隐式创建新的全局结构。可以创建全局变量(或全局变量下标)并通过单个操作将数据放入其中,也可以创建全局变量(或下标)并通过将其设置为空字符串将其保留为空。在ObjectScript中,这些操作是使用SET命令完成的。 下面的例子定义了一个名为Color(如果还不存在)的全局变量,并将值“Red”与之关联。 如果已经存在一个名为Color的全局变量,那么这些示例将其修改为包含新信息。 在ObjectScript中: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 59
文章 姚 鑫 · 五月 14, 2021 阅读大约需 2 分钟 Caché Global Caché Global 第一章 简介global☆☆☆☆☆ 第二章 全局变量结构(一)☆☆☆☆☆ 第二章 全局变量结构(二)☆☆☆☆☆ 第三章 使用多维存储(全局变量)(一)☆☆☆☆☆ 第三章 使用多维存储(全局变量)(二)☆☆☆☆☆ #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 170
文章 姚 鑫 · 五月 25, 2021 阅读大约需 7 分钟 第六章 从POP3服务器提取电子邮件 第六章 从POP3服务器提取电子邮件 从POP3服务器提取电子邮件 与POP3服务器通信 如果拥有所需的权限,并且邮件服务器正在运行,则可以使用POP3协议从该服务器下载和处理电子邮件。通常,要与POP3服务器通信,请登录,执行一系列影响邮箱的操作,然后提交或回滚任何更改。要在系统间IRIS中执行此操作,请执行以下操作: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 90
文章 Michael Lei · 六月 15, 2021 阅读大约需 8 分钟 InterSystems 最佳实践之--LVM PE 条带化使超融合存储吞吐量最大化 本帖概述了通过为 InterSystems 数据平台(InterSystems IRIS、Caché 和 Ensemble)上的数据库磁盘创建 LVM 物理盘区 (PE) 条带来实现低延迟存储 IO 的最佳实践配置,并提供了有用链接。 一致的低延迟存储是获得最佳数据库应用程序性能的关键。 例如,对于在 Linux 上运行的应用程序,经常在数据库磁盘中使用逻辑卷管理器 (LVM) ,因为它能够扩展卷和文件系统,或者为在线备份创建快照。 对于数据库应用程序,在使用 LVM PE 条带化逻辑卷的情况下,并行写入还可提高数据 I/O 的效率,从而有助于提高大规模连续读取和写入的性能。 #InterSystems 业务解决方案和架构 #Red Hat Enterprise Linux (RHEL) #平台 #系统管理 #部署 #Caché #InterSystems IRIS 0 0 0 366
文章 姚 鑫 · 六月 21, 2021 阅读大约需 3 分钟 第十四章 XML获取当前节点信息 第十四章 XML获取当前节点信息 DOM节点类型 %XML.Document和%XML.Node类识别以下DOM节点类型: Element ($$$xmlELEMENTNODE) 请注意,这些宏在%xml.DOM.inc包含文件中定义。 Text ($$$xmlTEXTNODE) Whitespace ($$$xmlWHITESPACENODE). 其他类型的DOM节点被简单地忽略。 请以下XML文档: #Caché 0 0 0 98
文章 Claire Zheng · 七月 6, 2021 Caché从零基础到精通-第2讲_初识M程序 //player.bilibili.com/player.html?aid=931566673&bvid=BV1eM4y1M7yM&cid=365368035&page=1[这是一个嵌入式链接,但由于您拒绝了访问嵌入式内容所需的 Cookie,您无法直接在网站上进行查看。要查看嵌入式内容,您需要在 Cookie 设置中接受所有 Cookie。] #视频 #Caché 0 0 0 118
文章 姚 鑫 · 七月 14, 2021 阅读大约需 5 分钟 第三章 处理文件和目录名 第三章 处理文件和目录名 %Library.File类提供了几个可用于处理文件名和目录名的类方法。在大多数情况下,文件和目录不需要存在即可使用这些方法。 获取文件名和目录名 %Library.File类提供可用于获取部分文件名和目录名的类方法。 在给定完整路径名的情况下,使用GetDirectory()和GetFilename()分别获取目录和短文件名。对于此方法,不允许使用部分目录名。 DHC-APP>set filename = "e:\temp\config.txt" DHC-APP>write ##class(%File).GetDirectory(filename) E:\temp\ DHC-APP>write ##class(%File).GetFilename(filename) config.txt 在给定文件名的情况下,使用CanonicalFilename()从根目录获取完整路径: #Caché 0 0 0 74
文章 姚 鑫 · 八月 11, 2021 阅读大约需 2 分钟 参数关键字Final,Flags,Internal,映射关键字Internal 第八十九章 参数关键字 - Final 指定此参数是否为final(不能在子类中重写) 用法 要指定参数为final最终参数,请使用以下语法: Parameter name As parameter_type [ Final ] = value; 否则,请省略此关键字或将该词放在该关键字之前。 详解 标记为Final的类成员不能在子类中被重写。 默认 如果省略此关键字,则该参数不是最终参数。 第九十章 参数关键字 - Flags 修改此参数的用户接口类型(在Studio中)。 用法 要修改此参数的用户接口类型(在Studio中),请使用以下语法: #Caché 0 0 0 85
文章 姚 鑫 · 八月 27, 2021 阅读大约需 2 分钟 Storage关键字SqlRowIdProperty,SqlTableNumber,State,StreamLocation,Type 第153章 Storage关键字 - SqlRowIdProperty 指定SQL RowId属性。 大纲 <SqlRowIdProperty>prop</SqlRowIdProperty> 值 该元素的值是一个SQL标识符。 描述 此元素仅由从早期InterSystems产品迁移的类使用。 默认值 <SqlRowIdProperty>元素的默认值为空字符串。 第154章 Storage关键字 - SqlTableNumber 指定内部SQL表号。 大纲 <SqlTableNumber>123</SqlTableNumber> 值 该元素的值是一个表号。 #Caché 0 0 0 71
文章 Claire Zheng · 九月 2, 2021 Caché从零基础到精通-第21讲 输出命令 //player.bilibili.com/player.html?aid=292730349&bvid=BV16f4y1H7eM&cid=400717154&page=1[这是一个嵌入式链接,但由于您拒绝了访问嵌入式内容所需的 Cookie,您无法直接在网站上进行查看。要查看嵌入式内容,您需要在 Cookie 设置中接受所有 Cookie。] #视频 #Caché 0 0 0 104
文章 姚 鑫 · 九月 12, 2021 阅读大约需 9 分钟 第十四章 SQL命令 CREATE TABLE(一) 第十四章 SQL命令 CREATE TABLE(一) 创建表 #SQL #Caché 0 0 0 53