搜索​​​​

清除过滤器
文章
Claire Zheng · 三月 23, 2021

【视频】告诉你从Caché数据库升级到InterSystems IRIS数据平台的N个理由

2021年3月19日,在InterSystems极客俱乐部首次进行的直播课中,InterSystems中国售前支持专家刘皆良( @Jieliang.Liu )分享了一个有趣的主题:告诉你从Caché数据库升级到InterSystems IRIS数据平台的N个理由。直播视频贴上,欢迎大家围观。
文章
姚 鑫 · 九月 24, 2022

第四十二章 使用多个 IRIS 实例(二)

# 第四十二章 使用多个 IRIS 实例(二) # 控制 `IRIS` 实例 `iris` 命令支持终端以外的许多功能,并以 `iris function instname arguments` 格式调用,其中 `instname` 是在安装期间选择的实例名称,参数取决于函数。 重要提示: `iris help` 命令显示所有命令函数和参数; `IRISHelp.html` 文件位于 `install-dir\Help` 目录中。 `iris` 命令的某些功能在本文档中没有列出,但在帮助显示中显示。 ```java C:\InterSystems\IRISHealth\bin>iris help usage: iris start [] to start instance , optionally using the specified .cpf file. An optional /EmergencyId=Username,Password can be used to start InterSystems IRIS in emergency mode. When the EmergencyId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to InterSystems IRIS is governed by InterSystems IRIS login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When InterSystems IRIS is started in emergency mode, the IRIS control service is not used. This means that if you log out of Windows, all the InterSystems IRIS processes will immediately exit. or: iris startnostu to start instance without running ^STU. or: iris stop to shut down instance . or: iris stopnoshut to shut down instance without running user shutdown routines. or: iris stopstart to shut down and restart instance . Note: An optional /nofailover argument can be specified for stop, stopnoshut, or stopstart to not trigger a mirror failover. or: iris force to force down instance . or: iris [ run OR console OR terminal ] to run InterSystems IRIS in programmer mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris runw [] to run InterSystems IRIS routine in application mode with no input/output device for $Principal using the optional namespace. When run from a batch script, iris will wait for the InterSystems IRIS process to terminate before returning. The exit code from the InterSystems IRIS process will be returned by iris. Note: An optional /Title="Title string" can specify the console or terminal title bar text. or: iris iristraystart to start IRISTray for instance . or: iris iristraystop to stop IRISTray for instance . or: iris licmanagerstop to stop licmanager running in instance . or: iris all [> outputfile] to list all installed instances. or: iris allw [> outputfile] to list (wide format) all installed instances. or: iris list [] [> outputfile] to list information about all installed instances or the specified instance. or: iris qlist [] [> outputfile] to display a quick list of information about all installed instances or the specified instance, in a format suitable for parsing in command scripts. The record for an instance contains fields separated by "^" (carats): Field 1: instance name Field 2: instance directory Field 3: version identifier Field 4: current status for the instance Field 5: configuration file name last used Field 6: SuperServer port number Field 7: WebServer port number Field 8: JDBC Gateway port number Field 9: Instance status (e.g., ok, warn, alert) Field 10: Product name of the instance Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery) Field 12: Mirror Status (e.g., Primary, Backup, Connected) or: iris serverlist [> outputfile] to list information about all defined servers. Note: When [> outputfile] is present, output is redirected to the file instead of being displayed on the terminal. or: iris telnetstop to stop the InterSystems IRIS TELNET daemon. or: iris telnettrace to toggle the TELNET trace state. or: iris iristrmdstop to stop the InterSystems IRIS terminal daemon. Note: iris often displays error information in a message box. You can suppress the message box containing error information by adding "quietly" (without the quotation marks) as the final argument to the iris command. or: iris help [display] to show this help. If display is specified the help is displayed in a browser window. ``` IRISHelp.html ``` IRIS.EXE USAGE: iris start [] Starts InterSystems IRIS instance , optionally using the specified .cpf file. Note: An optional /EmergencyId=Username,Password can be used to start InterSystems IRIS in emergency mode. When the EmergencyId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to InterSystems IRIS is governed by InterSystems IRIS login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When InterSystems IRIS is started in emergency mode, the IRIS control service is not used. This means that if you log out of Windows, all the InterSystems IRIS processes will immediately exit. iris startnostu Starts instance without running ^STU. iris stop Shuts down instance . iris stopnoshut . Shuts down instance without running user shutdown routines. iris stopstart Shuts down and restarts instance . Note: An optional /nofailover argument can be specified for stop, stopnoshut, or stopstart. Specifying this option prevents triggering a mirror failover. iris force Forces down instance . iris [ run OR console OR terminal ] Runs InterSystems IRIS in programmer mode with [ no-device OR console OR terminal ] for $Principal. iris [ run OR console OR terminal ] Runs InterSystems IRIS routine in application mode with [ no-device OR console OR terminal ] for $Principal. iris [ run OR console OR terminal ] Runs InterSystems IRIS routine in in application mode with [ no-device OR console OR terminal ] for $Principal. iris runw [] Runs InterSystems IRIS routine in application mode with no input/output device for $Principal using the optional namespace. When run from a batch script, iris will wait for the InterSystems IRIS process to terminate before returning. The exit code from the InterSystems IRIS process will be returned by iris. Note: An optional /Title=”Title string” can specify the console or terminal title bar text. Examples: Run ^%SS in a console in the i181u instance: iris console i181u ^^%SS Run ^%SS in an InterSystems IRIS terminal in the i181u instance: iris terminal i181u ^^%SS Start ^%SS running in an InterSystems IRIS terminal in the i181u instance from a batch file (extra % required): iris terminal i181u ^^%%SS Run sub^test(“hello”) in an InterSystems IRIS terminal in the USER namespace of the IRIS instance i181u: iris terminal i181u sub^^test(\"hello\") USER Note: The namespace parameter only works if the login record for the user does not specify a namespace. If the user security record specifies a namespace, then it will override the namespace parameter. iris iristraystart Starts IRISTray for instance . iris iristraystop Stops IRISTray for instance . iris licmanagerstop Stops the licmanager process running in instance . iris all [> outputfile] Lists all installed instances. The status for each instance is indicated by: "dn" - InterSystems IRIS instance is not running "st" - InterSystems IRIS instance is starting or stopping. "up" - InterSystems IRIS instance is running on this machine " " - (blank) status unavailable. Instance is probably partly up without ^STU completing. Logins are disabled. iris allw [> outputfile] Lists all installed instances in wide format. iris list [] [> outputfile] Lists brief information about all installed instances, or the specified instance. The status for each instance is indicated by: "down" - InterSystems IRIS instance is not running "starting or stopping" - InterSystems IRIS instance is starting or stopping. "running" - InterSystems IRIS instance is running on this machine "Incomplete start or stop, logins disabled" " - Instance is probably partly up without ^STU completing. Logins are disabled. iris qlist [] [> outputfile] Display a quick list of information about all installed instances, or the specified instance, in a format suitable for parsing in command scripts. The record for an instance contains fields separated by "^" (carats): Field 1: instance name Field 2: instance directory Field 3: version identifier Field 4: current status for the instance Field 5: configuration file name last used Field 6: SuperServer port number Field 7: WebServer port number Field 8: JDBC Gateway port number Field 9: Instance status (e.g., ok, warn, alert) Field 10: Product name of the instance Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery) Field 12: Mirror Status (e.g., Primary, Backup, Connected) iris serverlist [> outputfile] Lists information about all defined servers. Note: When [> outputfile] is present, output is redirected to the file instead of being displayed on the terminal. iris telnetstop Stops the InterSystems IRIS TELNET daemon. iris iristrmdstop Stops the InterSystems IRIS terminal daemon. iris help [display] Writes the help text to the terminal or, if display is specified, displays the help in a browser window. Error reporting: Return value: If the control command succeeds, it returns 0. Otherwise it usually returns 1 or some other non-zero value to indicate an error. You can check the return value by inspecting the ErrorLevel environment variable. Message box: iris often displays error information in a message box. You can suppress the message box containing error information by adding “quietly” (without the quotation marks) as the final argument to the iris command. This may be useful when running an unattended .bat script. For example: iris stop xxxx quietly if not errorlevel 0 … ``` `iris` 命令的行为因平台而异,如下表所述: ## `Unix®`、`Linux` 和 `macOS` 上的 iris 命令 **注意: `iris` 命令通常会在消息框中显示错误信息。可以通过安静地添加作为 `iris` 命令的最后一个参数来抑制此消息框,该命令以非交互方式运行该命令,并带有最少的对话框。此参数对其他命令也很有用,例如当想要关闭实例而无需确认命令时。** - `iris all` 列出所有已安装实例的摘要信息,每行一个实例,如下所述。 ```java C:\InterSystems\IRISHealth\bin>iris all Instance Version ID Port Directory ------------- ---------- ---- --------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` 注意:如果需要完整的信息,例如用于解析或报告目的,请使用 `iris list`。 ```java C:\InterSystems\IRISHealth\bin>iris list Instance 'IRISHealth' (Custom installation) directory: 'C:\InterSystems\IRISHealth' versionid: '2022.1.0.114.0' conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773) status : 'running, since Sun Sep 4 16:16:54 2022' Product : InterSystems IRISHealth ``` - `iris allw` 为每个实例列出与 `iris all` 相同的信息,而不包含长字段值。可能会产生超过 `80` 个字符的行。 ```java C:\InterSystems\IRISHealth\bin>iris allw Instance Name Version ID Port Directory ------------------------------- ---------------------------- ----- -------------------------------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` - `iris console instname [arguments]` 在操作系统命令窗口而不是`Terminal` 窗口中打开 `Terminal` 。同 `iris terminal` ![image](5F79276A5C594D8099232571CD0B79AD) - `iris force instname` 强制关闭实例。 ```java C:\InterSystems\IRISHealth\bin>iris force irishealth ``` - `iris help` [参数] 显示有关 `iris` 命令的最新信息。`start`, `stop`, `force` — 显示启动、停止和强制功能的特定功能帮助。 ```java C:\InterSystems\IRISHealth\bin>iris help force C:\InterSystems\IRISHealth\bin>iris help start C:\InterSystems\IRISHealth\bin>iris help stop ``` - `iris list [arguments]` 显示有关已安装 `IRIS` 实例的信息,如下所述。 `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris list MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 ``` C:\InterSystems\IRISHealth\bin>iris list irishealth Instance 'irishealth' (Custom installation) directory: 'C:\InterSystems\IRISHealth' versionid: '2022.1.0.114.0' conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773) status : 'running, since Sun Sep 4 16:16:54 2022' Product : InterSystems IRISHealth ``` - `iris merge instname [arguments]` 将配置合并文件应用于实例,更新其 `CPF`(请参阅使用配置合并自动配置 `IRIS`)。 `merge-file [existing-CPF]` — 可以指定要应用的合并文件的位置,可以选择后跟目标 `CPF` 的位置。例如,`iris merge MyIRIS /tmp/merge.cpf` 将合并文件 `/tmp/merge.cpf` 应用于名为 `MyIRIS` 的实例。如果不带参数调用,则使用以下默认值: - 对于合并文件,默认值是 `ISC_CPF_MERGE_FILE` 环境变量的值。 - 对于现有的 `CPF`,默认是位于以下位置的 `iris.cpf` 文件: - 对于已安装的实例,安装目录。 - 对于容器,由 `ISC_DATA_DIRECTORY` 环境变量指定的目录;如果未使用持久 `%SYS` 和 `ISC_DATA_DIRECTORY`,则使用 `ISC_PACKAGE_INSTALLDIR` 环境变量指定的目录。 - `iris qall` 为每个实例列出与 `iris all` 相同的信息,除了长行被截断为 `78` 个字符外加一个终止波浪号 (`~`)。 ```java C:\InterSystems\IRISHealth\bin>iris qall ``` - `iris qlist` [参数] 与 `iris list` 类似,但有附加信息。每个实例的输出(如下所述)在一行中给出,字段由插入符号 (`^`) 分隔。 `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris qlist MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 ```java C:\InterSystems\IRISHealth\bin>iris qlist irishealth irishealth^C:\InterSystems\IRISHealth^2022.1.0.114.0^running, since Sun Sep 4 16:16:54 2022^c:\intersystems\irishealth\iris.cpf^51773^52773^^^IRISHealth^^ ``` - `iris rename instname newname` 重命名实例。 - `iris restart instname [参数]` 重启实例;相当于 `iris stop instname restart` `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris start instname [参数]` 启动实例。 注意:系统可能会提示以“紧急模式”启动;如果是这样,请参阅紧急访问了解更多信息。 完整的`CPF` 路径 — 默认情况下, `IRIS` 从位于 `/mgr` 目录中的 `iris.cpf` 文件中读取某些设置。可以提供另一个 `.cpf` 文件的完整路径以供使用。 `nostu` — 启动指定的实例而不运行 `^STU`。 - `iris stat instname` 检索与 `irisstat` 实用程序相同的系统统计信息。 - `iris stop instname [参数]` 关闭实例。 `restart` — 关闭实例后启动实例。 `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris stopnoshut instname [参数]` 使用 `INTNOSHUT^SHUTDOWN` 关闭命名实例。 注意:只有实例所有者和 `irisusr` 可以在不登录终端的情况下运行 `INTNOSHUT^SHUTDOWN`。 `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris terminal instname [参数]` 打开实例的 `Terminal` 。 `B` — 允许系统管理员紧急登录终端。 `-b partition_size` — 指定进程的最大分区大小(以 `KB` 为单位)。 `"[label[+offset]]^routine"` — 指定要在用户模式下运行的 `ObjectScript` 程序的名称。除了指定的格式之外,还可以传递由字符串和/或数字文字组成的参数列表,以及省略的 (void) 参数,如下所示: - `"routine[([parameter-list])]"` - `"[label]^routine[([parameter-list])]"` - `"##CLASS(package.class).method[([parameter-list])]"` 其中,例如,参数列表以“字符串文字”的形式指定,`-+-000123.45600E+07`,省略的参数作为 `$Data(parameter)=0` 传递给目标。 **注意:空格和 `shell` 元字符必须以依赖于操作系统的形式引用。** `U` 命名空间 — 指定终端登录命名空间。 **注意:如果使用指定了启动命名空间的用户帐户启动 `IRIS`,则 `-U` 参数无效(请参阅用户帐户属性)。**
公告
Michael Lei · 四月 15, 2021

