清除过滤器
公告
Claire Zheng · 四月 24, 2024
InterSystems IRIS、IRIS for Health和HealthShare HealthConnect的维护版本2022.1.5 & 2023.1.4现已发布
InterSystems IRIS, InterSystems IRIS for Health 和 HealthShare Health Connect 的两个扩展维护版本现已发布。
✅ 2022.1.5
2022.1.5 版提供此前发布的任一 2022.1.x 版中的Bug修复。
您可以在以下页面找到详细的变更列表和升级清单:
InterSystems IRIS
InterSystems IRIS for Health
HealthShare Health Connect
✅ 2023.1.4
2023.1.4 版提供此前发布的任一2023.1.x 版中的Bug修复。
您可以在以下页面找到详细的变更列表和升级清单:
InterSystems IRIS
InterSystems IRIS for Health
HealthShare Health Connect
如何获得该软件
该软件以经典安装包和容器映像两种形式提供。有关可用安装程序和容器映像的完整列表,请参阅 Supported Platforms webpage.
在WRC的页面 InterSystems IRIS Data Platform Full Kits 可获得InterSystems IRIS和InterSystems IRIS for Health的完整安装包。在WRC的 HealthShare Full Kits 页面可获得 HealthShare Health Connect 安装包。
容器映像可从此处获得 InterSystems Container Registry.
这些发行版均未提供Community Edition安装包或容器。
这些版本中的安装包 & 容器编号如下:
2022.1.5.940.0
2023.1.4.580.0
公告
Jeff Liu · 四月 7, 2021
2021年4月18日,Caché 系统运维培训线上实操课,此次培训的主题包括, Intersystems Caché 架构,Intersystems Caché 备份与恢复,Intersystems Caché 高可用与数据库镜像,Intersystems Caché 安全,Intersystems Caché 监控和性能采集。 欢迎大家报名参加!
线上实操演练,机会难得,欢迎大家报名参会:) 名额有限,先到先得,速速报名啦!
公告
Claire Zheng · 五月 30, 2024
从发布InterSystems IRIS®数据平台2022.3开始,InterSystems修改了许可证强制执行机制,以包括REST和SOAP请求。由于这种变化,在升级后,使用REST或SOAP的非处理器核数的许可证环境下,用户可能会遇到更高的许可证消耗。要确定此警报是否适用于您的InterSystems许可证,请按照下面链接的FAQ中的说明进行操作。
下表总结了强制执行变更情况:
产品
许可证强制执行中是否包含REST & SOAP 请求?
InterSystems Caché®
是
InterSystems Ensemble®
否
InterSystems IRIS, InterSystems IRIS® for Health, and Health Connect prior to 2022.3
否
InterSystems IRIS, InterSystems IRIS for Health, and Health Connect 2022.3 and later
是
客户要求在Caché和IRIS之间实现许可证强制执行的一致性。此次更改将REST和SOAP请求的许可强制执行与《条款和条件》(Terms & Conditions)保持一致;并使 InterSystems 的所有产品保持一致。在规划跨越2022.3阈值的升级应考虑这一变化的潜在影响。
为了帮助您了解此更改的影响,InterSystems正在提供资源,包括临时缓解措施。有关更多信息,请参见:
FAQ - License Enforcement Changes
相关产品变更参考为 DP-417320。
⚠ 如果您对此警报有任何疑问或对临时缓解措施感兴趣,请联系您的InterSystems客户经理或InterSystems Worldwide Response Center (WRC). 发现了,学习了~
公告
Jeff Liu · 四月 9, 2021
InterSystems IRIS,IRIS for Health和IRIS Studio的2020.4版本现已正式发布。
InterSystems IRIS Data Platform 2020.4使开发、部署和管理增强型应用和业务流程变得更加容易,从而弥合了数据和应用孤岛。它具有许多新功能,包括
增强了应用程序和接口开发人员的能力,包括:
支持Java SE 11 LTS,在使用Oracle OpenJDK和AdoptOpenJDK时均可支持
支持JDBC的连接池
分段式虚拟文档路由规则中新的 "foreach "组件
增强了数据库和系统管理员的能力,包括:
ICM现在支持部署系统警报和监测(SAM)和InterSystems API Manager(IAM)
对常见管理任务的SQL语法的扩展
简化InterSystems报表的部署
InterSystems IRIS for Health 2020.4包含了InterSystems IRIS 2020.4的所有增强功能。此外,这个版本还包
增强对FHIR的支持,包括对FHIR配置文件的支持
支持RMD IHE 的Profile
HL7迁移工具中的DataGate支持
关于这些功能的更多细节可以在产品文档中找到:
InterSystems IRIS 2020.4 documentation and release notes
InterSystems IRIS for Health 2020.4 documentation and release notes
由于这是一个持续交付(CD)版本,因此它仅以OCI(Open Container Initiative)又称Docker容器格式提供。 容器镜像可用于 Linux x86-64 和 Linux ARM64 的 OCI 兼容运行时引擎, 详见 Supported Platforms document.
企业版的容器映像和所有相应的组件都可以使用以下命令从 InterSystems Container Registry 用以下命令获得:
docker pull containers.intersystems.com/intersystems/iris:2020.4.0.547.0
docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.547.0
有关可用镜像的完整列表, 请参照ICR文档: the ICR documentation.
Contain社区版的容器镜像也可以使用以下命令从 Docker store 中拉取。
docker pull store/intersystems/iris-community:2020.4.0.547.0
docker pull store/intersystems/iris-community-arm64:2020.4.0.547.0
docker pull store/intersystems/irishealth-community:2020.4.0.547.0
docker pull store/intersystems/irishealth-community-arm64:2020.4.0.547.0
另外,所有容器映像的tarball版本都可以通过WRC的 CD download page页面获得。
我们在主要云市场上的相应列表将在未来几天内更新。
InterSystems IRIS Studio 2020.4是一个独立的IDE,用于Microsoft Windows,可以通过WRC的组件下载页面 components download page下载。它适用于InterSystems IRIS和IRIS for Health 2020.4及向下版本兼容。
InterSystems还支持VSCode-ObjectScript plugin ,用于使用Visual Studio Code为InterSystems IRIS开发应用程序,该插件可用于Microsoft Windows、Linux和MacOS。
其他独立的InterSystems IRIS 2020.4组件,如ODBC驱动程序和Web网关,也可从WRC的组件下载页面components download page.获得。
文章
Michael Lei · 十月 27, 2022
WinterCorp 性能测试报告摘要
InterSystems的性能测试方法用来衡量 "许多运行状态下数据库应用的关键构件 "是有效的。
与AWS Aurora MySQL、MariaDB、Microsoft SQL Server、Oracle和PostgreSQL相比,InterSystems IRIS显示出 "巨大的性能优势"。
InterSystems IRIS的插入速度是其他系统的1.7到9倍。InterSystems IRIS的数据速率是1.1到600倍。在插入率和查询率的组合上,没有其他系统在性能上能接近于InterSystems IRIS。
InterSystems IRIS的效率是AWS Aurora MySQL的2.7到3.1倍,而且随着集群中节点数量的增加,效率优势也越来越大。
在整个三到五分钟的集群测试中,InterSystems IRIS插入的记录在插入后很快出现在查询中。
图1. 每vCPU每秒查询对比(InterSystems IRIS vs AWS Aurora MySQL,1-4 查询节点)
图2. 单节点插入/查询速度对比(InterSystems IRIS vs AWS Aurora MySQL vs MS SQL Server)
图3. 单节点插入/查询测试(Maria DB vs Oracle vs PostgreSQL vs InterSystems IRIS)
图4. 1-4节点集群测试(AWS Aurora vs InterSystems IRIS)
欢迎点击获取报告全文。
关于WinterCorp
WinterCorp 成立于1992年,是专业从事数据库性能/可扩展性评测的第三方专业机构。更多信息欢迎访问https://wintercorp.com。
公告
Claire Zheng · 四月 6, 2023
InterSystems 已修复一个导致SQL查询返回不正确结果的缺陷。
该缺陷存在于以下产品和基于这些产品的任何InterSystems产品中。
受影响的版本是 2021.2、2022.1.x、2022.2 和 2022.3:
InterSystems IRIS®
InterSystems IRIS for Health™(医疗版)
HealthShare®Health Connect
受影响的版本是 2022.2:
InterSystems HealthShare®
当启用 SQL 运行时计划选择 (RTPC) 被启用(默认),并且查询包含一个“truth value”“WHERE ?=? 时,该缺陷会被触发,当被触发时,一些判断可能不会被正确评估;这导致了不正确的查询结果。
注意:通过查看SQL语句,无法完全评估一个查询的脆弱性。这是因为InterSystems SQL查询优化可以在查询的内部表示中增加“truth value”。
如果你的环境使用 InterSystems SQL,那么你可以通过禁用RTPC 功能来补救这个问题。
注意:关于 InterSystems HealthShare® 缓解措施的其他信息将很快发布。
此缺陷的修复被标识为 YCL227,将包含在InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 以及基于它们的任何 InterSystems 产品的所有未来版本中。
这个修复也可以通过补丁 Ad hoc 获得。
如果你对这个警报有任何疑问,或需要一个支持修复的补丁Ad hoc,请联系全球响应中心。
文章
Claire Zheng · 一月 21, 2021
这是“IRIS数据库在医疗行业发展”系列课程的第二讲,InterSystems中国技术总监乔鹏为您介绍InterSystems IRIS强大的分析能力。InterSystems IRIS数据平台是全球首款且唯一一款专门设计用于从医疗数据中提取价值的数据平台。
公告
Claire Zheng · 四月 27, 2021
亲爱的社区开发者们:
InterSystems开发者工具编程大赛 顺利结束. 感谢大家对激动人心的编码马拉松的支持参与!
是时候宣布此次竞赛优胜者啦!
掌声送给以下参赛者和他们贡献的优秀应用!
🏆 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名,奖金$4,000 ,项目 Server Manager for VSCode ,提交者 @John.Murray
🥈 并列第二名,奖金 $1,500 ,项目 Config-API ,提交者 @Lorenzo.Scalese
🥈 并列第二名,奖金 $1,500 ,项目 zpm-explorer ,提交者 @Henrique.GonçalvesDias 和 @José.Pereira
🏆 社区提名奖(Community Nomination) - 获得总投票数最多的应用:
🥇 第一名,奖金 $750 ,项目 Server Manager for VSCode ,提交者 @John.Murray
🥈 第二名,奖金 $500 ,项目 zpm-explorer ,提交者 @Henrique and @José.Pereira
🥉 第三名,奖金 $250 ,项目 Config-API ,提交者 @Lorenzo.Scalese
恭喜所有获奖者和参赛者!
感谢大家对本次大赛的关注和在本次大赛中付出的努力!
下一场竞赛是什么时候呢?
我们即将发布最新竞赛信息,敬请期待!
公告
Claire Zheng · 七月 29, 2021
亲爱的社区开发者们,大家好!
InterSystems 开发者竞赛:人工智能与机器学习 圆满结束,现已决出优胜者!
让我们把掌声送给以下开发者!
🏆 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名 奖金 $4,000 项目链接 fhir-integratedml-example 作者 @José.Pereira and @Henrique
🥈 第二名 奖金 $2,000 项目链接 ESKLP 作者 @Aleksandr.Kalinin6636
🥉 第三名 奖金 $1,000 项目链接 cryptocurrency-rate-forecasting 作者 @Oleh.Dontsov
🏆 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名 奖金$1,000 项目链接 fhir-integratedml-example 作者 @José.Pereira and @Henrique
🥈 第二名 奖金 $500 项目链接 cryptocurrency-rate-forecasting 作者 @Oleh.Dontsov
🥉 第三名 奖金 $250 项目链接 iris_satellite_plantation 作者 @Renato.Banzai
恭喜获奖者!
感谢大家对本次比赛的关注和付出!
文章
Nicky Zhu · 九月 22, 2021
1 安装基础知识:目的
本指南可帮助您成功在桌面或虚拟机上运行一个经授权许可的 InterSystems IRIS®。适用于我们在技术概要
(First Look)操作指南里所提及的技术。我们提供的说明包括64位 Windows 10, Red Hat 企业版Linux7,以及Apple macOS10.13.
注: InterSystems 云管理器(ICM)提供了一种简单、直观的方法来配置云或虚拟基础架构,用户可在该基 础架构上部署所需的 InterSystems IRIS架构以及其他服务。
请勿使用本指南安装生产实例或任何自定义安装配置;如需帮助,请参阅InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)或Installation Guide(《安装指南》)。
2 用前须知
在开始安装 InterSystems IRIS之前,请确保:• 计算机上的完整管理员权限或sudo权限。• 访问InterSystems IRIS的单文件的可执行安装文件(Windows)或工具包(Linux和macOS)。 • 在IRIS可访问的文件夹下存放有效的许可证密钥文件,通常命名为iris.key。
您正在使用的技术概要(First Look)中对安装有特定要求;例如,可能需要“正常”安全性。在遵循以下说 明之前,请务必查看技术概要中“用前须知”章节。
注: 安装了 InterSystems 的IRIS之后,您可以在InterSystems IRIS Basics: Connecting an IDE (《InterSystems IRIS基础:连接一个IDE》)中,查找介绍如何将一个IDE连接到InterSystems IRIS上的实例过程。
3 在Windows10系统安装 InterSystems IRIS 要在Windows10上安装 InterSystems IRIS:
在Windows资源管理器中,右键单击 InterSystems IRIS安装可执行文件,然后选择“Run as administrator(以管理员身份运行)”。在生成的Windows用户帐户控制对话框中,选择“YES”。
如果出现“Select instance(选择实例)”对话框,请选择“New Instance(新建实例)”。
勾选接受许可协议,然后单击“Next(下一步)”。
在“InterSystems IRIS Instance Name(InterSystems IRIS实例名称)”对话框中为你的实例起 名,InterSystems IRIS实例名称仅可使用字母数字字符和下划线。然后单击“Next(下一步)”。
如果目标文件夹显示可安装,请单击“Next(下一步)”。如不可安装,请单击“Change(更改)”以选 择其他文件夹。请使用计算机上的文件夹,而不是映射的网络驱动器。
在“Setup Type(安装类型)”对话框中,接受默认的Development,然后单击“Next(下一步)”。
在“Initial Security Settings(初始安全设置)”对话框中,选择技术概要(First Look)中所推荐的 安全类型。通常应选用Normal(正常)类型。如未找到推荐的安全类型,请使用Minimal(最小值),然后 单击“Next(下一步)”。
(仅限正常和锁定安全类型)在“Enter Credentials(输入凭据)”对话框中,选择在defined Username account(定义的用户名账号)下运行InterSystems IRIS,确认Windows用户名和域名正确,并输入 Windows密码。然后单击“Next(下一步)”。
(仅限正常和锁定安全类型)在InterSystems IRIS Users configuration(InterSystems IRIS用户配 置)对话框中,输入并再次确认8-32个字符的密码(允许使用字母数字和标点符号)。请注意此密码将在 登录InterSystems IRIS主要管理工具(management tools)时使用。然后单击“Next(下一步)”。
(仅限正常和锁定安全类型)输入CSPSystem Account的密码时(Enter password for CSPSystem account),请输入并再次确认8-32个字符的密码(允许使用字母数字和标点符号)。请记住此密码。然后 单击“Next(下一步)”。
在“Ready to Install the Program(准备安装程序)”对话框中,单击“License(许可证)”,然后选 择许可证密钥文件。然后单击“Install(安装)”,此安装过程需要几分钟时间。
要访问新安装,请右键单击上箭头
4 在Linux系统安装 InterSystems IRIS
在Linux系统上安装 InterSystems IRIS须知:
在Linux中创建一个组,并添加您的用户账号。
提取安装文件。
跳转至安装文件。
运行命令“sudo ./irisinstall”,它将出现一系列提示
如果系统提示您要输入平台的编号,请输入为Red Hat Enterprise Linux列出的编号。
“Enter instance name(输入实例名称)”,请输入用户名。仅使用字母数字字符和下划线。
按Enter键确认名称。
“Enter a destination directory for the new instance(为新实例输入目标目录)”,请输入 InterSystems IRIS系统文件的目录名称,您的计算机上不存在目录,不要使用符号链接 (symlink)。
按Enter确认需要创建的新目录(或使用输入的现有目录)。
“Setup type<1>(安装程序类型<1>)”,按Enter键接受默认安装类型(Development)。
“Initial Security settings(初始安全设置)”,请输入技术概要(First Look)中所推荐的安全 类型的编号,通常应选择Normal(正常)类型。如果没有,请按Enter接受默认值1(Minimal)。
(仅限正常和锁定安全类型)“Which user should be the owner of this instance?(本实例的用户 是?)”请输入您的用户账户名称。
(仅限正常和锁定安全类型)“Please enter the common password for _SYSTEM...(请输入 _SYSTEM...的通用密码)”,输入(然后再次确认)8-32个字符的密码(允许使用字母数字和标点符 号)。请注意此密码,因为您将在登录到InterSystems IRIS主要管理工具(management tools)时使 用此密码。
(仅限正常和锁定安全类型)“Please enter the common password for CSPSystem...(请输入 CSPSystem...的通用密码)”,输入(然后再次确认)8-32个字符的密码(允许使用字母数字和标点 符号)。请记住此密码。
“What group should be allowed to start and stop this instance?(应该允许哪个组启动和停 止此实例?)”请输入您在上面的步骤1中创建的组的名称。
“Do you want to enter a license key(您是否需要输入一个license key?)”输入y,然后输入许 可证密钥的完整路径名(例如, /home/user/iris/iris.key)。
该脚本会显示您在继续之前选择的安装选项。按Enter键选择继续安装。
请注意安装结束时显示的URL:它是管理门户(Management Portal)的URL,也是 InterSystems IRIS的系 统管理用户界面。
要检查新安装实例的状态并查看其他信息,请在Linux命令行下输入“iris list”查看实例列表。
5 在macOS系统安装InterSystems IRIS
要使用bashshell在macOS上安装 InterSystems IRIS:
在macOS中创建一个组,并添加您的用户账户。
提取安装文件。
跳转至安装文件。
运行命令“sudo ./irisinstall”,它将出现一系列提示。
如果系统提示您要输入平台的编号,请输入macOS列出的编号。
“Enter instance name(输入实例名称)”,请输入用户名。仅使用字母数字字符和下划线。
按Enter键确认实例名称。
“Enter a destination directory for the new instance(为新实例输入目标目录)”请输入 InterSystems IRIS系统文件的目录名称,您的计算机上不存在目录,不要使用符号链接 (symlink)。
按Enter确认需要创建的新目录(或使用输入的现有目录)。
“Setup type<1>(安装程序类型<1>)”,按Enter键接受默认安装类型(Development)。
“Initial Security settings(初始安全设置)”,请输入技术概要(First Look)中所推荐的安全 类型的编号。通常应选择Normal(正常)安全类型。如果没有,请按Enter接受默认值1(Minimal)。
(仅限正常和锁定安全)“Which user should be the owner of this instance?(本实例的用户 是?)”请输入您的用户账户名称。
(仅限正常和锁定安全类型)“Please enter the common password for _SYSTEM...(请输入 _SYSTEM...的通用密码)”,输入(然后再次确认)密码(包含字母和数字)。请注意此密码,因为 您将在登录到主要InterSystems IRIS管理工具(management tools)时使用此密码。
(仅限正常和锁定安全类型)“Please enter the common password for CSPSystem...(请输入 CSPSystem...的通用密码)”,输入(然后再次确认)密码(包含字母和数字)。请记住此密码。
“What group should be allowed to start and stop this instance?(应该允许哪个组启动和停 止此实例?)”请输入您在上面的步骤1中创建的组的名称。
“Do you want to enter a license key(您是否需要输入一个license key?)”输入y,然后输入许 可证密钥的完整路径名(例如, /home/user/iris/iris.key)。
该脚本会显示您在继续之前选择的安装选项。按Enter键选择继续安装
请注意安装结束时显示的URL:它是管理门户(Management Portal)的URL,也是 InterSystems IRIS的系统管理用户界面。
要检查新安装实例的状态并查看其他信息,请进入 命令行并输入“iris list”查看实例列表。
文章
Jeff Liu · 一月 7, 2021
Google Cloud Platform (GCP) 为基础架构即服务 (IaaS) 提供功能丰富的环境,其作为云提供完备的功能,支持所有的 InterSystems 产品,包括最新的 InterSystems IRIS 数据平台。 与任何平台或部署模型一样,必须留心以确保考虑到环境的各个方面,例如性能、可用性、操作和管理程序。 本文将详细阐述所有这些方面。
以下概述和详细内容由谷歌提供,可在此处找到。
概述
### GCP 资源
GCP 由一系列物理资产(例如计算机和硬盘驱动器)和虚拟资源(例如虚拟机(VM))组成,它们分布于谷歌遍布全球的数据中心。 每个数据中心的位置都是一个泛区域。 每个区域都是地区的集合,这些地区在该区域内彼此分离。 每个地区都通过一个名称标识,名称由字母标识符和相应区域的名称组成。
这种资源分配带来众多优势,包括发生故障时提供冗余,以及通过将资源配置在客户端附近来减少延迟。 这种分配也引入一些有关如何统筹资源的规则。
### 访问 GCP 资源
在云计算中,物理硬件和软件变成了服务。 这些服务提供对基础资源的访问。 在 GCP 上开发基于 InterSytems IRIS 的应用程序时,您可混合和匹配这些服务,组合它们来提供您所需的基础架构,然后添加您的代码来实现您要构建的方案。 有关可用服务的详细信息, 可在此处找到。
### 项目
您分配和使用的任何 GCP 资源必须属于一个项目。 项目由设置、权限和其他描述应用程序的元数据组成。 根据区域和地区规则,单个项目中的资源能够轻松协作,例如通过内部网络进行通信。 每个项目包含的资源在项目边界上保持独立;您只能通过外部网络连接来互连它们。
服务交互
GCP 提供 3 种与服务和资源交互的基本方法。
#### 控制台
Google Cloud Platform 控制台提供基于 web 的图形用户界面,供您管理 GCP 项目和资源。 使用 GCP 控制台,您可创建新项目,或选择现有项目,可使用您在项目环境中创建的资源。 您可以创建多个项目,因此您可以使用项目以任何对您有意义的方式分开您的工作。 例如,如果您想确保只有某些团队成员可以访问项目中的资源,而所有团队成员可以继续访问另一个项目中的资源,则可以开始一个新项目。
命令行界面
如果您喜欢在终端窗口中工作,Google Cloud SDK 提供 gcloud 命令行工具,让您可以访问所需的命令。 gcloud 工具可用于管理您的开发工作流程和 GCP 资源。 有关 gcloud 的详细内容可在此处找到。
GCP 也提供 Cloud Shell,一种基于浏览器的 GCP 交互 shell 环境。 可从 GCP 控制台访问 Cloud Shell。 Cloud Shell 提供:
临时计算引擎虚拟机实例。
从 web 浏览器通过命令行访问实例。
内置代码编辑器。
5 GB 持久性磁盘存储。
预安装 Google Cloud SDK 和其他工具。
支持 Java、Go、Python、Node.js、PHP、Ruby 和 .NET 语言。
Web 预览功能。
访问 GCP 控制台项目和资源的内置授权。
客户端库
Cloud SDK 拥有客户端库,让您轻松创建和管理资源。 GCP 客户端库公开 API 有两个主要目的:
应用 API 提供对服务的访问。 应用 API 针对支持的语言(例如 Node.js 和 Python )进行了优化。 客户端库围绕服务隐喻而设计,因此您可以更自然地使用服务,并编写更少的样板代码。 客户端库还提供身份验证和授权助手。 有关详细信息可在此处找到。
管理 API 提供资源管理功能。 例如,如果您想构建自己的自动化工具,可以使用管理 API。
您还可以使用 Google API 客户端库来访问产品的 API,如 Google Map、Google Drive 和 YouTube。 有关 GCP 客户端库的详细信息可在此处找到。
InterSystems IRIS 示例体系结构
本文部分内容阐述了面向 GCP 的 InterSystems IRIS 部署示例,旨在为特定应用程序的部署抛砖引玉。 这些示例可用作很多部署方案的指南。 此参考体系结构拥有非常强大的部署选项,从最小规模的部署,到满足计算和数据需求的大规模可扩展工作负载,不一而足。
本文还介绍了高可用性和灾难恢复选项以及其他建议的系统操作。 个体可对这些进行相应的修改以支持其组织的标准实践和安全策略。
针对您的特定应用,就基于 GCP 的 InterSystems IRIS 部署,您可联系 InterSystems 进一步探讨。
* * *
示例参考体系结构
以下示例体系结构按照容量和功能逐步升级的顺序讲述了几种不同的配置, 分别为小型开发/生产/大型生产/分片集群生产。先从中小型配置讲起,然后讲述具有跨地区高可用性以及多区域灾难恢复的大规模可扩展性解决方案。 此外,还讲述了一个将 InterSystems IRIS 数据平台的新分片功能用于大规模处理并行 SQL 查询的混合工作负载的示例。
###
小型开发配置
在本示例中,显示了一个能支持 10 名开发人员和 100GB 数据的小型开发环境,这基本是最小规模的配置。 只要适当地更改虚拟机实例类型并增加持久性磁盘存储,即可轻松支持更多的开发人员和数据。
这足以支持开发工作,并让您熟悉 InterSystems IRIS 功能以及 Docker 容器的构建和编排(如果需要的话)。 小型配置通常不采用具有高度可用性的数据库镜像,但是如果需要高可用性,则可随时添加。
小型配置示例图
示例图 2.1.1-a 显示了图表 2.1.1-b 中的资源。 其中包含的网关只是示例,可做相应地调整以适应您组织的标准网络实践。
下列 GCP VPC 项目资源是针对最小规模的配置提供的。 可根据需求添加或删除 GCP 资源。
小型配置 GCP 资源
下表提供了小型配置 GCP 资源的示例。
需要考虑适当的网络安全和防火墙规则,以防止对 VPC 的不必要访问。 谷歌提供网络安全最佳做法供您入门使用,可在此处找到。
注意:VM 实例需要公共 IP 地址才能访问 GCP 服务。 谷歌建议使用防火墙规则来限制这些 VM 实例的传入,尽管这种做法可能会引起一些问题。
如果您的安全策略确实需要内部 VM 实例,则您需要在网络上手动设置 NAT 代理和相应的路由,以便内部实例可以访问互联网。 务必要明确,您无法使用 SSH 直接完全连接到内部 VM 实例。 要连接到此类内部机器,必须设置具有外部 IP 地址的堡垒实例,然后建立隧道通过它。 可以配置堡垒主机,以提供进入 VPC 的外部入口点。
有关堡垒主机的详细信息,可在此处找到。
产品配置
在本示例中,展示了一个规模较大的产品配置,其采用 InterSystems IRIS 数据库镜像功能来支持高可用性和灾难恢复。
此配置包括 InterSystems IRIS 数据库服务器同步镜像对,该镜像服务器在区域 1 内分为两个地区,用于自动故障转移,在区域 2 内的第三个 DR 异步镜像成员用于灾难恢复,以防万一整个 GCP 区域脱机 。
InterSystems Arbiter 和 ICM 服务器部署在单独的第三个地区,以提高弹性。 此示例体系结构还包括一组可选的负载均衡 web 服务器,用于支持启用 Web 的应用程序。 这些使用 InterSystems 网关的 web 服务器可以根据需要进行缩放。
产品配置示例图
示例图 2.2.1-a 显示了图表 2.2.1-b 中的资源。 其中包含的网关只是示例,可做相应地调整以适应您组织的标准网络实践。
建议将以下 GPC VPC 项目中的资源作为分片集群部署的最低配置。 可根据需求添加或删除 GCP 资源。
产品配置 GCP 资源
下表提供了产品配置 GCP 资源的示例。
大型产品配置
在本示例中,提供了一个大规模可缩放性配置。该配置通过扩展 InterSystems IRIS 功能也引入使用 InterSystems 企业缓存协议 (ECP:EnterpriseCacheProtocol) 的应用程序服务器,实现对用户的大规模横向缩放。 本示例甚至包含了更高级别的可用性,因为即使在数据库实例发生故障转移的情况下,ECP 客户端也会保留会话细节。 多个 GCP 地区与基于 ECP 的应用程序服务器和部署在多个区域中的数据库镜像成员一起使用。 此配置能够支持每秒数千万次的数据库访问和数万亿字节数据。
大型产品配置示例图
示例图 2.3.1-a 显示了图表 2.3.1-b 中的资源。 其中包含的网关只是示例,可做相应地调整以适应您组织的标准网络实践。
此配置中包括一个故障转移镜像对,四个或更多的 ECP 客户端(应用程序服务器),以及每个应用程序服务器对应一个或多个 Web 服务器。 故障转移数据库镜像对在同一区域中的两个不同 GCP 地区之间进行划分,以提供故障域保护,而 InterSystems Arbiter 和 ICM 服务器则部署在单独的第三地区中,以提高弹性。
灾难恢复扩展至第二个 GCP 区域和地区,与上一示例中的情况类似。 如果需要,可以将多个 DR 区域与多个 DR 异步镜像成员目标一起使用。
建议将以下 GPC VPC 项目中的资源作为大型生产部署的最低配置。 可根据需求添加或删除 GCP 资源。
大型产品配置 GCP 资源
下表提供了大型产品配置 GCP 资源的示例。
采用 InterSystems IRIS 分片集群的生产配置
在此示例中,提供了一个针对 SQL 混合工作负载的横向缩放性配置,其包含 InterSystems IRIS 的新分片集群功能,可实现 SQL 查询和表跨多个系统的大规模横向缩放。 本文后面将详细讨论 InterSystems IRIS 分片集群及其功能。
采用 InterSystems IRIS 分片集群的生产配置
示例图 2.4.1-a 显示了图表 2.4.1-b 中的资源。 其中包含的网关只是示例,可做相应地调整以适应您组织的标准网络实践。
此配置中包括四个镜像对,它们为数据节点。 每个故障转移数据库镜像对在同一区域中的两个不同 GCP 地区之间进行划分,以提供故障域保护,而 InterSystems Arbiter 和 ICM 服务器则部署在单独的第三地区中,以提高弹性。
此配置允许从集群中的任何数据节点使用所有的数据库访问方法。 大型 SQL 表数据在物理上跨所有数据节点进行分区,以实现查询处理和数据卷的大规模并行。 将所有这些功能组合在一起,就可以支持复杂的混合工作负载,比如大规模分析 SQL 查询及引入的新数据,所有这一切均在一个 InterSystems IRIS 数据平台中执行。
注意,上面图表中以及下表“资源类型”列中的术语“计算[Engine]”是一个表示 GCP(虚拟)服务器实例的 GCP 术语,将在本文的 3.1节中做进一步介绍。 它并不表示或暗示本文后面所描述的集群体系结构中对“计算节点”的使用。
建议将以下 GPC VPC 项目中的资源作为分片集群部署的最低配置。 可根据需求添加或删除 GCP 资源。
使用分片集群配置 GCP 资源的产品
下表提供了分片集群配置 GCP 资源的示例。
* * *
云概念简介
Google Cloud Platform (GCP) 为基础架构即服务 (IaaS) 提供功能丰富的云环境,使其具备完备的功能,支持所有的 InterSystems 产品,包括支持基于容器的 DevOps 及最新的 InterSystems IRIS 数据平台。 与任何平台或部署模型一样,必须留心以确保考虑到环境的各个方面,例如性能、可用性、系统操作、高可用性、灾难恢复、安全控制和其他管理程序。 本文档将介绍所有云部署涉及的三个主要组件:计算、存储和网络。
计算引擎(虚拟机)
GCP 中存在数个针对计算引擎资源的选项,以及众多虚拟 CPU 和内存规范及相关存储选项。 在 GCP 中值得注意的一点是,对给定机器类型中 vCPU 数量的引用等于一个 vCPU,其是虚拟机监控程序层上物理主机中的一个超线程。
就本文档的目的而言,将使用 n1-standard * 和 n1-highmem * 实例类型,这些实例类型在大多数 GCP 部署区域中广泛可用。 但是,对于将大量数据缓存在内存中的大型工作数据集而言,使用 n1-ultramem * 实例类型是不错的选择。 除非另有说明,否则使用默认实例设置(例如实例可用性策略)或其他高级功能。 有关各种机器类型的详细信息,可在此处找到。
磁盘存储
与 InterSystems 产品最直接相关的存储类型是持久性磁盘类型,但是,只要了解并适应数据可用性限制,本地存储可以用于高水平的性能。 还有其他一些选项,例如云存储(存储桶),但是这些选项更特定于单个应用程序的需求,而非支持 InterSystems IRIS 数据平台的操作。
与大多数其他云提供商一样,GCP 对可与单个计算引擎关联的持久性存储施加了限制。 这些限制包括每个磁盘的最大容量、关联到每个计算引擎的持久性磁盘的数量,以及每个持久性磁盘的 IOPS 数量,对单个计算引擎实例 IOPS 设置上限。 此外,对每 GB 磁盘空间设有 IOPS 限制,因此有时需要调配更多磁盘容量才能达到所需的 IOPS 速率。
这些限制可能会随着时间而改变,可在适当时与谷歌确认。
磁盘卷有两种类型的持久性存储类型:“标准持久性”磁盘和“SSD 持久性”磁盘。 SSD 持久性磁盘更适合于那些要求低延迟 IOPS 和高吞吐量的生产工作负载。 标准持久性磁盘对于非生产开发和测试或归档类型的工作负载,是一种更经济的选择。
有关各种磁盘类型及限制的详细信息,可在此处找到。
VPC 网络
强烈建议采用虚拟私有云 (VPC) 网络来支持 InterSystems IRIS 数据平台的各个组件,同时提供正确的网络安全控制、各种网关、路由、内部 IP 地址分配、网络接口隔离和访问控制。 本文档中提供了一个详细的 VPC 示例。
有关 VPC 网络和防火墙的详细信息,可在此处找到。
* * *
虚拟私有云 (VPC) 概述
GCP VPC 与其他云提供商略有不同,其更加简单和灵活。 可在此处找到各概念的比较。
在 GCP 项目中,每个项目允许有数个 VPC(目前每个项目最多允许 5 个),且创建 VPC 网络有两个选项——自动模式和自定义模式。
此处提供每个类型的详细信息。
在大多数大型云部署中,采用多个 VPC 将各种网关类型与以应用为中心的 VPC 进行隔离,并利用 VPC 对等进行入站和出站通信。 有关适合您的公司使用的子网和任何组织防火墙规则的详细信息,强烈建议您咨询您的网络管理员。 本文档不阐述 VPC 对等方面的内容。
在本文档提供的示例中,使用 3 个子网的单一 VPC 用于提供各种组件的网络隔离,以应对各种 InterSystems IRIS 组件的可预测延迟和带宽以及安全性隔离。
网络网关和子网定义
本文档的示例中提供了两种网关,以支持互联网和安全 VPN 连接。 要求每个入口访问都具有适当的防火墙和路由规则,从而为应用程序提供足够的安全性。 有关如何使用路由的详细信息,可在此处找到。
提供的示例体系结构中使用了 3 个子网,它们专与 InterSystems IRIS 数据平台一起使用。 这些单独的网络子网和网络接口的使用为上述 3 个主要组件的每一个提供了安全控制、带宽保护和监视方面的灵活性。 有关各种用例的详细信息,可在此处找到。
有关创建具有多个网络接口的虚拟机实例的详细信息,可在此处找到。
这些示例中包含的子网:
用户空间网络用于入站连接用户和查询
分片网络用于分片节点之间的分片间通信
镜像网络通过同步复制和单个数据节点的自动故障转移实现高可用性。
注意:仅在单个 GCP 区域内具有低延迟互连的多个地区之间,才建议进行故障转移同步数据库镜像。 区域之间的延迟通常太高,无法提供积极的用户体验,特别是对于具有高更新率的部署更如此。
### 内部负载均衡器
大多数 IaaS 云提供商缺乏提供虚拟 IP (VIP) 地址的能力,这种地址通常用在自动化数据库故障转移设计中。 为了解决这一问题,InterSystems IRIS 中增强了几种最常用的连接方法,尤其是 ECP 客户端和 Web 网关,从而不再依赖 VIP 功能使它们实现镜像感知和自动化。
xDBC、直接 TCP/IP 套接字等连接方法,或其他的直接连接协议,均需要使用类 VIP 地址。 为了支持这些入站协议,InterSystems 数据库镜像技术使用称作<span class="Characteritalic" style="font-style:italic">mirror_status.cxw</span>的健康检查状态页面为 GCP 中的这些连接方法提供自动化故障转移,以与负载均衡器进行交互,实现负载均衡器的类 VIP 功能,仅将流量重定向至活动的主镜像成员,从而在 GCP 内实现完整且强大的高可用性设计。
此处提供了使用负载均衡器实现类 VIP 功能的详细信息。
示例 VPC 拓扑
下图 4.3-a 中的 VPC 布局组合了所有组件,具有以下特点:
利用一个区域内的多个地区实现高可用性
提供两个区域进行灾难恢复
利用多个子网进行网络隔离
包括分别用于互联网和 VPN 连接的单独网关
使用云负载均衡器进行镜像成员的 IP 故障转移
* * *
持久性存储概述
如简介中所述,建议使用 GCP 持久性磁盘,尤其 SSD 持久性磁盘类型。 之所以推荐 SSD 持久性磁盘,是由于其拥有更高的读写 IOPS 速率以及低的延迟,适合于事务性和分析性数据库工作负载。 在某些情况下,可使用本地 SSD,但值得注意的是,本地 SSD 的性能提升会在可用性、耐用性和灵活性方面做出一定的权衡。
可在此处找到本地 SSD 数据持久性方面的详细信息,您可了解何时保存本地 SSD 数据以及何时不保存它们。
LVM 条带化
与其他的云提供商一样,GCP 在每个虚拟机实例的 IOPS、空间容量和设备数量方面都施加了众多存储限制。 有关当前的限制,请查阅 GCP 文档,可在此处找到。
由于这些限制的存在,使用 LVM 条带化实现数据库实例的单个磁盘设备的 IOPS 最大化变得非常必要。 在提供的此示例虚拟机实例中,建议使用以下磁盘布局。 与 SSD 持久性磁盘相关的性能限制可在此处找到。
注意:目前,每个虚拟机实例最多有 16 个持久性磁盘,但 GCP 近期的方案则增至 128 个(测试),这将是令人欣慰的提高。
LVM 条带化的优势在于可以将随机的 IO 工作负载分散到更多的磁盘设备并继承磁盘队列。 以下是如何在 Linux 中将 LVM 条带化用于数据库卷组的示例。 本示例在一个 LVM PE 条带中使用 4 个磁盘,物理盘区 (PE) 大小为 4MB。 或者,如果需要,可以使用更大的 PE 容量。
步骤 1:根据需要创建标准性磁盘或 SSD 持久性磁盘
步骤 2:使用“lsblk -do NAME,SCHED”将每个磁盘设备的 IO 调度器设置为 NOOP
步骤 3:使用“lsblk -do KNAME,TYPE,SIZE,MODEL”识别磁盘设备
步骤4:使用新的磁盘设备创建磁盘卷组
vgcreate s 4M
示例: vgcreate -s 4M vg_iris_db /dev/sd[h-k]
步骤 4:创建逻辑卷
lvcreate n -L -i -I 4MB
示例:lvcreate -n lv_irisdb01 -L 1000G -i 4 -I 4M vg_iris_db
步骤 5:创建文件系统
mkfs.xfs K
示例:mkfs.xfs -K /dev/vg_iris_db/lv_irisdb01
步骤 6:装载文件系统
使用以下装载条目编辑 /etc/fstab
/dev/mapper/vg_iris_db-lv_irisdb01 /vol-iris/db xfs defaults 0 0
装载 /vol-iris/db
使用上表,每个 InterSystems IRIS 服务器将具有以下配置:2 个 SYS 磁盘、4 个 DB 磁盘、2 个主日志磁盘、2 个备用日志磁盘。
为了增长,LVM 允许在需要的情况下不中断地扩展设备和逻辑卷。 有关持续管理和扩展 LVM 卷的最佳做法,请查阅 Linux 文档。
注意:强烈建议同时为数据库和写入映像日志文件启用异步 IO。 有关在 Linux 上启用的详细信息,请参阅下列社区文章:https://community.intersystems.com/post/lvm-pe-striping-maximize-hyper-converged-storage-throughput
* * *
配置
InterSystems IRIS 新增了 InterSystems Cloud Manager (ICM)。 ICM 执行众多任务,并提供许多用于配置 InterSystems IRIS 数据平台的选项。 ICM 作为 Docker 映像提供,其拥有配置强大的、基于 GCP 云的解决方案所需的一切。
ICM 当前支持以下平台上的配置:
Google Cloud Platform (GCP)
Amazon Web Services,包括 GovCloud (AWS / GovCloud)
Microsoft Azure Resource Manager,包括 Government (ARM / MAG)
VMware vSphere (ESXi)
ICM 和 Docker 可以从台式机/笔记本电脑工作站运行,也可以具有中央专用的适度“配置”服务器和中央存储库。
ICM 在应用程序生命周期中的作用是“定义->配置->部署->管理”
有关安装和使用 ICM 及 Docker 的详细信息,可在此处找到。
注意:任何云部署都非必须使用 ICM。 完全支持传统的 tar-ball 分布式安装和部署方法。 但是,建议使用 ICM,以简化云部署中的配置和管理。
容器监视
ICM 包含基本的监视工具,其使用 Weave Scope 进行基于容器的部署。 默认情况下不会部署该工具,需要在默认的文件中使用监视器字段指定它。
有关使用 ICM 进行监视、编排和调度的详细信息,可在此处找到。
有关 Weave Scope 的概述和该文档,可在此处找到。
* * *
高可用性
InterSystems 数据库镜像可在任何云环境中提供最高级别的可用性。 有一些选项可以直接在实例级别提供虚拟机弹性。 有关 GCP 中可用的各种政策的详细信息,可在此处找到。
上文中已讨论了云负载均衡器如何通过数据库镜像为虚拟 IP(类 VIP)功能提供自动化 IP 地址故障转移。 云负载均衡器使用<span class="Characteritalic" style="font-style:italic">mirror_status.cxw</span>健康检查状态页面,上文内部负载均衡器部分提到过该页面。 数据库镜像有两种模式——自动故障转移同步镜像、异步镜像。 在本示例中,将介绍同步故障转移镜像。 有关镜像的详细信息,可在此处找到。
最基本的镜像配置是仲裁器控制配置中的一对故障转移镜像成员。 仲裁器放置在同一区域内的第三个地区中,以防止潜在的地区中断影响仲裁器和其中一个镜像成员。
在网络配置中,有多种方法专供设置镜像。 在本示例中,我们将使用本文档前述网络网关和子网定义部分中定义的网络子网。 下一部分内容将提供 IP 地址方案示例,并且基于本部分内容,将仅描述网络接口和指定的子网。
* * *
灾难恢复
InterSystems 数据库镜像将支持灾难恢复的高可用性功能扩展到另一个 GCP 地理区域,以在整个 GCP 区域万一脱机的情况下支持操作弹性。 应用程序如何耐受此类中断取决于恢复时间目标 (RTO) 和恢复点目标 (RPO)。 这些将为设计适当的灾难恢复计划进行的分析提供初始框架。 以下链接中的指南提供了您在为自己的应用程序制定灾难恢复计划时要考虑的事项。 https://cloud.google.com/solutions/designing-a-disaster-recovery-plan 和 https://cloud.google.com/solutions/disaster-recovery-cookbook
异步数据库镜像
InterSystems IRIS 数据平台的数据库镜像提供强大的功能,可在 GCP 地区和区域之间异步复制数据,以帮助支持您的灾难恢复计划的 RTO 和 RPO 目标。 有关异步镜像成员的详细信息,可在此处找到。
与上述高可用性部分中讲述的内容相似,云负载均衡器也使用上文内部负载均衡器部分中提到过的<span class="Characteritalic" style="font-style:italic">mirror_status.cxw</span>健康检查状态页面为虚拟 IP(类 VIP)功能提供自动化 IP 地址故障转移,以进行 DR 异步镜像。
在本示例中,将介绍 DR 异步故障转移镜像,并介绍 GCP 全局负载均衡服务,以便为上游系统和客户端工作站提供单个任播 IP 地址,不分您的 InterSystems IRIS 部署是否在哪个区域或地区中运行。
GCP 的其中一个发展就是负载均衡器的诞生,这是一种软件定义的全局资源,并且不受制于特定的区域。 由于其不是基于实例或设备的解决方案,因此它具有跨区域利用单个服务的独特功能。 有关通过单个任播 IP 进行 GCP 全局负载均衡的详细信息,可在此处找到。
在上述示例中,所有 3 个 InterSystems IRIS 实例的 IP 地址都提供给了 GCP 全局负载均衡器,它会将流量仅定向到承担主要镜像的镜像成员,而不论其位于哪个地区或区域。
* * *
分片集群
InterSystems IRIS 拥有一系列全面的功能来缩放您的应用程序,您可以根据自己工作负载的性质以及所面临的特定性能挑战来单独或组合应用这些功能。 分片功能是这些功能中的一种,可跨多个服务器对数据及其关联的缓存进行分区,从而为查询和数据引入提供灵活、高性价比的性能扩展,同时通过高效的资源利用最大化基础架构的价值。 InterSystems IRIS 分片群集可以为各种应用提供显著的性能优势,尤其对于工作负载包括以下一项或多项的应用更是如此:
大容量或高速数据引入,或两者的组合。
相对较大的数据集、返回大量数据的查询,或两者。
执行大量数据处理的复杂查询,例如扫描磁盘上大量数据或涉及大量计算工作的查询。
这些因素分别都会影响分片的潜在优势,但组合起来使用它们可能会增加优势。 例如,这 3 个因素的组合——快速引入大量数据、大型数据集、检索和处理大量数据的复杂查询——使得当今的许多分析性工作负载非常适合进行分片。
注意,这些特征都与数据有关;InterSystems IRIS 分片的主要功能是缩放数据量。 不过,当涉及某些或所有这些与数据相关的因素的工作负载也经历大量用户的超高查询量时,分片群集也能提供用户量缩放功能。 分片也可以与纵向缩放相结合。
操作概述
分片架构的核心是跨多个系统对数据及其关联的缓存进行分区。 分片集群跨多个 InterSystems IRIS 实例以行方式(称为数据节点)对大型数据库表进行物理上的横向分区,同时允许应用通过任何节点透明地访问这些表,但仍将整个数据集看作一个逻辑并集。 该架构具有 3 个优点:
并行处理:查询在数据节点上并行运行,然后将结果进行合并和组合后,由节点作为完整查询结果返回给连接的应用。许多情况下,这大大提高了执行速度。
分区缓存:每个数据节点都有自己的缓存,专用于它存储的分片表数据分区,再不是单个实例的缓存服务于整个数据集,这大大降低了缓存溢出的风险,并强制执行性能降低式磁盘读取。
并行加载:数据可以并行加载到数据节点,从而减少了引入工作负载和查询工作负载之间的缓存和磁盘争用,提高了两者的性能。
有关 InterSystems IRIS 分片集群的详细信息,可在此处找到。
分片元素和实例类型
分片集群包含至少一个数据节点,如果特定性能或工作负载有需要,则可添加一定数量的计算节点。 这两种节点类型提供简单的构建块,从而实现简单、透明和高效的调整模型。
数据节点
数据节点存储数据。 在物质层面,分片表[1]数据分布在集群中的所有数据节点上,非分片表数据仅物理存储在第一个数据节点上。 这种区分对用户是透明的,唯一可能的例外是,第一个节点的存储消耗可能比其他节点略高,但是由于分片表数据通常会超出非分片表数据至少一个数量级,因此这种差异可以忽略不计。
需要时,可以跨集群重新均衡分片表数据,这通常发生在添加新的数据节点后。 这将在节点之间移动数据的“存储桶”,以实现数据的近似均匀分布。
在逻辑层面,未分片的表数据和所有分片的表数据的并集在任何节点上都可见,因此客户端会看到整个数据集,这与其连接哪个节点无关。 元数据和代码也会在所有数据节点之间共享。
分片集群的基本架构图仅由在集群中看起来统一的数据节点组成。 客户端应用程序可以连接到任何节点,并且可以像在本地一样体验数据。
[1]为方便起见,术语“分片表数据”在整个文档中用于表示支持分片的任何数据模型的“盘区”数据(标记为已分片)。 术语“未分片表数据”和“未分片数据”用于表示处于可分片盘区但却未这样标记的数据,或表示尚不支持分片的数据模型。
数据节点
对于要求低延迟(可能存在不断涌入数据的冲突)的高级方案,可以添加计算节点以提供用于服务查询的透明缓存层。
计算节点缓存数据。 每个计算节点都与一个数据节点关联,为其缓存相应的分片表数据,此外,它还根据需要缓存非分片表数据,以满足查询的需要。
由于计算节点物理上并不存储任何数据,其只是支持查询执行,因此可对其硬件配置文件进行调整以满足需求,例如通过强调内存和 CPU 并将存储空间保持在最低限度。 当“裸露”应用程序代码在计算节点上运行时,引入数据会被驱动程序 (xDBC, Spark) 直接或被分片管理器代码间接转发到数据节点。
* * *
分片集群说明
分片集群部署有多种组合。 下列各图说明了最常见的部署模型。 These diagrams do not include the networking gateways and details and provide to focus only on the sharded cluster components.
基本分片集群
下图是在一个区域和一个地区中部署了 4 个数据节点的最简单分片群集。 GCP 云负载均衡器用于将客户端连接分发到任何分片集群节点。
在此基本模型中,除了 GCP 为单个虚拟机及其连接的 SSD 持久性存储提供的弹性或高可用性外,没有其他弹性或高可用性。 建议使用两个单独的网络接口适配器,一则为入站客户端连接提供网络安全隔离,二则为客户端流量和分片集群通信之间提供带宽隔离。
具有高可用性的基本分片集群
下图是在一个区域中部署了 4 个镜像数据节点的最简单分片集群,每个节点的镜像在地区之间进行了划分。 GCP 云负载均衡器用于将客户端连接分发到任何分片集群节点。
InterSystems 数据库镜像的使用带来了高可用性,其会在该区域内的第二地区中维护一个同步复制的镜像。
建议使用 3 个单独的网络接口适配器,一方面为入站客户端连接提供网络安全隔离,另一方面为客户端流量、分片集群通信、节点对之间的同步镜像流量之间提供带宽隔离。
此部署模型也引入了本文前面所述的镜像仲裁器。
具有单独计算节点的分片集群
下图采用单独的计算节点和 4 个数据节点扩展了分片集群,以此来应对大量的用户/查询并发。 云负载均衡器服务器池仅包含计算节点的地址。 更新和数据引入将像以前一样继续直接更新到数据节点,以维持超低延迟性能,并避免由于实时数据引入而在查询/分析工作负载之间造成资源的干扰和拥挤。
使用此模型,可以根据计算/查询和数据引入的规模单独微调资源分配,从而在“适时”需要的地方提供最佳资源,实现经济而简单的解决方案,而非只是进行计算或数据的调整,浪费不必要的资源。
计算节点非常适合直接使用 GCP 自动缩放分组(亦称自动缩放),允许基于负载的增加或减少自动从托管实例组添加或删除实例。 自动缩放的工作原理为:负载增加时,将更多的实例添加到实例组(扩展);对实例的需求降低时将其删除(缩减)。
有关 GCP 自动缩放的详细信息,可在此处找到。
自动缩放可帮助基于云的应用程序轻松应对流量增加的情况,并在资源需求降低时降低成本。 只需简单地定义自动缩放策略,自动缩放器就会根据测得的负载执行自动缩放。
* * *
备份操作
备份操作有多个选项。 以下 3 个选项可供您通过 InterSystems IRIS 进行 GCP 部署。
下面的前 2 个选项(下文详细说明)采用快照类型的过程,该过程会在创建快照之前将数据库写入操作挂起到磁盘上,然后在快照成功后恢复更新。
可采取以下高级别步骤通过任一快照方法来创建洁净的备份:
通过数据库外部冻结 API 调用暂停对数据库的写入。
创建操作系统和数据磁盘的快照。
通过外部解冻 API 调用恢复数据库写入。
将设施存档备份到备份位置
有关外部冻结/解冻 API 的详细信息,可在此处找到。
注意:本文档未包含备份示例脚本,但您可定期检查发布到 InterSystems 网站上开发者社区的示例。 请访问 www.community.intersystems.com
第三个选项是 InterSystems 在线备份。 这是小型部署的入门级方法,具有非常简单的用例和界面。 但是,随着数据库的增大,建议将使用快照技术的外部备份作为最佳做法,因为其具有以下优势:备份外部文件、更快的恢复时间,以及企业范围的数据和管理工具。
可以定期添加诸如完整性检查之类的其他步骤,以确保洁净且一致的备份。
决定使用哪种选项取决于您组织的运营要求和策略。 InterSystems 可与您详细讨论各种选项。
GCP 持久性磁盘快照备份
可以使用 GCP gcloud 命令行 API 以及 InterSystems 外部冻结/解冻 API 功能实现备份操作。 这允许实现真正的 24x7 全天候操作弹性,并确保洁净常规备份。 有关管理、创建和自动化 GCP 持久性磁盘快照的详细信息,可在此处找到。
逻辑卷管理器 (LVM) 快照
或者,可以在 VM 本身中部署单个备份代理,利用文件级备份,并结合逻辑卷管理器 (LVM) 快照,来使用市面上的许多第三方备份工具。
该模型的主要优点之一是能够对基于 Windows 或 Linux 的 VM 进行文件级恢复。 此解决方案需要注意的几点是,由于 GCP 和大多数其他 IaaS 云提供商都不提供磁带媒体,因此所有的备份存储库对于短期归档均基于磁盘,并能够利用 Blob 或存储桶类型的低成本存储来进行长期保留 (LTR)。 强烈建议您使用此方法来使用支持重复数据删除技术的备份产品,以最有效地利用基于磁盘的备份存储库。
这些具有云支持的备份产品的示例包括但不限于:Commvault、EMC Networker、HPE Data Protector 和 Veritas Netbackup。
注意:InterSystems 不会验证或认可一种备份产品是否优于其他产品。 选择备份管理软件的责任由客户个人决定。
在线备份
对于小型部署,内置在线备份工具也是可行的选择。 该 InterSystems 数据库在线备份实用工具通过捕获数据库中的所有块来备份数据库文件中的数据,然后将输出写入顺序文件。 这种专有的备份机制旨在使生产系统的用户不停机。 有关在线备份的详细信息,可在此处找到。
在 GCP 中,在线备份完成后,必须将备份输出文件和系统正在使用的所有其他文件复制到该虚拟机实例之外的其他存储位置。 存储桶/对象存储是对其很好的命名。
使用 GCP 存储桶有两种选择。
直接使用 gcloud 脚本 API 来复制和操作新创建的在线备份(和其他非数据库)文件。 有关详细信息可在此处找到。
尽管云存储桶属于对象存储,但将存储桶装载为文件系统,并将其用作类似持久性磁盘的功能足以。
有关装载云存储桶(使用云存储 FUSE )的详细信息,可在此处找到。
文章
Michael Lei · 五月 12, 2021
# InterSystems 数据平台和性能 - 第 5 部分 使用 SNMP 进行监控
在之前的帖子中,我展示了如何使用 pButtons 收集历史性能指标。 我首选 pButtons 是因为我知道它随每个数据平台实例(Ensemble、Caché、...)一起安装。 不过,还有其他方法可以实时收集、处理和显示 Caché 性能指标,以进行简单的监视,或进行更重要的并且复杂得多的运营分析和容量计划。 最常见的数据收集方法之一是使用 SNMP(简单网络管理协议)。
SNMP 是 Caché 向各种管理工具提供管理和监控信息的标准方式。 Caché 在线文档包含了 Caché 和 SNMP 之间接口的详细信息。 虽然 SNMP 应该可以直接与 Caché 配合工作,但仍有一些配置技巧和陷阱。 我经历了很多次错误的开始,并且在 InterSystems 其他同事的帮助下,才让 Caché 与操作系统 SNMP 主代理建立对话,所以我写了这篇帖子,希望您可以避免同样的痛苦。
在本帖中,我将介绍如何为 Red Hat Linux 上的 Caché 设置和配置 SNMP,您应该能够对其他 \*nix 版本使用相同步骤。 我使用 Red Hat 写这篇文章是因为在 Linux 上进行设置更棘手一些;在 Windows 上,Caché 会自动安装一个 DLL 来与标准 Windows SNMP 服务连接,所以应该更容易配置。
在服务器端设置 SNMP 后,就可以使用任意数量的工具开始监控。 我将展示如何使用流行的 PRTG 工具进行监控,但还有许多其他工具 - [这是部分列表](https://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems)。
注意 Caché 和 Ensemble 的 MIB 文件包含在 `Caché_installation_directory/SNMP` 文件夹中,这两个文件为:`ISC-CACHE.mib` 和 `ISC-ENSEMBLE.mib`。
#### 本系列的前几个帖子:
- [第 1 部分 - 入门:收集指标。](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-1)
- [第 2 部分 - 研究收集的指标。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-2篇)
- [第 3 部分 - 聚焦 CPU。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-3-篇:聚焦-cpu)
- [第 4 部分 - 关注内存。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-第-4-篇-关注内存)
# 从这里开始...
首先查看 [Caché 在线文档](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp)中的“使用 SNMP 监视 Caché”。
## 1. Caché 配置
按照 [Caché 在线文档](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp)的“_在 Caché 中管理 SNMP_”部分中的步骤,启用 Caché 监视服务,并将 Caché SNMP 子代理配置为在 Caché 启动时自动启动。
检查 Caché 进程是否正在运行,例如查看进程列表或操作系统:
ps -ef | grep SNMP
root 1171 1097 0 02:26 pts/1 00:00:00 grep SNMP
root 27833 1 0 00:34 pts/0 00:00:05 cache -s/db/trak/hs2015/mgr -cj -p33 JOB^SNMP
就是这样,Caché 配置完成了!
## 2. 操作系统配置
这里的工作会多一些。 首先检查 snmpd 守护程序是否已安装并且正在运行。 如果结果为否,则安装并启动 snmpd。
检查 snmpd 状态:
service snmpd status
启动或停止 snmpd:
service snmpd start|stop
如果未安装 snmp,则必须按照操作系统说明进行安装,例如:
yum -y install net-snmp net-snmp-utils
## 3. 配置 snmpd
如 Caché 文档中所述,在 Linux 系统上,最重要的任务是验证系统上的 SNMP 主代理是否与 Agent Extensibility (AgentX) 协议兼容(Caché 以子代理的形式运行),并且主代理处于活动状态,并在标准 AgentX TCP 端口 705 上侦听连接。
我在这里遇到了问题。 我在 `snmp.conf` 文件中犯了一些初级错误,意味着 Caché SNMP 子代理未与操作系统主代理进行通信。 以下示例 `/etc/snmp/snmp.conf` 文件已配置为启动 agentX 并提供对 Caché 和 Ensemble SNMP MIB 的访问。
_请注意,您必须确认以下配置是否符合您的组织的安全策略。_
至少必须编辑以下几行以反映您的系统设置。
例如,将:
syslocation "System_Location"
更改为
syslocation "Primary Server Room"
此外,至少编辑以下两行:
syscontact "Your Name"
trapsink Caché_database_server_name_or_ip_address public
编辑或替换现有 `/etc/snmp/snmp.conf` 文件以匹配以下内容:
###############################################################################
#
# snmpd.conf:
# An example configuration file for configuring the NET-SNMP agent with Cache.
#
# This has been used successfully on Red Hat Enterprise Linux and running
# the snmpd daemon in the foreground with the following command:
#
# /usr/sbin/snmpd -f -L -x TCP:localhost:705 -c./snmpd.conf
#
# You may want/need to change some of the information, especially the
# IP address of the trap receiver of you expect to get traps. I've also seen
# one case (on AIX) where we had to use the "-C" option on the snmpd command
# line, to make sure we were getting the correct snmpd.conf file.
#
###############################################################################
###########################################################################
# SECTION: System Information Setup
#
# This section defines some of the information reported in
# the "system" mib group in the mibII tree.
# syslocation: The [typically physical] location of the system.
# Note that setting this value here means that when trying to
# perform an snmp SET operation to the sysLocation.0 variable will make
# the agent return the "notWritable" error code. IE, including
# this token in the snmpd.conf file will disable write access to
# the variable.
# arguments: location_string
syslocation "System Location"
# syscontact: The contact information for the administrator
# Note that setting this value here means that when trying to
# perform an snmp SET operation to the sysContact.0 variable will make
# the agent return the "notWritable" error code. IE, including
# this token in the snmpd.conf file will disable write access to
# the variable.
# arguments: contact_string
syscontact "Your Name"
# sysservices: The proper value for the sysServices object.
# arguments: sysservices_number
sysservices 76
###########################################################################
# SECTION: Agent Operating Mode
#
# This section defines how the agent will operate when it
# is running.
# master: Should the agent operate as a master agent or not.
# Currently, the only supported master agent type for this token
# is "agentx".
#
# arguments: (on|yes|agentx|all|off|no)
master agentx
agentXSocket tcp:localhost:705
###########################################################################
# SECTION: Trap Destinations
#
# Here we define who the agent will send traps to.
# trapsink: A SNMPv1 trap receiver
# arguments: host [community] [portnum]
trapsink Caché_database_server_name_or_ip_address public
###############################################################################
# Access Control
###############################################################################
# As shipped, the snmpd demon will only respond to queries on the
# system mib group until this file is replaced or modified for
# security purposes. Examples are shown below about how to increase the
# level of access.
#
# By far, the most common question I get about the agent is "why won't
# it work?", when really it should be "how do I configure the agent to
# allow me to access it?"
#
# By default, the agent responds to the "public" community for read
# only access, if run out of the box without any configuration file in
# place. The following examples show you other ways of configuring
# the agent so that you can change the community names, and give
# yourself write access to the mib tree as well.
#
# For more information, read the FAQ as well as the snmpd.conf(5)
# manual page.
#
####
# First, map the community name "public" into a "security name"
# sec.name source community
com2sec notConfigUser default public
####
# Second, map the security name into a group name:
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
# access to 'internet' subtree
view systemview included .1.3.6.1
# access to Cache MIBs Caché and Ensemble
view systemview included .1.3.6.1.4.1.16563.1
view systemview included .1.3.6.1.4.1.16563.2
####
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact systemview none none
编辑 `/etc/snmp/snmp.conf` 文件后,重启 snmpd 守护程序。
service snmpd restart
检查 snmpd 状态,注意出现状态行 __Turning on AgentX master support__,说明 AgentX 已启动。
h-4.2# service snmpd restart
Redirecting to /bin/systemctl restart snmpd.service
sh-4.2# service snmpd status
Redirecting to /bin/systemctl status snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2016-04-27 00:31:36 EDT; 7s ago
Main PID: 27820 (snmpd)
CGroup: /system.slice/snmpd.service
└─27820 /usr/sbin/snmpd -LS0-6d -f
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: Turning on AgentX master support.
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: NET-SNMP version 5.7.2
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
sh-4.2#
重启 snmpd 后,必须使用 `^SNMP` 例程重启 Caché SNMP 子代理:
%SYS>do stop^SNMP()
%SYS>do start^SNMP(705,20)
操作系统 snmpd 守护程序和 Caché 子代理此时应该正在运行并且可访问。
## 4. 测试 MIB 访问
可以在命令行中使用以下命令检查 MIB 访问。 `snmpget` 返回一个值:
snmpget -mAll -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1.5.5.72.50.48.49.53
SNMPv2-SMI::enterprises.16563.1.1.1.1.5.5.72.50.48.49.53 = STRING: "Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2015.2.1 (Build 705U) Mon Aug 31 2015 16:53:38 EDT"
`snmpwalk` 将“遍历”MIB 树或分支:
snmpwalk -m ALL -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1
SNMPv2-SMI::enterprises.16563.1.1.1.1.2.5.72.50.48.49.53 = STRING: "H2015"
SNMPv2-SMI::enterprises.16563.1.1.1.1.3.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/cache.cpf"
SNMPv2-SMI::enterprises.16563.1.1.1.1.4.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/mgr/"
etc
etc
还有几个 Windows 和 \*nix 客户端可用于查看系统数据。 我使用免费的 iReasoning MIB Browser。 您需要将 ISC-CACHE.MIB 文件加载到客户端中,以便它了解 MIB 的结构。
下图显示了 OSX 上的 iReasoning MIB Browser。

## 包括在监视工具中
这里是实施过程中可能有较大差异的地方。 监视或分析工具由您选择。
_请为本帖留下评论,详细说明您使用的工具,以及通过该工具获得的系统监视和管理数值。 这将对其他社区成员有很大帮助。_
下面是流行的 _PRTG_ 网络监视器的截图,其中显示了 Caché 指标。 将 Caché 指标包括在 PRTG 中的步骤与其他工具类似。

### 示例工作流程 - 将 Caché MIB 添加到监视工具中。
#### 第 1 步.
确保您可以连接到操作系统 MIB。 一个提示是针对操作系统而非 Caché 进行故障排除。 监视工具很可能已经了解常见的操作系统 MIB 并针对它们进行了预先配置,因此更容易获得供应商或其他用户的帮助。
根据您选择的监视工具,您可能需要添加 SNMP“模块”或“应用程序”,它们通常是免费或开源的。 我发现供应商对此步骤的说明相当简单直接。
监视操作系统指标后,就该添加 Caché 了。
#### 第 2 步.
将 `ISC-CACHE.mib` 和 `ISC-ENSEMBLE.mib` 导入到工具中,以便其了解 MIB 结构。
这里的步骤各不相同,例如 PRTG 有一个“MIB Importer”实用工具。 基本步骤是在工具中打开文本文件 `ISC-CACHE.mib`,然后将其导入为工具内部格式。 例如,Splunk 使用 Python 格式等。
_注:_我发现如果试图添加一个带有所有 Caché MIB 分支的传感器,PRTG 工具会超时。 我假定它在遍历整个树,并在处理进程列表等某些指标时超时,我没有花时间进行故障排除,而是通过只从 `ISC-CACHE.mib` 中导入性能分支 (cachePerfTab) 来解决这个问题。
MIB 经过导入/转换后可以重复使用,以收集网络中其他服务器的数据。 上图显示了 PRTG 使用 Sensor Factory 传感器将多个传感器组合成一个图表。
# 总结
有许多监视工具、报警工具和一些非常智能的分析工具可用,一些是免费的,另一些需要购买许可证来获得支持和各种功能。
您必须监视您的系统,并了解哪个活动是正常的,哪个活动超出正常范围且必须被调查。 SNMP 是揭示 Caché 和 Ensemble 指标的一种简单方法。
这个可以写一个windows版的学习下吗 我们到海外社区找找看,您要是找到合适的可以发给我们,我们尽快安排翻译。谢谢! 请问有windows版本的吗
公告
Jeff Liu · 六月 15, 2021
InterSystems非常高兴地宣布,InterSystems IRIS数据平台、InterSystems IRIS for Health和HealthShare Health Connect的2021.1版本现已向我们的客户和合作伙伴全面开放。
这个版本的为开发者提供了更大的自由度,使他们可以用自己选择的编程语言在服务器端和客户端建立快速和强大的应用程序。这个版本还使用户能够通过新的和更快的分析能力更有效地消费大量的信息。
我们期望许多客户和合作伙伴将他们的Caché和Ensemble部署升级到InterSystems的IRIS版本,并尽一切努力使之成为一个平稳和值得的过渡。大多数应用程序在IRIS上运行后会立即看到性能上的好处,甚至在他们探索IRIS带来的许多强大功能之前。
我们诚挚地邀请您参加我们的网络研讨会,介绍新版本的亮点,时间是美国东部时间6月17日上午11点。网络研讨会将被记录下来,并在会后进行 重播。
Release Highlights
在InterSystems IRIS 2021.1,客户可以部署 InterSystems IRIS Adaptive Analytics,Adaptive Analytics是一个附加产品,它扩展了InterSystems IRIS,为商业用户提供了卓越的易用性和自助分析能力,使他们能够对大量数据进行可视化、分析和查询,以获得他们所需的信息,从而做出及时和准确的商业决策,而无需是数据设计或数据管理方面的专家。Adaptive Analytics通过在后台自主构建和维护临时数据结构,透明地加速了针对InterSystems IRIS运行的分析查询工作负载。
该版本中的其他新亮点功能包括。
改进了我们的外部语言服务器的可管理性,现在也包括R和Python。这种网关技术使您能够以您选择的语言稳健和可扩展地利用服务器端代码。
InterSystems Kubernetes Operator(IKO)为您的环境提供声明式配置和自动化,现在还支持部署InterSystems System Alerting & Monitoring(SAM)。
InterSystems API Manager v2.3,包括改进的用户体验、Kafka支持和混合模式。
IntegratedML的主流可用性,使SQL开发人员能够直接在一个纯粹的基于SQL的环境中构建和部署机器学习模型。
支持分片表上的流字段,使您在InterSystems IRIS水平可扩展架构上获得完全的SQL模式灵活性。
一个iris-lockeddown容器镜像,实现了许多安全最佳实践,如禁用管理门户的网络访问和适当的操作系统级权限。
支持用于Oauth 2.0的代码交换的证明密钥(PKCE)。
InterSystems IRIS for Health 2021.1包括InterSystems IRIS的所有改进功能。此外,该版本通过用于解析和评估FHIRPath表达式的API,进一步扩展了该平台对FHIR®标准的全面支持。这是对2020.1以来发布的重要的FHIR相关功能的补充,包括对FHIR Profiles、FHIR R4 Transforms和FHIR客户端API的支持。
该版本还包括HealthShare Health Connect,这是我们基于IRIS for Health的集成引擎,提供大批量的交易支持、流程管理和监控,以支持关键任务应用。有关其功能集与InterSystems IRIS for Health的比较的详细概述,请参见这里。
关于所有这些功能的更多细节可以在产品文档中找到,该文档最近通过方便的目录侧边栏变得更加容易浏览。
InterSystems IRIS 2021.1 文档和发布说明
InterSystems IRIS for Health 2021.1 文档和发布说明
HealthShare Health Connect 2021.1 文档和发布说明
如果您从早期版本升级并使用TLS 1.3,请参见这些升级注意事项。
如何获得软件
InterSystems IRIS 2021.1是一个扩展维护(EM)版本,并附带有适用于所有支持平台的经典安装包,以及OCI(Open Container Initiative)又称Docker格式的容器镜像。
每个产品的完整安装包都可以从WRC的产品下载网站获得。使用 "自定义 "安装选项使用户能够选择他们需要的选项,如InterSystems Studio和IntegratedML,以合理地缩小其安装规模。
InterSystems IRIS和IRIS for Health的企业版容器映像以及所有相应的组件可通过InterSystems容器注册中心使用以下命令获得:
docker pull containers.intersystems.com/intersystems/iris:2021.1.0.215.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.1.0.215.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.1.0.215.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.1.0.215.0
有关可用图像的完整列表,请参考ICR文件。
社区版的容器图像也可以使用以下命令从Docker商店中提取。
docker pull store/intersystems/iris-community:2021.1.0.215.0
docker pull store/intersystems/iris-ml-community:2021.1.0.215.0
docker pull store/intersystems/irishealth-community:2021.1.0.215.0
docker pull store/intersystems/irishealth-ml-community:2021.1.0.215.0
另外,所有容器镜像的tarball版本可以通过WRC的产品下载网站获得。
InterSystems IRIS Studio 2021.1是一个独立的IDE,用于Microsoft Windows,可以通过WRC的产品下载网站下载。它适用于InterSystems IRIS和IRIS for Health 2021.1及以下版本。InterSystems还支持VSCode ObjectScript插件,用于用Visual Studio Code为InterSystems IRIS开发应用程序,该插件可用于Microsoft Windows、Linux和MacOS。
其他独立的InterSystems IRIS 2021.1组件,如ODBC驱动程序和Web网关,可从同一页面获得。
分享您的经验
我们每年只能宣布一个EM版本,所以我们很高兴看到这个版本现在达到了GA的里程碑,并渴望听到你对新软件的体验。请不要犹豫,通过您的客户团队或在开发人员社区上与您联系,对该技术或您使用该技术解决的使用案例提出任何意见。
对于选定的新功能和产品,我们已经建立了早期访问计划,允许我们的用户在软件发布之前进行评估。通过这些有针对性的举措,我们可以向目标受众学习,并确保新产品在发布时能够满足他们的需求。如果您有兴趣参与其中任何一项,请通过您的客户团队或观看开发人员社区进行联系。
公告
Claire Zheng · 三月 12, 2021
亲爱的社区开发者们,
北京时间3月19日下午14:00-16:00,我们将举办一次线上直播,聚焦InterSystems 数据平台与WRC服务,为您答疑解惑!今天隆重向大家介绍此次直播的主讲人!
主讲人:刘皆良
演讲主题:告诉你从Caché数据库升级到InterSystems IRIS数据平台的N个理由
本次演讲将分别从数据引擎的性能提升、互操作性的支持提升以及IntegratedML(自动化机器学习)、API全生命周期管理器等全新应用,来全方位多维度阐述从Caché数据库升级到InterSystems IRIS数据平台N个理由。
主讲人:杨乐乐
演讲主题:InterSystems全球响应中心服务介绍
通过演讲您将了解到InterSystems全球响应中心(Worldwide Response Center)提供的全面服务以及独特之处,更重要的是,作为InterSystems用户,您将如何获取快速响应、并高效得到您想要的技术支持服务!
欢迎点击进入直播!
文章
Hao Ma · 十一月 2, 2021
本文档解释了如何使用 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 技术概要》)。
1 InterSystems IRIS 存储结构简介 InterSystems IRIS 提供了一种易于使用的方法来将数据存储在持久化多维数组中。global 是存储在物理 InterSystems IRIS 数据库中的命名多维数组。在应用程序中,globals 到物理数据库的映射基于当前命名空间,命名空间提供一个或多个物理数据库的逻辑统一视图。例如,要使用一个名为^Settings 的 global 将值 "Red"与键 "Color"关联起来,请使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础: 连接一个 IDE》)中的为您的实例描述的程序打开 InterSystems 终端(InterSystems Terminal),并输入以下代码:set ^Settings("Color")="Red"
您可以利用 globals 的多维特性来定义一个更复杂的结构:
set ^Settings("Auto1","Properties","Color") = "Red" set ^Settings("Auto1","Properties","Model") = "SUV" set ^Settings("Auto2","Owner") = "Mo"set ^Settings("Auto2","Properties","Color") = "Green"
有关 globals 的更多信息,请参见 Using Globals(《使用 globals》)。
2 探索 Native API for Node.js 此时,您已准备好试验 Native API 了。这个简短的演示将向您演示如何在一个简单的 Node.js 应用程序中使用 Native API。想试试 InterSystems Native API for Node.js 的在线视频演示吗?请查看 Node.js QuickStart(Node.js 快速入门)! 探索 Native API for Node.js
2.1 用前须知要使用该程序,您需要一个安装了您最喜欢的 Node.js IDE 的系统来运行,并需要一个运行中的 InterSystems IRIS 实例来连接。您对 InterSystems IRIS 的选择包括多种类型的已授权的和免费的评估实例;该实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。有关如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。使用同一文档中的 InterSystems IRIS Connection Information(InterSystems IRIS 连接信息)和 Node.js IDE 中的信息,将 IDE 连接到您的 InterSystems IRIS 实例。
2.2 设置您的项目接下来,您需要使用 npm 来设置您的项目,npm 是和 Node.js 一起发布的 JavaScript 包管理器。作为这个过程的一部分,您将安装 Native API 模块 intersystems-iris-native。使用这个程序:1. 在命令提示符下,为演示创建一个名为 IRISNative 的新文件夹,并切换到该目录。 例如:
mkdir IRISNative cd IRISNative
2. 使用 npm 包管理器初始化新项目:
npm init
3. 按照提示,创建 package.json 文件。4. 要安装 IRIS Native API 模块:• 如果您的 InterSystems IRIS 实例安装在您正在工作的系统上,请输入命令
npm install --save <install-dir>\dev\nodejs\intersystems-iris-native
其中 <install-dir> 是安装 InterSystems IRIS 的目录, 例如 C:\InterSystems\myIRIS。• 如果您的实例没有安装在您正在工作的系统上,请按照以下步骤操作:a. 下载或克隆以下 repo 到您的 IDE 中:https://github.com/intersystems/quickstarts-nodejsb. 如果您已经下载了 repo,请解压。c. 切换到您刚刚克隆或下载的 repo 的 Solutions 目录,例如:
cd quickstarts-nodejs/Solutions
d. 要安装 IRIS Native API 模块,请输入:
npm install --save intersystems-iris-native
2.3 Native API 应用程序 现在您已经创建了项目,接下来您将创建一个小的应用程序,演示 Native API 的一些功能。1. 在您的 IDE 中,在 IRISNative 目录中创建一个新的源文件,将该文件保存为 IRISNative.js。 探索 Native API for Node.js
2. 将以下代码粘贴到 IRISNative.js 中, 将 InterSystems IRIS 实例的连接信息 替换为 connectionInfo 中的值。您可以指定所示的 USER 命名空间,也可以选择在实例上创建的另一个命名空间:
const irisnative = require('intersystems-iris-native')// Modify connection info based on environment let connectionInfo = {host: '127.0.0.1',port: 1972, ns: 'USER',user: '_SYSTEM', pwd: 'SYS'};// create database connectionconst connection = irisnative.createConnection(connectionInfo);//create IRIS instanceconst dbnative = connection.createIris();console.log('[1] Setting and getting a global');// setting and getting a global// ObjectScript equivalent: set ^testglobal("1") = 8888 dbnative.set(8888, 'testglobal', '1');// ObjectScript equivalent: set globalValue = $get(^testglobal("1")) let globalValue = dbnative.get('testglobal','1');console.log('The value of testglobal is ' + globalValue); console.log();console.log('[2] Iterating over a global');// modify global to iterate over dbnative.set(7777, 'testglobal', '1');dbnative.set(8888, 'testglobal', '2');dbnative.set(9999, 'testglobal', '3');let subscriptIter = dbnative.iterator('testglobal'); console.log('walk forwards');for ([key,value] of subscriptIter) { console.log('subscript='+ key +', value=' + value);};console.log();console.log('Iterate backwards a different way');let revIter = dbnative.iterator('testglobal').reversed(); let node = revIter.next();while (!node.done) {console.log('subscript='+ node.value[0] +', value='+ node.value[1]); node = revIter.next();}console.log();console.log('[3] Calling a class method');// calling a class method// ObjectScript equivalent: set returnValue = ##class(%Library.Utility).Date(5) let returnValue = dbnative.classMethodValue("%Library.Utility", "Date", 5); console.log(returnValue);// close connection connection.close();
示例代码分为三个部分:1. 第一部分展示了如何设置一个 global 的值以及稍后如何检索它。这部分里面执行的命令等同于 ObjectScript 的 SET 和 GET 命令。2. 第二部分展示了如何迭代 global 的子节点,类似于 $ORDER ObjectScript 函数。3. 第三部分展示了如何使用 Native API 从您的 Node.js 应用程序调用 ObjectScript 类方法。
注意: ObjectScript中的 Globals 以插入符号(^)开头。在使用 Native API 的 Node.js 应用程序中,这不是必需的。 了解有关 IRIS Native 的更多信息
2.4 运行练习现在您已经准备好运行演示应用程序了。如果示例执行成功,您应该会看到带有示例代码结果的打印输出:[1] Setting and getting a global The value of testglobal is 8888[2] Iterating over a global walk forwardssubscript=1, value=7777 subscript=2, value=8888 subscript=3, value=9999Iterate backwards a different way subscript=3, value=9999 subscript=2, value=8888 subscript=1, value=7777
[3] Calling a class method Apr 11, 2019
2.5 确认管理门户(Management Portal)中的变更接下来,使用以下程序在管理门户(Management Portal)中确认您的结果:1. 使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中为您的实例描述的 URL,在浏览器中打开您的实例的管理门户(Management Portal)。2. 如果您不在代码指定的命名空间中,请切换到该命名空间。3. 导航到 Globals 页面(System Explorer(系统资源管理器) > Globals)。您应该会看到示例代码中创建的 testglobal global。点击 View(查看)来查看其内容。 您应该会看到 global 的两个节点:^testglobal(1) = 8888 和^testglobal(2) = 9999。
3 了解有关 IRIS Native 的更多信息有关 IRIS Native、globals 和 InterSystems IRIS 的更多信息,请参见:• Using the Native API for Node.js(《使用 Native API for Node.js》)• Using Globals(《使用 Globals》)