在VS Code中使用ObjectScript 开发培训视频上线

开发者们现在可以下载一套InterSystems ObjectScript扩展插件,并开始使用微软的Visual Studio Code IDE编写应用程序。我们培训部门的新VS Code资源指南提供了大量开发人员入门需要的内容,包括: 连接到InterSystems实例:安装和使用VS Code的ObjectScript扩展VS Code开发应用程序文档:使用开源社区。 播客集: 在VS代码中编写ObjectScript (20m) 开发者社区文章。如何报告问题 Github Repository。InterSystems语言服务器 Github Repository。InterSystems服务器管理器 Github Repository。VS代码的InterSystems ObjectScript扩展 了解IDE。 微软文档。Visual Studio代码 - 入门 微软视频。Visual Studio代码入门 (5m) 更多详情欢迎访问:https://learning.intersystems.com/course/view.php?id=1678&ssoPass=1
公告
Claire Zheng · 四月 10, 2023

2023 年 4 月 10 日 - 提醒:ECP 客户端不稳定

InterSystems已修复一个缺陷,该缺陷在罕见情况下会导致ECP客户端不稳定。 该缺陷存在于以下产品和基于这些产品的任何InterSystems产品中。 受影响的版本是2022.1.x、2022.2和2022.3: InterSystems IRIS® InterSystems IRIS for Health™ HealthShare® Health Connect 受影响的版本是2022.2(只针对部署ECP的客户): InterSystems HealthShare® 这个问题只发生在ECP客户端系统中。当这个问题被触发时,进程可能遇到<SYSTEM>或<DATABASE>错误。出错后,ECP客户端会出现不稳定;在某些情况下,实例可能会挂起。对数据没有影响,ECP数据库服务器不受影响。 要清除不稳定性,必须重新启动ECP客户端实例。 如果您的 IRIS、IRIS for Health 或 Health Connect 实例受到影响,补救措施是升级到版本 2023.1 或 2022.1.3,这两个版本都将很快发布。 如果您有受影响的 HealthShare 实例,一组单独的警报文档和补救建议将很快发布。 该缺陷的修复被识别为 TR1162,将包含在InterSystems IRIS®、InterSystems IRIS for Health™和HealthShare® Health Connect以及基于它们的任何InterSystems产品的所有未来版本。 这个修复也可以通过补丁Ad hoc获得。 如果您对这个警报有任何疑问,请联系全球响应中心。
公告
Michael Lei · 十一月 11, 2021

在线培训网站最新更新

分析 学习路径: 使用自适应分析建立数据模型 学习路径: 使用IRIS 商业智能BI建立数据模型 学习路径: 用InterSystems IRIS BI分析器BI Analyzer构建模型 其他 资源指南: 迁移资源指南 视频: 用交互式方式将应用从Cache迁移IRIS 演示Demo 学习路径: 实施合作伙伴起步 (金融行业) 和 所有行业 视频: 在Docker里运行InterSystems IRIS 社区版 视频: 开发和部署InterSystems Containers容器的工具 开发 视频: 什么是嵌入式 Embedded Python? 视频: 为多个ObjectScript 连接配置vs代码实现工作空间 Workspaces 视频: 在VS Code中用Objectscript 类进行客户端编辑 视频: 在InterSystems IRIS for Health 中将历史数据转化为HL7 FHIR R4 服务 视频与练习: HealthShare 信息转化服务演示Demo与练习 exercise (S3 和 HealthLake 版本) 系统管理 课程 (更新): InterSystems 安全基础 (原Caché 安全概览) 视频: 配置 InterSystems Web Gateway 网关
公告
Claire Zheng · 八月 3, 2023

2023 年 8 月 1 日 – 警报:ECP 应用程序服务器挂起和 Dejournaling 挂起

InterSystems 已纠正了两个缺陷。 第一个缺陷可能导致 ECP 应用程序服务器挂起。此缺陷仅与 ARM 和 IBM Power 处理器相关;存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2022.1.2和2022.1.3中。该修复被标识为 DP-423661。该缺陷将在所有未来版本中得到解决。 在极少数情况下,第二个缺陷可能会导致dejournaling挂起。此缺陷存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2020.4 、 2021.x 、 2022.x和2023.1中。该修复被标识为 DP-423505。该缺陷将在所有未来版本中得到解决,并已在2023.1.1中得到纠正。 InterSystems 已发布版本2022.1.3的更新发行版,以便快速提供这些修复。相关的版本标识符是: 原发布:2022.1.3.668.0 更新发布:2022.1.3.670.1 这些修复也可以通过 Ad hoc 分发获得。 如果您对此警报有任何疑问,请联系 全球响应中心。
文章
Jeff Liu · 十月 26, 2021

IRIS 2021 技术文档 First Look 29 技术概要:LDAP 和 InterSystems 产品

技术概要:LDAP 和 InterSystems 产品 目录 技术概要: LDAP 和 InterSystems 产品 1 设置 LDAP 身份验证 1 选择 InterSystems IRIS 实例 1 定义 LDAP 配置 1 选择新的 LDAP 域作为默认值 2 启用 LDAP 身份验证 2 为 LDAP 服务器安装安全证书 3 探索 LDAP 用户和组 4 User1: 操作员 4 User2: 管理者 5 User3: 开发者 5 自动创建用户 6 了解有关 LDAP 和安全的更多信息 6 技术概要:LDAP 和 InterSystems 产品 InterSystems IRIS®数据平台可以与 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)服务器集成,从而可以无缝地使用这种流行技术对用户进行身份验证。通过 LDAP 提供授权也很容易。 当用户尝试登录 InterSystems IRIS 时,用户名和密码会被发送到 LDAP 服务器,以验证该用户是否存在。一旦用户的身份得到验证,LDAP 服务器就会向 InterSystems IRIS 发送关于用户属于哪些组的信息。这些组与 InterSystems IRIS 中的角色相对应,这些角色控制用户被授权执行什么操作,以及是否可以读取或写入内容。通过这种方式,InterSystems IRIS 在其安全策略的身份验证和授权方面都使用了 LDAP 技术。 按照本指南中的步骤,您可以连接到 LDAP 服务器,并探索它如何影响 InterSystems IRIS 中的安全。在这些练习中,您将配置 InterSystems IRIS 以与 Windows 活动目录(Active Directory)服务器集成。虽然也支持其他的 LDAP 服务器,但本文主要介绍如何使用活动目录(Active Directory)进行 LDAP 身份验证和授权。 要浏览所有的技术概要(First Look),包括下面描述的可以在免费的社区版(Community Edition)实例上执行的其他内容,请参见 InterSystems First Looks(《InterSystems 技术概要》)。 设置 LDAP 身份验证 在以 LDAP 用户登录并在 InterSystems IRIS 中探索基于 LDAP 的安全之前,需要完成以下操作: 选择 InterSystems IRIS 实例 定义 LDAP 配置 选择 LDAP 域作为默认值 在 InterSystems IRIS 中启用 LDAP 身份验证 为 LDAP 服务器安装安全证书 选择 InterSystems IRIS 实例 要使用该程序,您需要一个正在运行的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例;该实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。 定义 LDAP 配置 InterSystems IRIS 使用 LDAP 配置来定义连接到 LDAP 服务器和搜索用户所需的信息。要创建和定义新的 LDAP 配置: 设置 LDAP 身份验证 在浏览器中打开您的实例的管理门户(Management Portal)。要使用的 URL 取决于您选择的实例类型;有关确定正确的 URL 的信息,请参见 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 InterSystems IRIS Connection Information(InterSystems IRIS 连接信息)。 进入 Security LDAP Configurations(安全 LDAP 配置) 页面 (System Administration(系统管理) > Security(安全) > System Security(系统安全) > LDAP Configurations(LDAP 配置))。 点击 Create New LDAP configuration(创建新 LDAP 配置)。 在 Name(名称)字段中,输入 irisldap.com。 选择 Enabled(已启用) 复选框。 选择 LDAP server is a Windows Active Directory server(LDAP 服务器是一个 Windows 活动目录(Active Directory) 服务器) 复选框。 定义以下字段: +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | 字段 | > 内容 | +=================================================================+===========================================================================+ | LDAP domain name(LDAP 域名) (仅限 Windows) | > irisldap.intersystems.com | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | LDAP host names(LDAP 主机名) | > irisldapdc1.irisldap.intersystems.com | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | LDAP username to use for searches(用于搜索的 LDAP 用户名) | - (Windows) sidLDAPQuery | | | | | | - (UNIX®) | | | | | | > CN=sidLDAPQuery,CN=Users,DC=irisldap,DC=intersystems,DC=com | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | LDAP username password(LDAP 用户名密码) | > 选择 Enter New Password(输入新密码), 然后输入密码为 Cach3L3arning | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | LDAP Base DN to use for searches(用于搜索的 LDAP 基础 DN) | > DC=irisldap,DC=intersystems,DC=com | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ | LDAP Unique search attribute(LDAP 独特的搜索属性) | > sAMAccountName | +-----------------------------------------------------------------+---------------------------------------------------------------------------+ 选择 Use TLS/SSL encryption for LDAP sessions(将 TLS/SSL 加密用于 LDAP 会话)复选框。 选择 Use LDAP Groups for Roles/Routine/Namespace(将 LDAP 组用于角色/路由/命名空间)复选框。 选择 Allow Universal group Authorization(允许通用组授权)复选框。 点击 Save(保存)。 选择新的 LDAP 域作为默认值 一旦定义了 LDAP 服务器的 LDAP 配置,您需要将新的 LDAP 配置设置为默认的 LDAP 域。要将 LDAP 服务器设置为默认服务器: 从管理门户(Management Portal)主页,进入 System-wide Security Parameters(全系统安全参数) 页面 (System Administration(系统管理) >**Security(安全) > System Security(系统安全) > System-wide Security Parameters(全系统安全参数)**)。 从 Default security domain(默认安全域)下拉列表中选择 irisldap.com。 点击 Save(保存)。 启用 LDAP 身份验证 使用 LDAP 服务器只是 InterSystems IRIS 中可用的一种身份验证方法。不仅必须为 InterSystems IRIS 的整个实例启用 LDAP 身份验证,而且需要由 LDAP 用户访问的 InterSystems IRIS 的每个组件也必须启用 LDAP 身份验证。以下程序为实例和 InterSystems IRIS 安全所需的那些组件启用 LDAP 身份验证: 设置 LDAP 身份验证 从管理门户(Management Portal)主页,进入 Authentication/Web Session Options(身份验证/Web 会话选项) 页面(System Administration(系统管理)> Security(安全) > System Security(系统安全) > Authentication/Web Session Options(身份验证/Web 会话选项))。 选择 Allow LDAP authentication(允许 LDAP 身份验证)复选框。 点击 Save(保存)。 从管理门户(Management Portal)主页,进入 Web Applications(Web 应用程序)页面 (System Administration(系统管理) > Security(安全) > Applications(应用程序) > Web Applications(Web 应用程序))。 在这个页面上,您将为您在 InterSystems IRIS 中将要访问的管理门户(Management Portal)部分启用 LDAP 授权。因为管理门户(Management Portal)的其他部分没有启用 LDAP 授权,如果您试图探索这些其他部分,可能会被要求登录。 点击 /csp/sys 来显示用于配置 web 应用程序的页面。 在 Security Settings(安全设置) 部分,在 Allowed Authentication Methods(允许的身份验证方法)字段中选择 LDAP 复选框。 点击 Save(保存)。 一旦设置被保存,点击 Cancel(取消)以返回到 Web Applications(Web 应用程序)页面。 点击 /csp/sys/sec。这个 web 应用程序包含管理门户(Management Portal)的安全页面。 在 Security Settings(安全设置)部分,在 Allowed Authentication Methods(允许的身份验证方法)字段中选择 LDAP 复选框。 点击 Save(保存)。 一旦设置被保存,点击 Cancel(取消)以返回到 Web Applications(Web 应用程序) 页面。 点击 /csp/sys/op。这个 web 应用程序包含管理门户(Management Portal)的操作页面。 <span id="1.5_Installing_a_Security_Certificate_fo" class="anchor"></span>在 Security Settings(安全设置) 部分,在 Allowed Authentication Methods(允许的身份验证方法)字段中选择 LDAP 复选框。 点击 Save(保存)。 为 LDAP 服务器安装安全证书 LDAP 服务器采用 TLS 进行安全保护,因此您需要安装安全证书才能成功访问服务器。在将其标识为安全证书之前,您将创建一个包含所需证书内容的 .cer 文件。 创建 .cer 文件 要创建将作为安全证书安装的文件: 打开一个文本编辑器,如记事本,并创建一个新文件。 复制以下所有内容并将其粘贴到文本编辑器中的新文件中。新文件应该以 -----BEGIN CERTIFICATE-----开头,并以-----END CERTIFICATE-----结尾。 -----BEGIN CERTIFICATE----- MIIDuTCCAqGgAwIBAgIQO5hG2uC7G7ZBxcXt/J+z3TANBgkqhkiG9w0BAQsFADBv MRMwEQYKCZImiZPyLGQBGRYDY29tMRwwGgYKCZImiZPyLGQBGRYMaW50ZXJzeXN0 ZW1zMRgwFgYKCZImiZPyLGQBGRYIaXJpc2xkYXAxIDAeBgNVBAMTF2lyaXNsZGFw LUlSSVNMREFQREMxLUNBMB4XDTE4MDQwOTE0MDUzMloXDTIzMDQwOTE0MTUzMlow bzETMBEGCgmSJomT8ixkARkWA2NvbTEcMBoGCgmSJomT8ixkARkWDGludGVyc3lz dGVtczEYMBYGCgmSJomT8ixkARkWCGlyaXNsZGFwMSAwHgYDVQQDExdpcmlzbGRh cC1JUklTTERBUERDMS1DQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AL/aNDJJNbzGh6tXG8+hmEEplb80UQMcIhLvoanz/RKKZXBBY68rO5pkYUwn/24g pryGy0OUjA997KKol5rdbXWzK7vUMuVSp0atw1m4vF9hmp1bpKBC60OXmV39Fqar ej1dkRl0ZXOmCexP8JqTyNwhpOLXvazzzvsNRr4ts9u1m6y9kFYecu4PRqtFCgoC T6rbgqz1Ew3VrhQHi0HWvq1sR2CngxdyG8AnlSo6nz3X/IrTwrw5lauNLfpsRda5 D5YfUpxYeqpONSUB650u9bC0l5eRWe8kS33Xr+u5Odkhy087I/zN+GK7xMGzxYMR OWNINIGRvlLuDRshKQl4gP0CAwEAAaNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB /wQFMAMBAf8wHQYDVR0OBBYEFM3Ofv4R/zkEgHkp4ayvTkAvxJikMBAGCSsGAQQB gjcVAQQDAgEAMA0GCSqGSIb3DQEBCwUAA4IBAQC8hhvc/+WsDeipNezBo+ovum2z 7q0fStr73Tj84cDGSyCmT2Q/h0qFvkfjtRd8AUBdG0qjhIB4VLVyWmrWDl1jAUcr 3AzygfO6UZjNRT+4c8r8R2xOhE3wJEJWibzXD9bPCtCkhYNJT6bi5PSRgUq+r9GU 探索 LDAP 用户和组 IHnAUmaQa+K+kNEpAvBfIeQ2ox9NPbtUfj/fswKpubWzZZc2udeU8SQLacl6tZMA tXgZPT6lQfoZU2WmDG1EnoC4Ji1++Sf6Ho2i6kxg1m6geyOPSsGPdsAVjYCqCjuZ pxjAsfZXV2juLyTBM51rrmV/Rqfougnikh4zhFRBrOHtMP71ZxCptMVz3RHe -----END CERTIFICATE----- 在您可以访问的目录中将该文件另存为 irisldap.cer。 在 Windows 上安装安全证书 如果您在 Windows 上运行 InterSystems IRIS,请完成以下步骤来完成安装您所创建的安全证书的过程。 使用 Windows 资源管理器(Explorer),双击在您保存文件的目录中的安全文件 irisldap.cer。 点击 Install Certificate(安装证书)。 选择 Local Machine(本地机器) 并点击 Next(下一步)。 点击 Yes(是) 以允许对您的设备进行更改。 选择 Place all certificates in the following store(将所有证书放入以下存储区)并点击 Browse(浏览)。 选择 Trusted Root Certification Authorities(受信任的根证书颁发机构)并点击 OK(确定)。 点击 Next(下一步)。 点击 Finish(完成)。 在 UNIX®上安装安全证书 如果您在 UNIX®上运行 InterSystems IRIS,请完成以下步骤来完成安装您所创建的安全证书的过程。 以 _system 用户身份登录管理门户(Management Portal)时,进入 Security LDAP Configurations(安全 LDAP 配置) 页面 (System Administration(系统管理) > Security(安全) > System Security(系统安全) > LDAP Configurations(LDAP 配置))。 从 LDAP 配置的列表中点击 irisldap.com。 在 TLS/SSL certificate file(TLS/SSL 证书文件)字段中,输入 irisldap.cer 的路径和文件名,这是您创建并保存的文件。 探索 LDAP 用户和组 现在您已经配置了您的 LDAP 连接并启用了 LDAP 身份验证,您可以使用 LDAP 服务器来登录 InterSystems IRIS。LDAP 服务器包含三个用户:user1、user2 和 user3。user1 属于 intersystems-Role-%Operator 组,user2 属于 intersystems-Role-%Manager 组,user3 属于 intersystems-Role-%Developer 组。每个组都授予属于 InterSystems IRIS 中相应角色的权限。例如,当 user1 通过 LDAP 服务器的身份验证成功时,将为其分配 %Operator 角色。 在本教程中,您将以所有三个用户的身份登录到 InterSystems IRIS,并根据与用户关联的角色探索可用的操作。当您作为一个有效的 LDAP 用户登录到 InterSystems IRIS 时,InterSystems IRIS 会自动创建用户,而不需要您事先手动添加用户。 User1: 操作员 要以 user1 的身份登录并探索 InterSystems IRIS: 如果您目前已登录到 InterSystems IRIS,请点击管理门户(Management Portal)左上角的 Logout(退出) 链接。 探索 LDAP 用户和组 使用以下凭证登录 InterSystems IRIS: 用户名:user1 密码:Password1 user1 是 intersystems-Role-%Operator 组的成员。基于这个组,当 user1 通过身份验证时,他们会被自动授予与 InterSystems IRIS 中 %Operator 角色相关的权限。 从管理门户(Management Portal)主页,进入 Databases(数据库) 页面 (System Operation(系统操作) > Databases(数据库))。user1 可以访问这个页面,因为他们已经被 LDAP 服务器授权,可以和与 %Operator 角色关联的页面进行交互。 在管理门户(Management Portal)主页上,请注意 System Administration(系统管理) 菜单已被禁用。 user1 不能访问此菜单,因为 %Operator 角色不包含适当的权限。 User2: 管理者 要以 user2 的身份登录并探索 InterSystems IRIS: 点击管理门户(Management Portal)左上角的 Logout(退出) 链接。 使用以下凭证登录 InterSystems IRIS: 用户名:user2 密码:Password2 user2 是 intersystems-Role-%Manager 组的成员。基于这个组,当 user2 通过身份验证时,他们会被自动授予与 %Manager 角色相关的权限。正如您将看到的,这些权限包括访问 user1 无法看到的页面。 从管理门户(Management Portal)主页,进入 Users(用户) 页面 (System Administration(系统管理) > Security(安全) > Users(用户))。请记住,user1 不能访问 System Administration(系统管理) 菜单。 从用户列表中点击 user1。 点击 Roles(角色) 标签。 请注意,%Operator 是分配给 user1 的唯一角色。 点击 Cancel(取消) 以返回到 Users(用户) 页面。 请注意,在用户列表中没有 user3 的条目。该用户将在 user3 登录时自动创建,此时 InterSystems IRIS 使用 LDAP 服务器对用户进行身份验证。 User3: 开发者 要以 user3 的身份登录并探索 InterSystems IRIS: 点击管理门户(Management Portal)左上角的 Logout(退出)链接。 使用以下凭证登录 InterSystems IRIS: 用户名:user3 密码:Password3 user3 是 intersystems-Role-%Developer 组的成员。基于这个组,当 user3 通过身份验证时,他们会被自动授予与 %Developer 角色相关的权限。 请注意,该用户可以访问 System Explorer(系统资源管理器)菜单,而不是 System Operation(系统操作)和 System Administration(系统管理)菜单。您可以看出,分配给 user3 的 %Developer 角色与分配给 了解有关 LDAP 和安全的更多信息 user1 和 user2 的角色具有不同的权限。这可以防止 user3 看到自己的用户配置文件,因为 Users(用户)页面是在 System Administration(系统管理)菜单下。 自动创建用户 您已经登录到 InterSystems IRIS,但没有先创建新用户。当在 LDAP 服务器上发现这些用户时,InterSystems IRIS 会自动创建这些用户。下面的程序演示了这个过程: 点击管理门户(Management Portal)左上角的 Logout(退出)链接。 使用以下凭证登录 InterSystems IRIS: 用户名:user2 密码:Password2 请记住,user2 拥有 %Manager 角色。 从管理门户(Management Portal)主页,进入 Users(用户) 页面 (System Administration(系统管理) > Security(安全) > Users(用户))。 在列表中找到 user3 并点击行中的 Delete(删除)。 此时,拥有 %Developer 角色的 user3 在 InterSystems IRIS 中不复存在。 点击管理门户(Management Portal)左上角的 Logout(退出)链接。 使用以下凭证登录 InterSystems IRIS: 用户名:user3 密码:Password3 因为 user3 仍然存在于 LDAP 服务器上,所以即使您刚刚在 InterSystems IRIS 中删除了用户帐户,您也能够以 user3 的身份重新登录到 InterSystems IRIS。 如果需要,您可以重新登录 InterSystems IRIS,以确认 user3 现在是一个用户。 a. 点击管理门户(Management Portal)左上角的 Logout(退出)链接。 b. 使用以下凭证登录 InterSystems IRIS: 用户名:user2 密码:Password2 c. 从管理门户(Management Portal)主页,进入 System Administration(系统管理) > Security(安全) > Users(用户)。user3 现在在列表中,尽管您之前删除了该用户账户。 了解有关 LDAP 和安全的更多信息 您可以使用以下参考资料来了解有关 LDAP 和其他安全概念的更多信息。 有关在 InterSystems IRIS 中使用 LDAP 的详细信息,请参见 LDAP Guide(《LDAP 指南》)。 有关 InterSystems IRIS 中基于角色的安全的介绍,请参见 First Look:Role-Based Access Control(《技术概要:基于角色的访问控制》)。
文章
Jeff Liu · 一月 7, 2021

InterSystems 最佳实践系列之--从持久类和序列类生成 Swagger 规范

最近,我需要从持久类和序列类生成一个 Swagger 规范,所以我发布了我的代码(它并不完整 - 你仍然需要处理应用程序的细节,但这是一个开始)。 代码[在这里](https://github.com/eduard93/Utils/blob/master/Utils/YAML.cls.xml)。 假设你有下面的类:   类 Class REST.Test.Person Extends %Persistent { /// 人的名字。 Property Name As %String [ Required ]; /// 人的社会安全号。 这通过模式匹配进行验证。 Property SSN As %String [ Required ]; /// 人的出生日期。 Property DOB As %Date; /// 人的家庭地址。 这里使用一个嵌入对象。 Property Home As Address; /// 人的办公室地址。 这里使用一个嵌入对象。 Property Office As Address; /// 人的配偶。 这是对另一个持久对象的引用。 Property Spouse As Person; /// 代表人喜欢的颜色的字符串集合。 Property FavoriteColors As list Of %String; /// 代表人喜欢的颜色的字符串集合。 Property FavoriteNumbers As array Of %Integer; /// 人的年龄。<br> /// 这是一个经过计算的字段,其值来自于 <property>DOB</property>。 Property Age As %Integer; } Class REST.Test.Address Extends %SerialObject { /// 街道地址。 Property Street As %String(MAXLEN = 80); /// 城市名称。 Property City As %String(MAXLEN = 80); /// 2 个字母的州名缩写。 Property State As %String(MAXLEN = 2); /// 5 位美国 地区改进计划 (ZIP) 编码。 Property Zip As %String(MAXLEN = 5); } 你可以通过以下代码自动生成此 Swagger 定义: REST.Test.Person: type: "object" properties: Age: type: "integer" DOB: type: "string" FavoriteColors: type: "array" items: type: "string" FavoriteNumbers: type: "object" Home: $ref: "#/definitions/REST.Test.Address" Name: type: "string" Office: $ref: "#/definitions/REST.Test.Address" SSN: type: "string" Spouse: $ref: "#/definitions/REST.Test.Person" REST.Test.Address: type: "object" properties: City: type: "string" State: type: "string" Street: type: "string" Zip: type: "string" 主方法:Utils.YAML:GenerateClasses 测试运行:do ##class(Utils.YAML).Test()
文章
Michael Lei · 八月 31, 2021

InterSystems被独立研究机构Forrester评为多模型数据平台领导者

InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分 转载自Forester 报告: InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。" Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report
公告
Claire Zheng · 三月 10, 2021

诚邀您参加 InterSystems编程大奖赛获奖成员线上见面会!

亲爱的社区开发者, 我们诚挚邀请您参加 InterSystems编程大奖赛获奖成员线上见面会! 时间: 周五(2021年3月12日)-22:00(北京时间) 在此次线上见面会,您可以: 了解获胜者的个人履历 观看获奖应用的简短demo 针对此次大奖赛使用到的技术、奖金和各类疑问,您可以畅所欲言,各抒己见,为下一次竞赛做准备! 线上见面会参与成员: @Dmitriy Maslennikov, CaretDev Corp联合创始人、首席技术官和开发者倡导者, @José Roberto Pereira, Shift Consultoria e Sistemas Ltda BI开发者 @Henrique Dias, Sao Paulo Federal Court 系统管理专家/数据库管理员 @Botai Zhang, 中国开发者 @Weiwei Yang, 中国开发者 @Evgeny Shvarov, InterSystems 开发者生态系统经理 您还将有机会在一个特别的网络研讨会上向我们的开发人员提出任何问题。 欢迎您参加线上见面会! 现在就来报名吧! 什么时候搞中国自己的? Good question! 想围观中国获奖成员线上见面会的给Michael点赞
文章
Louis Lu · 四月 9, 2022

基于Redhat Linux安装InterSystems IRIS 的服务器内存相关参数配置建议

注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。 主要需要设置下面几个内存相关配置: (下面比例适用于服务器仅运行单实例InterSystems IRIS)数据库缓存Database cache: 建议小于64G内存设置总内存50%,大于等于64G内存设置70%总内存程序缓存routine cache: 建议设置1023MBgmheap: 建议设置1048576KB(1024MB)LockSize: 建议最少设置134217728 Bytes (128MB),如果在系统日志中提示locksize相关错误或警报,应相应增加。 如果在一台服务器上安装了多个InterSystems IRIS 实例,那么要保证 所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值小于 Hugepage设定的值 hugePages : 建议设置值大于系统所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值再往上取整+1G。之后监控cache efficiency 调整设置大小。 要注意对于繁忙的系统,需要为除IRIS之外系统预留足够内存。比如主要负责系统集成、使用JavaGateway等会使用多个外部进程,需要为其预留足够内存。 比如要设置Huge pages 大小为12G。 如果Hugepagessize为2048KB,那么设置HugePage_Total=12*1024*1024/2048=6144 echo "vm.nr_hugepages=6144" >> /etc/sysctl.conf 禁用Transparent HugePages (THP) 检查状态 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 或者 # cat /sys/kernel/mm/transparent_hugepage/enabled 设置禁用THP 1. 在/etc/grub.conf文件中添加 transparent_hugepage = never 2. 重启服务器 Kernel shared Memory Limit: 检查该值设置要大于hugePages的值,在/etc/sysctl.conf 文件中查找kernel.shmmax 的内容 swappiness 建议系统内存小于64G该值设置为5,系统内存大于64G设置为1 echo "vm.swappiness=5" >> /etc/sysctl.conf Dirty Page Cleanup echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
文章
Nicky Zhu · 八月 10, 2022

InterSystems 数据平台互操作功能运行维护管理基础 - 互操作消息管理

InterSystems 数据平台的互操作功能与久经考验的Ensemble和HealthConnect集成引擎产品一脉相承。事实上,使用IRIS的典型客户不但应用了IRIS提供的多模型数据存储、分布式存储等数据存储特性,也广泛地应用如可视化数据转换,可视化数据流程编辑和可视化规则引擎等一系列互操作能力构建异构系统间或组织机构间的数据流程。 那么,在生产环境上,如何监控与评估数据流程的运行状况,在发生问题时如何快速定位并解决故障,就是用户的运维团队需要考虑的问题。 本系列文章将围绕IRIS互操作功能中核心的互操作消息管理,Production管理与优化及互操作告警与通知三个方面介绍互操作功能的运维基础知识和常用技巧,希望能够帮助客户平稳、高效地运用数据平台。 注:本文提到的InterSystems数据平台,包括Caché数据库、Ensemble集成平台、HealthConnect医疗版集成平台和InterSystems IRIS数据平台。 互操作消息管理 消息是互操作功能中各组件间通信的基本方法,在互操作Production业务服务、业务流程和业务操作之间广泛使用。 除承担信息传递的基本功能外,由于常常需要在生产环境中查看消息内容或重发消息以解决问题,消息检索就是大家最常用到的功能,而IRIS特有的结构化消息存储也为开发和运维团队使用和管理消息创造了便利。用户能够通过消息的内容,某项具体属性,来源/目标和发生时间等条件检索和过滤消息,迅速找到自己感兴趣的信息。 我们先回顾下消息的结构与关联的上下文。 消息结构 如图所示,消息分为消息头与消息体两部分。其中消息头(标头)主要用于记录消息发生的来源、趣向、时间和消息类型等上下文信息,而消息体(正文)则为消息的具体内容。 而在消息的上下文中,会话是一个比较重要的概念,它用于表达一次交互过程中,从初始的输入所触发的所有消息。在使用时,需要注意: Message Trace将显示一个会话的所有信息 消息查看器默认只列出会话开始的信息(绿色消息) 消息检索 下图即为平台自带的消息查看器,可通过Ensemble > 查看 > 消息导航访问(Ensemble菜单项在IRIS和HealthConnect产品中的名称为Interoperability,位置,含义均相同,下文中将不再赘述)。 可见其中包含若干预制条件及可灵活扩展的查询条件以应对不同场景的需求。 需要注意的是,对检索所需的消息体或头属性建立索引很重要。因为在生产环境中,production中的消息存量可以轻易达到百万、千万甚至亿级,对于海量数据不经过索引进行检索就性能而言不可行。 应用SQL检索消息 如果需要,也可以使用SQL语句进行搜索 系统资源管理器SQL执行查询。 在运行前切换到正确的命名空间。 可以参考消息查看器使用的SQL语句来修改 在Terminal中,在执行搜索的命名空间中运行以下代码。 Set ^Ens.Debug("UtilEnsMessages", "sql")=1 在消息查看器中执行搜索 根据需要从消息查看器复制、修改和执行SQL。 需要SQL知识 用户可直接运用平台提供的SQL示例检索消息,这样的SQL也为用户学习和掌握IRIS持久话消息的结构和辅助函数等概念提供了基础。 用户在熟悉消息结构,并了解SQL的条件下,配合Search Table、索引等特性,可以实现更复杂的基于消息内容的查询。 其中,关于Search Table的应用,用户也可参考我们的另一篇文章《互操作消息统一管理系列:SearchTable加速检索》。此处不再赘述。 异常消息的处理 重发消息 借助消息的持久化,当通信异常导致消息传递失败时,用户也可通过重发消息重新触发业务 挂起消息 如果业务组件运行错误,可能会挂起消息 手动停止消息 队列查看页 > 选择业务组件 > 挂起按钮 组件配置页 > 作业 > 挂起按钮 挂起后消息保持静止,等待手工处理 用户也可有针对性地查看和处理被挂起的消息。 查看挂起消息 Ensemble > 查看 > 已挂起的消息 重发已挂起消息 从已挂起消息页重发将发送被挂起的这条消息 从消息查看器重发将复制并发送一条新的消息 中断消息 IRIS的业务组件有自动重发消息的能力。但但运维团队明确远端故障已发生,短期内重发消息没有意义时,也可下达指令丢弃消息,不再进行后续处理。 业务组件处于重试状态时 组件配置页 > 作业 > 放弃按钮 Ensemble > 监视器 > 队列 > 点击业务组件 > 选择活动的消息 > Abort 或 Abort All 按钮 中断被堆积的消息 Ensemble > 监视器 > 队列 > 点击业务组件 > 选择排队的消息 > Abort 或 Abort All 按钮
文章
Michael Lei · 二月 17, 2022

InterSystems IRIS – 适用于实时人工智能/机器学习的多功能通用平台

#### 实时人工智能/机器学习计算的挑战 我们将从我们在 InterSystems 数据科学实践中遇到的示例开始讲起: * “高负载”客户门户与在线推荐系统相集成。 计划是在整个零售网络层面重新配置促销活动(我们将假设使用“细分策略”矩阵而非“平面”促销活动母版)。 推荐机制会有哪些变化? 推荐机制内的数据馈送和数据更新会有哪些变化(输入数据量增加了 25000 倍)? 推荐规则生成设置会有哪些变化(生成规则的总量和“分类”呈千倍增加,因此需要将推荐规则筛选阈值缩小千倍)? * 设备健康监控系统使用“手动”方式馈送数据样本。 现在,它将连接到每秒可传输数千个过程参数读数的 SCADA 系统。 监控系统会有哪些变化(它能否应对以秒为单位的设备健康监控)? 当输入数据接收到包含数百列最近在 SCADA 系统中实现的数据传感器读数的新块时,会发生什么(是否有必要关闭监控系统以将新的传感器数据整合到分析当中,以及要关闭多久)? * 复杂的人工智能/机器学习机制(推荐、监控、预测)依赖于彼此的结果。 要调整这些人工智能/机器学习机制的功能以适应输入数据的变化,每月需要多少人工工时? 人工智能/机器学习机制在支持制定业务决策方面的总体“延迟”是多少(支持信息的刷新频率对比新输入数据的馈送频率)? 综合考虑包括上述在内的示例后,我们总结了以下因过渡到使用实时机器学习和人工智能而出现的挑战: * 我们对于自家公司的人工智能/机器学习机制的创建和适应速度(相对于形势变化的速度)是否满意? * 我们的人工智能/机器学习解决方案在支持制定实时业务决策方面的表现如何? * 我们的人工智能/机器学习解决方案能否自适应(即无需开发者介入即可继续工作)以应对数据漂移和由此产生的业务决策制定方法的变化? 本文综合概述了 InterSystems IRIS 平台在全面支持人工智能/机器学习机制部署、人工智能/机器学习解决方案装配(集成)和基于密集数据流的人工智能/机器学习解决方案训练(测试)方面的功能。 我们将关注市场研究、人工智能/机器学习解决方案实例以及我们在本文中称为实时人工智能/机器学习平台的概念方面的内容。 #### 调查内容:实时应用类型 由 Lightbend 在 2019 年面向约 800 名专业 IT 人士进行的[调查](https://www.lightbend.com/white-papers-and-reports/survey-streaming-data-future-tech-stack),结果不言自明: _图 1:实时数据的主要使用者_ 我们将引用该调查结果报告中对我们最重要的片段:“… 流式传输数据流水线和基于容器的基础架构有着并驾齐驱的增长趋势,二者相结合可应对在更快、更高效且更敏捷地交付有影响力的结果方面存在的竞争压力。 与传统的批处理相比,流式传输能够更快地从数据中提取有用信息。 它还可以及时地集成高级分析数据,例如基于人工智能和机器学习 (AI/ML) 模型的推荐,所有功能都旨在通过提高客户满意度来实现差异化竞争优势。 时间压力也会对 DevOps 团队构建和部署应用造成影响。 诸如 Kubernetes 等基于容器的基础架构可帮助常要通过快速、重复构建和部署应用以应对变化的团队化解其面对的许多效率低下和设计问题。 … 804 位 IT 专业人士提供了有关其组织内使用流式处理的应用的详细信息。 受访者主要来自西方国家/地区(欧洲占比 41%,北美占比 37%),任职于大中小型组织的人数占比大致相等。 … … 人工智能并非投机炒作。 在已于人工智能/机器学习生产应用中使用流式处理的受访者中,有 58% 的人表示明年将出现一些最大幅增长。 * 受访者一致认为人工智能/机器学习用例将于明年出现一些最大幅增长。 * 随着实时数据处理得到更大规模的利用,不仅会拓宽在不同用例中采用的广度,还会加大在现有用例中采用的深度。 * 除了人工智能/机器学习之外,物联网流水线采用者的热情也十分高昂 — 有 48% 已经整合物联网数据的人员表示,此用例将于近期出现一些最大幅增长。 … ” 这项非常有趣的调查表明,机器学习和人工智能场景是实时数据的主要使用者,这种看法已得到广泛认可。 另一个重要的收获是透过 DevOps 视角折射出的对于人工智能/机器学习的看法:我们现在已经可以断言,仍占主导地位的“基于完全已知数据集的一次性人工智能/机器学习”文化已发生转变。 #### 实时人工智能/机器学习平台概念 实时人工智能/机器学习最典型的使用领域之一是工业中的制造过程管理。 让我们以这一领域为例并考虑上述所有想法,为实时人工智能/机器学习平台的概念给出确切的定义。 使用人工智能和机器学习来满足制造过程管理的需求具备多项与众不同的特性: * 有关制造过程状况的数据会非常密集地生成:生成频率高、涉及参数广泛(SCADA 系统每秒可传输数以万计的参数值) * 有关检测到的缺陷的数据(且不说不断演化的缺陷,它们反而是稀少且偶发的数据)已知存在缺陷分类不足和定位不及时的问题(通常以人工记录的形式在纸上找到) * 从实际角度来看,模型训练和应用只有一个“观察窗口”,可反映以最近的过程参数读数作为结尾的合理移动间隔内的过程动态 这些特性使我们除了需要实时接收和基本处理来自制造过程的密集“宽带信号”之外,也需要以实时方式执行(并行)人工智能/机器学习模型应用、训练和准确率控制。 我们的模型在移动观察窗口中“看到”的“框架”在不断变化 – 基于之前某一“框架”训练的人工智能/机器学习模型在准确率方面也会发生变化。 如果人工智能/机器学习建模准确率下降(例如,“警报范数”分类误差的值超过了给定的容差边界),则应自动触发基于较新“框架”的重新训练 – 同时,在选择开始重新训练的时刻时,必须考虑到重新训练过程持续时间和当前模型版本的准确率下降速度(因为在获得“重新训练”版本的模型之前,在执行重新训练的过程期间会一直持续应用当前版本)。 InterSystems IRIS 拥有关键的平台内功能,可充分支持用于制造过程管理的实时人工智能/机器学习解决方案。 这些功能可以分为三大类: * 基于 InterSystems IRIS 平台实时运行的生产解决方案中新的或经修改的现有人工智能/机器学习机制的持续部署/交付 (CD) * InterSystems IRIS 平台的单一生产解决方案中的入站过程数据流、人工智能/机器学习模型应用/训练/准确率控制队列、围绕与数学建模环境实时交互的数据/代码/编排的持续集成 (CI) * 在使用传递自 InterSystems IRIS 平台的数据、代码和编排(“决策制定”)的数学建模环境中执行的人工智能/机器学习机制的持续训练 (CT) 将与机器学习和人工智能相关的平台功能归入上述类别并非随意而为。 我们引用了由 Google 发表的方法论[文章](https://cloud.google.com/solutions/machine-learning/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning),文中为这种分组提供了概念基础:“… DevOps 是开发和运行大规模软件系统的一种常见做法。 这种做法具有诸多优势,例如缩短开发周期、提高部署速度、实现可靠的发布。 如需获得这些优势,您需要在软件系统开发中引入两个概念: * 持续集成 (CI) * 持续交付 (CD) 机器学习系统是一种软件系统,因此类似的做法有助于确保您能够可靠地大规模构建和运行机器学习系统。 但是,机器学习系统在以下方面与其他软件系统不同: * 团队技能:在机器学习项目中,团队通常包括数据科学家或机器学习研究人员,他们主要负责进行探索性数据分析、模型开发和实验。 这些成员可能不是经验丰富的、能够构建生产级服务的软件工程师。 * 开发:机器学习在本质上具有实验性。 您应该尝试不同的特征、算法、建模技术和参数配置,以便尽快找到问题的最佳解决方案。 您所面临的挑战在于跟踪哪些方案有效、哪些方案无效,并在最大程度提高代码重复使用率的同时维持可重现性。 * 测试:测试机器学习系统比测试其他软件系统更复杂。 除了典型的单元测试和集成测试之外,您还需要验证数据、评估经过训练的模型质量以及验证模型。 * 部署:在机器学习系统中,部署不是将离线训练的机器学习模型部署为预测服务那样简单。 机器学习系统可能会要求您部署多步骤流水线以自动重新训练和部署模型。 此流水线会增加复杂性,并要求您自动执行部署之前由数据科学家手动执行的步骤,以训练和验证新模型。 * 生产:机器学习模型的性能可能会下降,不仅是因为编码不理想,而且也因为数据资料在不断演变。 换句话说,与传统的软件系统相比,模型可能会通过更多方式衰退,而您需要考虑这种降级现象。 因此,您需要跟踪数据的摘要统计信息并监控模型的在线性能,以便系统在值与预期不符时发送通知或回滚。 机器学习和其他软件系统在源代码控制的持续集成、单元测试、集成测试以及软件模块或软件包的持续交付方面类似。 但是,在机器学习中,有一些显著的差异: * CI 不再仅仅测试和验证代码及组件,而且还会测试和验证数据、数据架构和模型。 * CD 不再针对单个软件包或服务,而会针对应自动部署其他服务(模型预测服务)的系统(机器学习训练流水线)。 * CT 是机器学习系统特有的一个新属性,它主要涉及自动重新训练和提供模型。 … 我们可以得出结论,基于实时数据的机器学习和人工智能需要更为广泛的工具和更加丰富的功能(从代码开发到数学建模环境编排)、所有功能和主题领域之间更加紧密的集成、更好的人力及机器资源管理。 #### 实时场景:识别进料泵中出现的缺陷 继续以制造过程管理领域为例,我们将探讨一个已在开头引用过的实际案例:需要建立一种基于制造过程参数值流以及维护人员缺陷检测报告来实时识别进料泵中出现的缺陷的机制。 _图 2:识别出现缺陷的案例解析_ 许多类似的实际案例中都有一个共同的特点,即在考虑规律且及时地馈送数据 (SCADA) 时,还需要同时考虑偶发且不规则地检测(和记录)各种缺陷类型。 换句话说:SCADA 数据每秒馈送一次以供分析,但需要用纸笔记录缺陷并注明日期(例如:“1 月 12 日– 第三轴承区域漏油渗入泵盖”)。 因此,我们可以通过添加以下重要限制来对案例解析加以补充:我们只有一种具体缺陷类型的“指纹”(即具体缺陷类型由截至具体日期的 SCADA 数据表示 – 该特定缺陷类型没有其他示例)。 这一限制立即使我们脱离了假定有大量可用“指纹”的传统机器学习范式(监督学习)。 _图 3:细化缺陷识别案例解析_ 我们能否以某种方式“倍增”我们可用的“指纹”? 是的,可以。 泵的当前状况由其与已记录缺陷的相似度表征。 即使不运用定量方法,仅通过观察从 SCADA 系统接收到的参数值的动态,也可以了解很多信息: _图 4:泵状况动态与具体缺陷类型“指纹”_ 然而,视觉感知(至少目前)在我们动态发展的场景中并不是最合适的机器学习“标签”生成器。 我们将使用统计检验来评估当前泵状况与已记录缺陷的相似度。 _图 5:对传入数据与缺陷“指纹”应用统计检验_ 统计检验可评估一组包含制造过程参数值的记录(以“批次”形式取自 SCADA 系统)与具体缺陷“指纹”的记录相似的概率。 使用统计检验(统计相似度指数)评估的概率随后会被转换为 0 或 1,成为我们评估相似度的每组记录中的机器学习“标签”。 即,使用统计检验处理获取到的一批泵状况记录后,我们就能够 (a) 将该批次添加到人工智能/机器学习模型的训练数据集以及 (b) 评估人工智能/机器学习模型当前版本应用于该批次时的准确率。 _图 6:对传入数据与缺陷“指纹”应用机器学习模型_ 在之前的一期[在线讲座](https://youtu.be/-gyvCTBHh-0)中,我们展示并讲解了 InterSystems IRIS 平台如何将任何人工智能/机器学习机制实现为能够控制建模输出似然并调整模型参数的持续执行的业务流程。 我们实现泵场景依赖于在线讲座中介绍的完整 InterSystems IRIS 功能 – 这些功能在作为我们的解决方案一部分的 ANALYZER 流程中使用,通过自动管理训练数据集实现强化学习,取代了传统的监督学习。 我们会将在应用统计检验(相似度指数转换为 0 或 1)和当前版本的模型之后呈现“检测一致性”(即统计检验和模型基于这些记录均输出 1)的记录添加到训练数据集中。 重新训练模型时,在其验证阶段(将新训练的模型应用于自身的训练数据集,在此之前需要对该数据集提前进行统计检验),应用统计检验后“未能保持”输出 1 的记录(由于训练数据集中永远存在属于原始缺陷“指纹”的记录)将从训练数据集中移除,并基于缺陷“指纹”和数据流中的“成功”记录训练新版本模型。 _图 7:InterSystems IRIS 中人工智能/机器学习计算的机器人化_ 如果需要对通过 InterSystems IRIS 中的本地计算获得的检测准确率寻求“第二意见”,我们可以创建一个顾问流程,以使用云提供商(例如 Microsoft Azure、Amazon Web Services、 Google Cloud Platform 等)基于控制数据集重做模型训练/应用): _图 8:来自 Microsoft Azure 的“第二意见”,由 InterSystems IRIS 编排_ 我们场景的原型在 InterSystems IRIS 中实现为分析过程的代理系统,与设备(泵)、数学建模环境(Python、R 和 Julia)交互,并支持所有相关人工智能/机器学习机制的自我训练 – 基于实时数据流。 _图 9:InterSystems IRIS 中实时人工智能/机器学习解决方案的核心功能_ 基于我们的原型获得的一些实际结果: * 由模型检测到的缺陷“指纹”(1 月 12 日): * 模型检测到的原型已知“指纹”中未包含的新出现的缺陷(于 9 月 11 日检测到,而缺陷本身在两天后,即 9 月 13 日被维修队发现): 对包含多次发生相同缺陷的真实数据进行的模拟表明,我们使用 InterSystems IRIS 平台实现的解决方案可以在维修队发现问题的几日之前检测到缺陷。 #### InterSystems IRIS – 适用于实时人工智能/机器学习计算的多功能通用平台 [InterSystems IRIS](https://www.intersystems.com/isc-resources/wp-content/uploads/sites/24/InterSystems_IRIS_Data_Platform-Unified_Platform_for_Powering_Real-time_Data-intensive_Applications-Whitepaper.pdf) 是一款完整、统一的平台,可简化实时富数据解决方案的开发、部署和维护。 它提供了并发事务和分析处理能力,支持多个完全同步的数据模型(关系、分层、对象和文档),一个可集成不同数据孤岛和应用的完整的互操作性平台,以及支持批处理和实时用例的复杂结构化和非结构化分析功能。 该平台还提供了一个开放的分析环境,可将同类最佳的分析整合到 InterSystems IRIS 解决方案中,并提供灵活的部署功能以支持云和本地部署的任意组合。 由 InterSystems IRIS 平台提供支持的应用目前已在各行各业中得到广泛使用,帮助公司在战略和战术执行中获得切实的经济利益,促进明智的决策制定并消除事件、分析和行动之间的“差距”。 _图 10:实时人工智能/机器学习背景下的 InterSystems IRIS 架构_ 与上图相同,下图将新的“基础”(CD/CI/CT) 与平台工作元素之间的信息流结合起来。 可视化始于 CD 宏机制,并继续贯穿于 CI/CT 宏机制。 _图 11:InterSystems IRIS 平台人工智能/机器学习工作元素之间的信息流图_ InterSystems IRIS 中 CD 机制的基本要素:平台用户(人工智能/机器学习解决方案开发者)使用专门的人工智能/机器学习代码编辑器调整现有和/或创建新的人工智能/机器学习机制。上述代码编辑器为 Jupyter(全称:Jupyter Notebook;为简洁起见,在此编辑器中创建的文档也常被称为相同的名称)。 在 Jupyter 中,开发者可以在传输(“部署”)到 InterSystems IRIS 之前编写、调试和测试(也使用可视化表示)具体的人工智能/机器学习机制。 显然,以这种方式开发的新机制只能进行基本的调试(特别是因为 Jupyter 不处理实时数据流)– 但我们对此没有意见,因为原则上,在 Jupyter 中开发代码的主要目标是验证单独的人工智能/机器学习机制的功能。 类似地,已部署在平台中的人工智能/机器学习机制(请参阅其他宏机制)在调试前可能需要“回滚”到其“平台前”版本(从文件读取数据、通过 xDBC 而非本地表或 global(即 InterSystems IRIS 中的多维数据数组)访问数据等)。 在 InterSystems IRIS 中实现 CD 具有一项重要特性:平台和 Jupyter 之间存在双向集成关系,支持在平台内部署(利用进一步的平台内处理)Python、R 和 Julia 内容(三种语言均为各自主要开源数学建模环境的编程语言)。 也就是说,人工智能/机器学习内容开发者获得了在平台中“持续部署”其内容的能力,同时能够使用其常用 Jupyter 编辑器以及 Python、R、Julia 所提供的常用函数库,在平台外部提供基本的调试功能(必要情况下)。 继续聊聊 InterSystems IRIS 中的 CI 宏机制。 该图展示了“实时机器人化”的宏流程(一组数据结构、以数学环境语言编写的业务流程和代码段,以及以其编排的 InterSystems IRIS 原生开发语言 ObjectScript)。 宏流程的目标是:支持人工智能/机器学习机制运行所需的数据处理队列(基于实时传输到平台的数据流),对人工智能/机器学习机制的排序和“分类” (又名 “数学算法”、“模型”等 – 可根据实现细节和术语偏好采用多种不同名称)做出决策,对围绕人工智能/机器学习输出(多维数据集、表格、多维数据数组等 – 生成报告、仪表板等)的智能保持最新的分析结构。 在 InterSystems IRIS 中实现 CI 具有一项重要特性:平台和数学建模环境之间存在双向集成关系,支持在平台内执行使用 Python、R 或 Julia 在各自的环境中编写的内容并接收执行结果。 这种集成在“终端模式”(即人工智能/机器学习内容被制定为对数学环境执行标注的 ObjectScript 代码)和“业务流程模式”(即人工智能/机器学习内容被制定为使用可视化编辑器、Jupyter 或 IDE(IRIS Studio、Eclipse、Visual Studio Code)的业务流程)下均适用。 需要使用 CI 层内的 IRIS 和 CD 层内的 Jupyter 之间的链接指定在 Jupyter 中编辑业务流程的可用性。 本文将进一步提供与数学建模环境相集成的更为详细的概述。 我们认为此时完全有理由向您说明,平台中提供了将人工智能/机器学习机制(源自“持续部署”)“持续集成”到实时人工智能/机器学习解决方案中所需的所有工具。 最后要聊到的是至关重要的宏机制:CT。 没有它,就不会存在人工智能/机器学习平台(即便可以通过 CD/CI 实现“实时”)。 CT 的本质是平台能够在数学建模环境的会话中直接操作机器学习和人工智能的“工件”:模型、分布表、向量/矩阵、神经网络层等。 在大多数情况下,这种“互操作性”体现于在环境中创建上述工件(例如,对于模型,“创建”包括模型规范及其参数的后续评估,即所谓的模型“训练”),对工件进行应用(对于模型:借助目标变量的“建模”值进行计算 – 预测、类别指定、事件概率等),以及对已经创建的和应用的工件进行改进 (例如,通过根据模型的性能重新定义模型的输入变量以便提高预测准确率,作为一种可行选项)。 CT 角色的关键属性是它对 CD 和 CI 现实的“抽象”:CT 可以在具体环境中存在的限制下使用人工智能/机器学习解决方案的计算和数学细节来实现所有工件。 将由 CD 和 CI 负责“提供输入数据”和“交付输出”。 在 InterSystems IRIS 中实现 CT 具有一项重要特性:使用上述与数学建模环境的集成时,平台可以从其编排的数学环境内的会话中提取工件,并且(最重要的是)将它们转换为平台内数据对象。 例如,刚刚在 Python 会话中创建的分布表可以(无需暂停 Python 会话)传输到平台中作为 global(InterSystems IRIS 中的多维数据数组),并进一步重用于在不同的人工智能/机器学习机制下的计算(使用不同环境的语言实现,如 R),或者作为虚拟表。 另一个示例:与模型的“例程”功能并行(在 Python 会话中),它的输入数据集使用“自动机器学习”进行处理 – 自动搜索优化的输入变量和模型参数。 与“例程”训练一起,生产模型可以实时接收“优化建议”,以根据调整后的输入变量集、调整后的模型参数值(不再是 Python 训练的结果,而是作为其“替代”版本的训练结果,例如使用 H2O 框架),使整个人工智能/机器学习解决方案能够以自主方式处理输入数据和建模对象/流程中不可预见的漂移。 我们现在将以现有原型为例,深入了解 InterSystems IRIS 的平台内人工智能/机器学习功能。 在下图中,在图像的左侧部分,我们看到了实现 Python 和 R 脚本执行的业务流程的片段。 在中央部分,我们看到了执行这些脚本后的 Python 和 R 的相应可视化日志。 接下来是两种语言的内容示例,在各自环境中执行。 右侧为基于脚本输出的可视化。 右上角的可视化使用 IRIS Analytics 开发(数据从 Python 传输到 InterSystems IRIS 平台,并使用平台功能呈现在仪表板中),右下角所示为直接在 R 会话中获取并从中传输到图形文件的内容。 重要说明:所讨论的业务流程片段在此原型中负责基于从设备模拟器流程实时接收的数据进行模型训练(设备状况分类),该流程由监控分类模型性能的分类准确率监控流程触发。 文中会进一步讨论将人工智能/机器学习解决方案实现为一组交互式业务流程(“代理”)。 _图 12:在 InterSystems IRIS 中与 Python、R 和 Julia 的交互_ 平台内流程(又称 “业务流程”、“分析过程”、“流水线”等,具体取决于上下文)可以编辑,首先是使用平台中的可视化业务流程编辑器,所用方式可同时创建流程图及其相应的人工智能/机器学习机制(代码)。 我们所说的“创建人工智能/机器学习机制”是指从一开始就进行混合(在流程级别):使用数学建模环境的语言编写的内容与使用 SQL (包括 [IntegratedML](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML) 扩展程序)、InterSystems ObjectScript 以及其他支持的语言编写的内容相邻。 此外,平台内范式以嵌入片段集的形式(如下图所示)为“绘制”流程提供了广泛的功能,有助于高效地构建有时相当复杂的内容,避免视觉组合中的“随机失活” (“非可视化”方法/类/过程等)。 即,在必要情况下(可能在大多数项目中),可以采用可视化的自文档格式实现整个人工智能/机器学习解决方案。 请您注意下图中心部分,该部分展示了“更高级的嵌入向量层”,并表明除了这样的模型训练(使用 Python 和 R 实现)之外,还有针对训练模型的所谓 ROC 曲线分析,可对其训练质量进行视觉(和计算)评估 – 该分析使用 Julia 语言实现(在其各自的 Julia 环境中执行)。 _图 13:InterSystems IRIS 中的视觉人工智能/机器学习解决方案组合环境_ 如前所述,已实现的平台内人工智能/机器学习机制的初始开发和(在其他情况中)调整将在平台外部的 Jupyter 编辑器中执行。 在下图中,我们可以找到一个编辑现有平台内流程的示例(与上图中的流程相同)– 这就是其模型训练片段在 Jupyter 中的外观。 Python 语言的内容支持在 Jupyter 中编辑、调试、查看内嵌计算图。 更改(如果需要)可以立即复制到平台内流程,包括其生产版本。 同样,新开发的内容也可以复制到平台(自动创建一个新的平台内流程)。 _图 14 在 InterSystems IRIS 中使用 Jupyter Notebook 编辑平台内人工智能/机器学习机制_ 平台内流程的编辑不仅可以使用可视化或笔记本格式执行,还可以使用“完整”的 IDE(集成开发环境)格式执行。 IDE 为 IRIS Studio(原生 IRIS 开发工作室)、Visual Studio Code(VSCode 的 InterSystems IRIS 扩展程序)和 Eclipse(Atelier 插件)。 在某些情况下,开发团队可以同时使用全部三种 IDE。 下图展示了在 IRIS Studio、Visual Studio Code 和 Eclipse 中编辑完全相同流程的示例。 内容的任何部分都完全可以编辑:Python/R/Julia/SQL、ObjectScript 和业务流程元素。 _图 15:在各种 IDE 中编辑 InterSystems IRIS 业务流程_ 在 InterSystems IRIS 中使用业务流程语言 (BPL) 组合和执行业务流程的方法值得特别提及。 BPL 允许在业务流程中使用“预先配置的集成组件”(活动)– 确切地说,这让我们有权声明 IRIS 支持“持续集成”。 预配置的业务流程组件(活动和活动之间的链接)对于装配人工智能/机器学习解决方案而言是极其强大的加速器。 不仅用于装配:由于活动及其链接,在不同的人工智能/机器学习机制之上引入了“自主管理层”,能够根据具体情况做出实时决策。 _图 16:InterSystems IRIS 平台中用于持续集成 (CI) 的预配置业务流程组件_ 代理系统(又名 “多代理系统”)的概念在机器人化领域被广泛接受,InterSystems IRIS 平台通过其“生产/流程”结构为其提供有机支持。 除了使用整体解决方案所需的功能“武装”每个流程的无限能力之外,“代理”作为平台内流程家族中的一员,能够为非常不稳定的建模现象(社会/生物系统的行为, 实施部分观察的制造过程等)创建高效的解决方案。 _图 17:在 InterSystems IRIS 中以业务流程代理系统形式运行的人工智能/机器学习解决方案_ 现在继续概述 InterSystems IRIS 平台,我们将向您展示包含适用于所有实时场景类别的解决方案的应用领域(我们在之前的一期[在线讲座](https://youtu.be/N6tN48hCnE4)中提供了对一些基于 InterSystems IRIS 的平台内人工智能/机器学习最佳做法的十分详细的发现) 。 紧接上图,我们在下面提供了一幅更具说明性的代理系统图。 在该图中,完全相同的原型显示了其四个代理流程以及它们之间的交互: GENERATOR – 模拟设备传感器的生成数据;BUFFER – 管理数据处理队列;ANALYZER – 执行机器学习;MONITOR – 监控机器学习质量以及在有必要重新训练模型时发出信号。 _图 18:在 InterSystems IRIS 中以业务流程代理系统形式构成的人工智能/机器学习解决方案_ 下图展示了不同机器人化原型(文本情感分析)在一段时间内的运行。 上半部分 – 模型训练质量指标演变(质量提高),下半部分 – 模型应用质量指标和重新训练(红条)的动态。 正如所见,该解决方案显示出有效且自主的自我训练,同时继续以所需的质量水平运行(质量指标值保持在 80% 以上)。 _图 19:基于 InterSystems IRIS 平台的持续(自)训练 (CT)_ 我们之前已经提到过“自动机器学习”,在下图中,我们将以另一个原型为例提供有关此功能的更多详细信息。 在业务流程片段图中,我们看到了在 H2O 框架中启动建模的活动,以及该建模的结果(与其他“手工”模型相比,获得的模型在 ROC 曲线方面具有明显优势,以及自动检测原始数据集中可用变量中“最具影响力的变量”)。 这里的一个重要优势是“自动机器学习”可节省时间并提供专家资源:我们的平台内流程可以在半分钟内交付专家可能需要一周到一个月时间才能完成的工作(确定和证明最佳模型)。 _图 20:在基于 InterSystems IRIS 平台的人工智能/机器学习解决方案中嵌入的“自动机器学习”_ 下图“直击高潮”,同时也很好地将有关各类实时场景的故事推向尾声:在此提醒您,尽管 InterSystems IRIS 可提供所有平台内功能,但在其编排下训练模型并非强制要求。 该平台可以接收来自在非平台编排工具中训练的模型的外部来源的所谓 PMML 规范,然后自其导入 [PMML 规范](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=APMML)之时起继续实时应用该模型。 请务必记住,尽管大多数最广泛使用的人工智能/机器学习工件都支持,但并非每个给定的人工智能/机器学习工件都可以解析为 PMML 规范。 因此,InterSystems IRIS 是一种开放的平台,对其用户而言完全不存在“平台奴役”情况。 _图 21:InterSystems IRIS 平台中基于 PMML 规范的模型应用_ 让我们聊聊 InterSystems IRIS 平台的其他优势(为了更好地说明,请参考制造过程管理),这些优势对于人工智能和机器学习的实时自动化非常重要: * 强大的集成框架,可与任何数据源和数据使用者(SCADA、设备、MRO、ERP 等)互操作 * 内置多模型数据库管理系统,用于无限量制造过程数据的高性能混合事务和分析处理 (HTAP) * 用于将人工智能/机器学习机制持续部署到基于 Python、R、Julia 的实时解决方案的开发环境 * 用于持续集成到人工智能/机器学习机制的实时解决方案和(自)训练的自适应业务流程 * 用于制造过程数据和人工智能/机器学习解决方案输出可视化的内置商业智能功能 * API 管理,可将人工智能/机器学习输出提供给 SCADA、数据集市/仓库、通知引擎等。 在 InterSystems IRIS 平台中实现的人工智能/机器学习解决方案可轻松适应现有的 IT 基础架构。 得益于高可用性和灾难恢复配置支持,以及在虚拟环境、物理服务器、私有云和公共云、Docker 容器中的灵活部署能力,InterSystems IRIS 能够有效保障人工智能/机器学习解决方案的可靠性。 也就是说,InterSystems IRIS 确实是实时人工智能/机器学习计算的多功能通用平台。 我们平台的多功能特质在实际应用中得到了证明:对实现计算的复杂性实际上毫无限制;InterSystems IRIS 能够结合(实时)执行不同行业的场景;具有出色的适应性,能够提供满足用户具体需求的任何平台内功能和机制。 _图 22:InterSystems IRIS — 适用于实时人工智能/机器学习计算的多功能通用平台_ 为了与对本文感兴趣的读者进行更加具体的对话,我们建议您继续与我们进行“实时”交流。 我们将随时提供支持,制定与贵公司具体情况相吻合的实时人工智能/机器学习场景,运行基于 InterSystems IRIS 平台的协作原型设计,设计和执行路线图以在您的制造及管理过程中实现人工智能和机器学习。 我们人工智能/机器学习专家团队的联系电子邮件:。
文章
Michael Lei · 五月 15, 2022

InterSystems IRIS最佳实践---在TLS/SSL中使用操作系统的证书库

有一个简单的新方法可以在Windows和Mac上的InterSystems IRIS 2019.1(和2018.1.2)的SSL/TLS配置中添加证书授权(CA)证书。 你可以通过输入以下内容要求IRIS使用操作系统的证书存储。 %OSCertificateStore 在 "包含受信任证书颁发机构X.509证书的文件 "栏中输入:%OSCertificateStore。 这里有一张如何在门户中这样做的图片: 这里有一个描述这个问题的文档链接。 它在 "包含受信任的证书颁发机构证书的文件 "的选项列表中。 这就是你需要做的所有事情! 现在,这个配置将接受由操作系统证书库中列出的任何CA颁发的证书。
文章
Louis Lu · 十一月 2, 2021

IRIS 2021 技术文档 First Look 30 -- 使用 InterSystems 产品进行文本分析

本技术概览( First Look )介绍了 InterSystems IRIS® 数据平台 支持使用 Natural Language Processing(NLP,自然语言处理 )文本分析的能力,NLP文本分析以各种自然语言对非结构化文本数据进行语义分析。能让您发现有关大量文本文档内容的有用信息,而无需事先了解文本内容。 本技术概览( First Look )介绍了 InterSystems IRIS Natural Language Processing(自然语言处理),并介绍了一些与索引文本数据相关的初始任务,以进行语义文本分析。完成这些任务后,您将对一组文本建立索引并执行分析,以确定这些文本中最常见的实体(entity)、关于这些实体的度量指标、实体之间的各种关联,以及查看实体在源文本的表现形式。这些活动仅设置使用默认设置和功能,以便您熟悉 NLP 文本分析的基础知识。有关Text Analytics(文本分析)的完整文档,请参阅InterSystems IRIS Natural Language Processing (NLP) Guide (《InterSystems IRIS 自然语言处理 (NLP) 指南》)。 处理非结构化文本的一个相关但独立的工具是InterSystems IRIS SQL Search。SQL Search允许您search(搜索)这些相同的实体,以及多个文本中的单个单词、正则表达式(regular expression)和其他结构。本质上,搜索解决方案的前提是您知道自己要寻找的目标。NLP 文本分析旨在帮助您发现内容和内容实体之间的联系,而无需明确要寻找的目标。 要浏览技术概要(First Look)的所有内容,包括可以在InterSystems IRIS的免费评估实例上执行的许多内容 , 请参阅InterSystems First Looks (《InterSystems 技术概要》)。 为什么 NLP 文本分析很重要 企业逐渐累积的越来越多的非结构化文本数据,远远超出了他们阅读或记载这些文本的能力。通常,企业可能对这些文本文档的内容知之甚少。基于纯search(搜索)技术传统的“自上而下”文本分析,对这些文本的内容做出假设,可能会遗漏重要内容。 InterSystems IRIS Natural Language Processing (NLP)可以在预先不了解这些文本的主题的情况下,对这些文本进行文本分析。它通过应用识别语义实体的特定语言规则来实现这项功能。由于这些规则是专门针对语言而非内容,因此 NLP 可以在不使用字典或本体的情况下提供对文本内容的深入分析。 InterSystems IRIS 如何实施 NLP 文本分析 要为 NLP 分析准备文本,您必须将这些文本加载到domain(域)中,然后构建域。基于对这些文本的分析,NLP为该域构建索引, NLP可以使用域快速分析大量文本。文本可以从各种数据位置输入,包括 SQL 表、文本文件、strings(字符串)、globals 和 RSS 数据。 NLP 支持以下功能: Language models(语言模型):识别单词之间的语义关系是专门针对语言的。NLP 包含十种自然语言的语义规则(语言模型),可以分析用该语言编写的任何主题的文本。如果指定的语言不止一种,NLP 通过确定每个文本中的每个句子与指定语言之间的最佳匹配来执行自动语言识别。NLP 分析不需要预先创建或关联字典或本体,尽管您可以通过添加它们来扩展其功能。 Entity analysis(实体分析):一个或多个单词的语义群,被称为实体,NLP对其进行操作。实体被定义为Concepts(包括名词和名词短语)或Relations(包括动词和介词)。通常,要考虑的最相关实体是Concepts,但也可以分析Relations。句子和单词始终泾渭分明。忽略字母大小写。 Path analysis(路径分析):NLP 将Concepts和Relations的连贯序列分组为Paths。一个句子通常由一个单独的 Path 组成。Path 反映了实体之间的联系。 Attributes(属性):NLP 标记语义属性,例如否定,以便您可以区分肯定的文本序列(“结构损坏的证据”)和否定的文本序列(“没有结构损坏的证据”)。 Frequency、Spread 和 Dominance:这些是为实体计算的度量指标。Frequency是实体在一组文本中出现的次数。Spread是包含该实体的文本数。Dominance 是一个更细微的指标,通过将实体重复出现次数相对于每个文本的长度、具有共同单词的其他实体的重复出现次数以及其他因素考虑在内,形成该指标。实体通常按这些指标按降序排列。通过这些指标可以了解文本内容,您能更加深入地分析特定实体。 Similar Entities、 Related Concepts 和 Proximity Profile。给定一个实体,这些功能可以发现其他相关实体。例如,给定一个简短的实体,相似的实体将包括域中包含相同词的其他更长的实体,从而是比种子实体更具体的实体。给定一个实体,相关实体是同一句子中通过单个Relation与指定实体相关联的其他实体。给定一个实体,Proximity 指标度量计算指定实体与其他实体之间在路径内的距离。 Dictionaries(字典):您可以添加可选的字典来识别实体的同义词。 Summarization(摘要):您可以使用 NLP 生成文本摘要,要求摘要按整体文本的一定百分比生成。例如,50% 的摘要将包含原始文本中一半的句子,NLP 会选择那些被计算为与整个源文本最相关的句子。 亲自尝试 NLP 文本分析 使用 InterSystems IRIS 文本分析很容易。这个简单的程序将引导您按基本步骤生成NLP 度量指标。 提供此示例是为了让您初步体验InterSystems IRIS Natural Language Processing。不应将此示例用作开发实际应用程序的基础。如要在真实情况下使用 NLP,您应该充分研究该软件提供的可用选项,然后开发您的应用程序以生成稳健且高效的代码。 用前须知 要使用该程序,您需要一个正在运行的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例;该实例不需要在您工作的系统中(尽管它们必须相互具有网络访问权限)。如果您还没有一个可以使用的实例,如何部署每种类型实例的有关信息,请参阅InterSystems IRIS Basics: Connecting an IDE(《INTERSYSTEMS IRIS 基础:连接一个IDE》)中的Deploying InterSystems IRIS(部署 InterSystems IRIS)。 您还需要获取 Aviation.Event SQL 表,该表可在 GitHub 上找到,网址为https://github.com/intersystems/Sam-ples-Aviation。按照First Look: SQL Search with InterSystems Products(《技术概览:使用 InterSystems 产品进行 SQL 搜索》)中的Downloading and Setting up the Sample Files(下载和设置示例文件)提供的说明下载和设置文件 创建域并添加数据位置 所有 NLP 分析都发生在一个域内。将多个文本关联到一个域。然后构建域,创建 NLP 查询使用的索引。 域是在namespace(命名空间)中创建的,例如在上一节中按照First Look: SQL Search with InterSystems Products(《技术概览:使用 InterSystems 产品进行 SQL 搜索》)的过程,创建的SAMPLES命名空间。可以在一个命名空间内创建多个域。可以将一个文本与多个域进行关联。 有多种方法可以创建、填充和构建域。以下示例使用Domain Architect界面。 在浏览器(browser)中为实例打开 Management Portal (管理门户),使用 InterSystems IRIS Basics: Connecting an IDE(《INTERSYSTEMS IRIS 基础:连接一个IDE 》)的URL described for your instance(实例适用的URL)。 导航到 Domain Architect 页面(Analytics > Text Analytics > Domain Architect)。使用Analytics选项之前,可能需要切换到启用分析功能的SAMPLES命名空间。 点击 New (新建)按钮定义域。指定以下域值(按给定的顺序): Domain name:分配给域的名称在当前命名空间必须是唯一的(不仅仅是在其package class(包类)中唯一);域名不区分大小写。本示例指定名称为 MyTest。 Definition class name:域定义 package name (包名)和 class name(类名),用句号分隔。从 Domain name字段按 Tab 键生成默认Definition class name:Samples.MyTest 。 Allow Custom Updates:此复选框允许手动将数据或字典添加到此域。本示例请勿选中此框。 点击 Finish(结束) 按钮来创建域。在屏幕中将显示 Model Elements 选项。 在域内,可以为域定义数据位置和其他模型元素。要添加或修改模型元素,请单击标题之一旁边的扩展三角形。一开始,没有扩展三角形出现。定义一些模型元素后,单击扩展三角形会显示您定义的模型元素。 点击 Data Locations 三角形以在屏幕右侧显示 Details 选项卡。Details选项卡显示五个 Add Data 选项。选择 Add data from table。 此选项允许您指定存储在 SQL 表中的数据。在本例中,我们将指定以下字段: Name:提取的数据文件集的名称。使用默认值:Table_1。 Schema:从下拉列表中选择 Aviation。 Table Name:从下拉列表中选择 Event。 ID Field:从下拉列表中选择 ID。 Data Field:从下拉列表中选择 NarrativeFull。 如果当前域定义有未保存的更改,Domain Architect 页面标题后跟一个星号 (*)。点击 Save (保存)保存更改。 按 Compile(编译) 按钮,编译 Domain。 按 Build 按钮,为源数据构建NLP索引。 分析数据 使用以下过程分析数据: 在 Domain Architect 页面上,选择屏幕右侧的 Tools 选项卡,然后单击 Domain Explorer 按钮。 Domain Explorer 最初显示源文本中最重要概念的列表: frequency选项卡按频率降序显示Top Concepts。每个列出的项目都列示其频度计数(出现次数)和分布计数(包含该概念的源数量)。 例如, pilot概念的重复出现次数为6206,分布计数为1085;student pilot概念的重复出现次数为 319,分布计数为 141。 dominance选项卡按 dominance 计算结果,降序显示Dominant Concepts。 例如,pilot概念拥有 351.6008 的dominance;student pilot概念拥有 49.3625 的dominance。 当您选择上述其中一项概念,将显示该概念的另一个Domain Explorer列表: Similar Entities 列出所选概念以及包含该概念的所有其他概念,每个概念都有其重复出现次数和分布计数。 例如,选择student pilot,Similar Entities 将显示包括student pilot, student pilot certificate, student pilot's logbook, solo student pilot在内的列表。 Related Concepts 列出与所选概念相关的其他概念,以及在上下文语境中该实例的这些概念的重复出现次数和分布技术。 例如,选择student pilot,Related Concepts 将显示包括flight instructor和airplane在内的列表。 Proximity Profile 列出所选概念相邻的其他概念,以及当发现在相同的句子中有与所选概念相同的概念,将计算这些概念的实例的相邻程度。 例如,选择student pilot,Proximity Profile 将列示 airplane的相邻程度为 2702,以及flight instructor的相邻程度为 1662 。 在上述任一列表中的选择一个概念,这些列表将根据该概念进行刷新。或者,您也可以将实体(Concept或Relation)键入到 Domain Explorer Explore 区域并单击 Explore! 按钮。 通过使用这些列表,可以确定源文档中出现哪些概念、它们的重要性以及与它们相关联的其他概念。 Domain Explorer 的下部分允许您查看所选概念在源文本中的显示方式: Sources 选项卡按来源列出包含所选概念的所有句子。该概念被高亮显示,红色文本用于表示涉及该概念的否定。 Paths 选项卡列出了包含所选概念的所有路径。路径文本被突出显示,以显示 NLP 索引:所选概念以橙色高亮显示,路径中的其他概念以蓝色高亮显示,与路径相关的概念(通常是代词)以浅蓝色高亮显示。关系显示为白色。红色文本用于表示涉及该概念的否定。 通过点击 eye 图标,可以显示源的完整文本,所选概念将被高亮显示,并使用红色文本表示否定。 Indexing 切换按钮显示源的完整文本,高亮显示 NLP 索引。因为这是源文本,所以会显示大小写、标点符号和不相关的单词;文本的这些方面没有显示在Paths列表中。 % 选项允许您显示文本摘要。指定一个百分比。文本中的句子总数减少到该百分比。NLP 包含在摘要中的句子由它们对全文的重要性计算确定 您可以添加一个 skiplist 来排除不需要的概念。通常,top concepts(上层概念)列表始于那些非常常见或在几乎没有什么有用信息的概念。这些可能是出现在所有来源中的词或短语(例如“accident report(事故报告)”或“conclusions(结论)”)、一般概念(例如“airplane(飞机)”或“pilot(飞行员)”),或与您所使用数据无关的概念(例如城市列表)。您可以使用 skiplist 避免显示这些概念。Skiplist 仅影响某些查询结果中概念的显示;它对概念的 NLP 索引没有影响。 在 Domain Architect 中单击 Open 按钮并选择 Samples >>,然后是 MyTest 打开现有域 Samples.MyTest。 点击 Skiplists 扩展三角形。将在屏幕右侧的 Details 选项卡显示 Add skiplist 按钮。点击 Add skiplist 以显示 Name 和 Entries 字段。接受 skiplist 的默认名称 (Skiplist_1)。在 Entries 框列示条目(概念),一行一个概念;条目不区分大小写。本例中列出如下概念:pilot(飞行员) student pilot(学生飞行员)、 co-pilot(副驾驶)、 passenger(乘客)、instructor(教官)、flight instructor(飞行教官)、certified flight instructor(认证飞行教官)。 Save(保存)和Compile(编译)域。(不需要使用 Build 功能去添加、修改或删除 skiplists 的域)。 在Domain Explorer中单击 sunglasses 右上角的图标。将显示您可以应用的为该域定义的skiplists的列表。选择Skiplist_1。请注意,Top Concepts 不再列出 skiplists 的概念。 了解有关 NLP 文本分析的更多信息 InterSystems 有其他相关资料可帮助您了解有关 NLP 文本分析的更多信息,包括: InterSystems IRIS Natural Language Processing (NLP) Guide(《InterSystems IRIS自然语言处理 (NLP) 指南》)