清除过滤器
文章
Claire Zheng · 一月 20, 2021
我们不必等待SAM发布才开始规划和试用该API来监控IRIS实例。在以后的文章中,我将更深入地探讨可用的指标及其意义,并提供一些交互式仪表板的示例。首先,我将介绍一下相关背景和一些问题及答案。
IRIS(和Caché)一直在收集自身及其运行平台的数十个指标。收集这些指标来监控Caché和IRIS的方法向来有很多。我发现,很少有安装软件使用IRIS和Caché的内置解决方案。譬如,History Monitor作为性能和系统使用指标的历史数据库,已经推出很长时间了,但它没有简便方法可实时显示这些指标和仪表系统。
IRIS平台解决方案(以及整个业界)正在从仅在一些本地实例上运行的单体式应用程序过渡到“随处”部署的分布式解决方案。在许多用例中,原有的IRIS监控方案并不适用于这些新的模式。InterSystems没有做重复工作,而是将目光投向当前流行的、经过验证的监控和告警开源解决方案。
Prometheus?
Prometheus是一个基于成熟技术、应用广泛的著名开源监控系统,具有多种多样的插件。Prometheus的设计目的是在云环境中很好地运行,但它同样适用于本地环境。Prometheus的插件包括操作系统、web服务器(如Apache)和许多其他的应用程序。Prometheus通常与前端客户端(如Grafana)一起使用,后者可提供极具定制性的一流UI/UX体验。
Grafana?
Grafana也是开源平台。随着本系列文章的深入,我将提供常见场景监控仪表板的示例模板。在这些示例模板的基础上,你可以进一步设计自己想要的各种仪表板。将IRIS指标与你的整个解决方案堆栈的各项指标适当结合,就可以发挥真正的威力;各项指标来自于平台组件、操作系统、IRIS,尤其是当你在应用程序中添加仪表功能的时候。
我以前见过这种方法吗?
使用Prometheus和Grafana监控IRIS与Caché并不是新出现的方法。几年来,我一直使用这些应用程序监控我的开发和测试系统。在开发者社区中搜索“Prometheus”,就可以找到一些其它文章,这些文章讲述了如何显示Caché指标,以供Prometheus使用。
跟过去不同的是,现在的/api/monitor API是内置的,而且默认启用。用户无需为显示指标而自己编写类。
Prometheus入门
在这里简单介绍一下Prometheus和一些术语。希望读者能够深入学习并打下一定基础,这将有助于你思考如何运用IRIS或其他来源提供的各项指标或将其可视化。
Prometheus的工作方式是抓取或提取由作为HTTP端点的应用程序(IRIS /api/monitor等API)所公开的时间序列数据。现有的导出器和客户端库适用于多种语言、框架、开源应用程序(例如Apache等web服务器)、操作系统、docker、Kubernetes、数据库和现在的IRIS。
导出器用于将应用程序和服务仪表化,并公开端点上的相关指标以进行抓取。核心导出器支持各种标准组件,例如web服务器、数据库等。其他多种开源导出器可从Prometheus社区获取。
Prometheus术语
有几个关键术语需要了解:
·目标 是指你关心的服务所处的位置,例如主机、应用程序或服务(如:Apache、IRIS或你自己的应用程序)。
·Prometheus 通过HTTP抓取目标,以收集指标作为时间序列数据。
·时间序列数据 是通过应用程序(如IRIS)或导出器公开的。
·导出器 可用于你无法控制的数据,譬如Linux内核指标。
·生成的时间序列数据 存储在本地Prometheus服务器上的一个数据库中**。
·这个时间序列数据库 可以使用优化的查询语言(PromQL)进行查询,以便创建警报或者由客户端应用程序(如Grafana)在仪表板中显示指标等。
**剧透警告:出于安全性、扩展性、高可用性及运营效率方面的考虑,在新的SAM解决方案中,Prometheus时间序列数据所使用的数据库是IRIS数据库!但对IRIS平台的Prometheus数据库的访问是透明的,而应用程序(如Grafana)对这些访问既不知道也不关心。
Prometheus数据模型
该API返回的指标是Prometheus格式的。Prometheus采用基于文本的简单指标格式,每行一个指标,格式如下:
[ (timen, valuen), ....]
指标可将标签作为(键,值)对,而标签是将指标作为维度过滤的强大方法。例如,检验IRIS /api/monitor返回的一个指标──日志可存储空间:
iris_jrn_free_space{id="WIJ",dir=”/fast/wij/"} 401562.83
标识符反映了指标的含义和来源:
iris_jrn_free_space
多个标签可用于修饰指标,然后用来过滤和查询。在这个例子中,可以看到WIJ及其存储目录:
id="WIJ",dir="/fast/wij/"
此外,还有一个值:401562.83(MB)。
有哪些IRIS指标可供使用?
预览版文档资料中含有一个指标列表。但要注意,其中的内容可能会有所调整。你也可以查询/api/monitor/metrics端点以查看列表。我使用的是Postman,关于这一点,我将在下一篇文章中进行阐述。
我应该监控什么?
考虑怎样监控你的系统和应用程序时,请记住以下要点:
1. 尽可能将影响用户的关键指标仪表化
o用户并不关心你的某台机器是否缺少CPU。
o用户关心的服务是否缓慢或出错。
o你的主仪表板应显示那些直接影响用户的高级指标。
2. 仪表板应避免显示大量图表
o人无法一次性处理太多数据。
o例如:每项服务都有一个仪表板。
3. 关注服务,而不是机器
o将问题定位到某项服务之后,你就可以接着往下找原因,看看是否是哪台机器出了问题。
参考资料
文档资料和下载
Prometheus:https://prometheus.io/
Grafana:https://grafana.com/
在InterSystems 2019年全球峰会上,我简要介绍了预发布版SAM(包括Prometheus和Grafana);你可以在InterSystems学习服务网站上找到相关链接。如果此链接无效,请访问InterSystems学习服务网站,并搜索:“System Alerting and Monitoring Made Easy”。
你也可以在社区中搜索“Prometheus”和“Grafana”。
注:本文为译文,欢迎点击阅读原文,原文由Murray Oldfield撰写
公告
Claire Zheng · 二月 1, 2021
亲爱的社区用户,大家好!
InterSystems多模型数据库竞赛 已圆满结束,感谢大家积极参加这次编程马拉松!
现在,我们来宣布此次竞赛优胜者!
下面这些开发者及其开发的应用值得拥有雷鸣般的掌声!!!
🏆专家提名奖(Experts Nomination) - 获奖者由我们特别挑选的专家团选出:
🥇 第一名,$2,000 的获奖者 @José.Pereira ,提交项目为:iris-image-index-demo
🥈 第二名,$1,000 的获奖者@MikhailenkoSergey ,提交的项目为: zapm
🥉 第三名, $500 的获奖者 @Renato.Banzai ,提交的项目为: iris-multimodel-suite
🏆 社区提名奖(Community Nomination) - 获得总投票数最多的应用:
🥇 第一名,$1,000的获奖者@Botai.Zhang ,提交的项目为: HealthInfoQueryLayer
🥈 第二名,$500 的获奖者 @Henrique.GonçalvesDias ,提交的项目为: iris-vaccine-tracker
🥉 第三名,$250 的获奖者@José.Pereira ,提交的项目为: iris-image-index-demo
恭喜所有获奖用户!
感谢您对本次大赛的关注,感谢您在这场令人兴奋的编程大赛中付出的努力!
接下来呢?
我们的 InterSystems 编程大奖赛! 已经开始了
奖金总额: $16,000
加入大奖赛,不见不散哦😉 热烈恭喜@Botai Zhang!
公告
Claire Zheng · 三月 8, 2021
InterSystems编程大奖赛取得圆满成功,来自中文社区的两位参赛者获得项目奖励,项目简介如下。
获奖者@Botai Zhang
获奖情况:获得专家提名奖(Experts Nomination)第三名和社区提名奖(Community Nomination)第一名
提交项目:HealthInfoQueryLayer(基于Intersystems IRIS平台整合医院信息查询业务解决方案)
项目简介:随着医院信息化建设的逐步完善,医院子系统越来越多,系统间接口越来越多,同时接口费用不断增加,管理工作变得越来越复杂。其中,查询类业务接口根据业务类型分化,数量也是逐步递增,带来接口量大、开发工作繁重、代码冗余、维护困难等等问题。针对这一困境,我们基于Intersystems IRIS数据平台整合医院信息查询业务解决方案。该应用程序可通过配置完成查询业务接口实现,大大缩小开发、维护、实施等项目关键运转周期。
欢迎移步项目链接了解更多详情: HealthInfoQueryLayer
获奖者@Weiwei Yang获奖情况:社区提名奖(Community Nomination)第二名提交项目:Dictionary comparison scheme of cache database项目简介(应用场景):现场需要将各个科室部门内的数据统一汇总到医院总部,但是汇总后发现各个科室使用的字典并不统一,需要将表中的现存的字典统一更换为医院制定字典。例如:A科室中人员的性别字典使用0/1/2表示各种性别,B科室中性别字典使用F/M/O表示各种性别,但是现在医院要求所有性别字典保存Female/Male/Other性别信息,此时就需要替换原有的性别字典为新用字典。当初,此处只是列举了一个使用场景,未来有多个需要对照字典的工作都可以考虑此项目的设计和实现思想。欢迎移步项目链接了解更多详情:Dictionary comparison scheme of cache database
文章
Louis Lu · 四月 15, 2021
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 3 天的提示:
1. 您可以使用 %Dictionary 类查看类目录,并在 INFORMATION_SCHEMA 表中查看 sql 对象。
2. 可以在 ObjectScript 方法中以动态 SQL 或嵌入式 SQL 使用 SQL。
3. 您可以使用 ?(例如:where country = ?)将参数传递到动态 SQL 字符串, 使用冒号(例如:where country = :variable)将参数传递到嵌入式 SQL。
4. 动态 SQL 示例(来自 Intersystems 文档):
SET tStatement = ##class(%SQL.Statement).%New(,"Sample")
SET myquery = 3
SET myquery(1) = "SELECT TOP ? Name,DOB,Home_State"
SET myquery(2) = "FROM Person"
SET myquery(3) = "WHERE Age > 60 AND Age < 65"
SET qStatus = tStatement.%Prepare(.myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
DO tStatement.%Display()
WRITE !,"End of %Prepare display"
5. 嵌入式 SQL 示例(来自 Intersystems 文档):
#SQLCompile Select=Display
&sql(SELECT DOB INTO :a FROM Sample.Person)
IF SQLCODE<0 {WRITE "SQLCODE error ",SQLCODE," ",%msg QUIT}
ELSEIF SQLCODE=100 {WRITE "Query returns no results" QUIT}
WRITE "1st date of birth is ",a,!
DO $SYSTEM.SQL.Util.SetOption("SelectMode",1)
WRITE "changed select mode to: ",$SYSTEM.SQL.Util.GetOption("SelectMode"),!
&sql(SELECT DOB INTO :b FROM Sample.Person)
WRITE "2nd date of birth is ",b
6. 嵌入式 SQL 示例 - 插入:
&sql(INSERT INTO Sample.Person (Name, Age, Phone) VALUES (:name, :age, :phone)
7. 如果您需要使用 SQL 批量处理数据,处理单个记录,请使用 Persistent Object API。
8. 您可以创建 SQLQuery 方法,如果在方法中使用 [SqlProc],将在 SQL 端中创建一个 SQL 存储过程。
9. 从终端可以进入 SQL Shell,要从终端进入 SQL 命令,请执行 do $system.SQL.Shell()。
10. 持久类具有系统生成的 ID,如果需要由您控制的 ID,您可以使用具有一个或多个属性的 IDKEY 索引。 例如,SocialNumber [IdKey, PrimaryKey, Unique] 上的索引键。
11. 当两个或多个进程同时尝试处理相同数据时,有两种控制并发的策略:悲观型和乐观型。
12. 要获取悲观控制,请使用 %OpenId(ID, 4) 锁定对象,其中 4 会将表锁定为互斥访问。 在进程运行后,可以释放锁定。
13. 要进行乐观控制(针对 Web 应用),在您的持久类中创建 Parameter VERSIONPROPERTY = "Version"; Property Version as %Integer [ InitialExpression = 1 ]。 IRIS 会在每次实例更新时递增属性版本,这样可以协调更新顺序,而不是锁定表。
14. 当您有更新、插入或删除数据的方法时,请使用事务保持数据一致。 示例:
Transfer(from,to,amount) // Transfer funds from one account to another
{
TSTART
&SQL(UPDATE A.Account
SET A.Account.Balance = A.Account.Balance - :amount
WHERE A.Account.AccountNum = :from)
If SQLCODE TRollBack Quit "Cannot withdraw, SQLCODE = "_SQLCODE
&SQL(UPDATE A.Account
SET A.Account.Balance = A.Account.Balance + :amount
WHERE A.Account.AccountNum = :to)
If SQLCODE TROLLBACK QUIT "Cannot deposit, SQLCODE = "_SQLCODE
TCOMMIT
QUIT "Transfer succeeded"
}
15. InterSystems IRIS 的架构基于命名空间(数据库的逻辑组)和数据库。
16. 要在数据库中保存的数据有两种类型:数据(global)和代码(源代码 - 过程)。
17. 您可以使用 ECP(企业缓存协议)对数据库进行水平处理扩展,这样可以在同一命名空间访问查看多个服务器中不同的数据库。
18. 您可以使用Sharding(仅限 IRIS)进行水平数据量扩展(分布式数据库分区),这样可以将数据分区到分布式节点(如 MongoDB)。
19. 数据库的最大容量是 32TB。
20. 要从一个命名空间更改为另一个命名空间,请执行 zn "Namespace" 或 set $namespace = "Namespace"。
PS 1:课程详细展示了如何进行事务控制,这非常重要。 明天我会发布第 4 天的总结。
公告
Michael Lei · 六月 3, 2023
InterSystems 支持的硬件OS平台更新 2023年2季度
我们经常收到有关 InterSystems IRIS 数据平台支持的平台和框架列表最近和即将发生的变化的问题。此更新旨在分享最近的更改以及我们对即将发生的更改的已知的情况,但预测未来是一项棘手的工作,不应将其视为承诺的路线图。
话虽如此,关于更新……
IRIS 生产操作系统和 CPU 架构
红帽企业 Linux
近期变动
RHEL 9.2 和 RHEL 8.8 于 2023 年 5 月发布。Red Hat 计划为这些版本提供 4 年的支持。 InterSystems 计划通过我们称为“次要操作系统版本认证”的新流程对 RHEL 9.2 上的 IRIS 进行额外测试,该流程旨在提供额外的安全性,即次要操作系统更新不会破坏任何明显的内容。
随着 RHEL 9.2 的发布,Red Hat 终止了对 RHEL 9.1 的支持。这与 Red Hat 自 RHEL 8.0 以来一直使用的“奇数/偶数”支持周期一致。
RHEL 8.4 扩展维护将于 2023 年 5 月 31 日结束,这意味着 IRIS 也将在那时停止支持此次要版本。
即将发生的变化
RHEL 9.3 计划在今年晚些时候推出。这将是 Red Hat 的短期支持版本,因此 InterSystems 不会推荐将其用于生产部署。
以前的更新
IRIS 2022.1.2 添加了对RHEL 9.0的支持。 9.0 是一个主要的操作系统版本,将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9
IRIS 2022.2.0 移除了对 RHEL 7.x 的支持。 IRIS 的早期版本仍支持 RHEL 7.9。
进一步阅读: RHEL 发布页面
Ubuntu
近期变动
Ubuntu 22.04.02 LTS 于 2023 年 2 月 22 日发布。InterSystems 目前正在通过我们称为“次要操作系统版本认证”的新流程在 22.04.02 LTS 上对 IRIS 进行额外测试。到目前为止,一切都很好。
即将发生的变化
Ubuntu 的下一次重大更新定于 2024 年 4 月
以前的更新
IRIS 2022.1.1 增加了对Ubuntu 22.04 的支持。 22.04 是一个主要的操作系统版本,将 Linux 内核更新到 5.15,将 OpenSSL 更新到 3.0.2,将 Python 更新到 3.10.6
IRIS 2022.2.0 移除了对 Ubuntu 18.04 的支持。 IRIS 的早期版本仍然支持 Ubuntu 18.04。
IRIS 2022.1.1 及更高版本的容器基于 Ubuntu 22.04。
进一步阅读: Ubuntu 发布页面
SUSE 操作系统
即将发生的变化
SUSE Linux Enterprise Server 15 SP5 目前正在进行公测。我们预计 SUSE 将在第二季度末或第三季度初发布 15 SP5,并在此之后添加对 IRIS 的支持。 SP5 将包括 Linux 内核 5.14.21、OpenSSL 3.0.8 和 Python 3.11
SUSE 对 Linux Enterprise Server 15 SP3 的一般支持于 2022 年 12 月 31 日结束,但扩展的安全支持将持续到 2025 年 12 月。
以前的更新
IRIS 2022.3.0 增加了对SUSE Linux Enterprise Server 15 SP4的支持。 15 SP4 是一个主要的操作系统版本,将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9
延伸阅读: SUSE 生命周期
甲骨文Linux
即将发生的变化
根据他们的历史,Oracle Linux 9 将在 2023 年下半年的某个时候包含 RHEL 9.2。
以前的更新
IRIS 2022.3.0 添加了对Oracle Linux 9的支持。 Oracle Linux 9 是跟踪 RHEL 9 的主要操作系统版本,因此它也将 Linux 内核更新到 5.14,将 OpenSSL 更新到 3.0,将 Python 更新到 3.9
进一步阅读: Oracle Linux 支持政策
微软Windows
即将发生的变化
Windows Server 2012 的扩展支持将于 2023 年 10 月结束。如果您仍在该平台上运行,现在是计划迁移的时候了。 IRIS 2023.2 将不适用于Windows Server 2012。
以前的更新
自 IRIS 2022.1 中添加了 Windows Server 2022 以来,我们未对支持的 Windows 版本列表进行任何更改
进一步阅读: Microsoft 生命周期
AIX
即将发生的变化
InterSystems 正与 IBM 密切合作以增加对 OpenSSL 3.0 的支持。这不会包含在 IRIS 2023.2.0 中,因为 IBM 需要在进一步的 TL 版本中针对该功能。好消息是 IBM 正在寻求为 AIX 7.2 和 7.3 发布 OpenSSL 3.0,而且时间看起来应该与 IRIS 2023.3 保持一致。
以前的更新
自从在 IRIS 2022.1 中添加了 AIX 7.3 并删除了 7.1 以来,我们没有对受支持的 AIX 版本列表进行任何更改
进一步阅读: AIX 生命周期
容器
即将发生的变化
IRIS 容器将只标记年份和版本,例如“2023.2”,而不是我们过去一直使用的完整内部版本号。这样,您的应用程序可以默认获取您发布的最新维护版本。
我们还为最新的扩展维护和持续分发 IRIS 版本添加了“latest-em”和“latest-cd”标签。这些将有利于演示、示例和开发环境。
我们还将开始使用“-preview”标记预览容器,以便清楚哪个容器是最新的 GA 版本。
这些更改都将在 2023.2 GA 版本中生效。我们将在 6 月发布更多相关信息。
以前的更新
我们现在正在发布 IRIS 容器的多架构清单。这意味着拉取标记为2022.3.0.606.0的 IRIS 容器将为您的机器的 CPU 架构(Intel/AMD 或 ARM)下载正确的容器。
IRIS 开发操作系统和 CPU 架构
苹果系统
近期变动
我们在 IRIS 2023.1 中添加了对 MacOS 13 的支持
即将发生的变化
MacOS 14 将很快发布,预计将在今年晚些时候正式发布。
CentOS
我们正在考虑取消对 CentOS/CentOS Stream 的支持。请参阅下面的推理。
Red Hat 几年来一直在运行开发人员计划,该计划使开发人员能够获得非生产环境的免费许可证。鼓励当前使用 CentOS 的开发人员通过此程序切换到 RHEL。
CentOS Stream 现在是 RHEL 的“上游”,这意味着它具有 RHEL 尚未包含的错误和功能。它还每天更新,这可能会给平台上的开发人员带来问题(更不用说我们自己的测试人员了)。
自从我们在 IRIS 2022.1 中添加了对 CentOS 8-Stream 的支持并删除了对 CentOS 7.9 的支持后,我们没有对受支持的 CentOS 版本列表进行任何更改
InterSystems 组件
InterSystems API 管理器 (IAM)
IAM 3.2 于本季度发布,其中包括对容器基础映像的更改,从 Alpine 到 Amazon Linux。
Caché & Ensemble 生产操作系统和 CPU 架构
以前的更新
Cache 2018.1.7 增加了对 Windows 11 的支持
InterSystems 支持的平台文档
InterSystems 支持的平台文档是支持技术的最终列表的来源。
IRIS 2020.1 支持的服务器平台
IRIS 2021.1 支持的服务器平台
IRIS 2022.1 支持的服务器平台
IRIS 2023.1 支持的服务器平台
Caché & Ensemble 2018.1.7 支持的服务器平台
以上就是全部内容。同样,如果您想了解更多信息,请给我们留言。
文章
Lilian Huang · 二月 28, 2023
嗨,InterSystems 开发人员!
最近我更新了FHIR 开发模板,它发布了一个 IPM 包fhir-server ,使 InterSystems FHIR 服务器的设置成为一个微不足道的手动或自动或编程的程序,只需一条命令。
请参阅下文,了解如何从中受益。
TLDR
USER>zpm "install fhir-server"
以下所有详细信息。
在没有 IPM 的情况下设置 InterSystems FHIR 服务器
当然,你可以不使用IPM软件包管理器来设置InterSystems FHIR服务器。下面是一些选项。
1. 您可以按照这些说明设置云 FHIR 服务器并试用几天,这是 AWS 云中的一个 InterSystems FHIR 服务器。
2. 您可以按照以下步骤将 InterSystems FHIR 服务器设置,运行 InterSystems IRIS for Health。
3. 你也可以 git 克隆这个模板的仓库并在目录中运行:
$ docker-compose up -d
在您的笔记本电脑上启动并运行 InterSystems FHIR 服务器。
我在文章中建议的是第2点,你可以跳过所有的手动步骤,让FHIR服务器在笔记本电脑IRIS上运行,无论是docker还是主机操作系统。
用 IPM 设置 FHIR 服务器
免责声明!! 下面描述的步骤是指新安装的IRIS for Health实例或与docker图像一起使用。该软件包创建了一个新的命名空间和一个新的网络应用程序,因此它可能会损害你之前设置的设置
IPM 代表InterSystems Package manager ,以前称为 ZPM。确保你已经安装了 IPM 客户端。如果你在IRIS终端运行zpm命令并看到以下内容,你可以检查这一点:
IRISAPP>zpm
=============================================================================
|| Welcome to the Package Manager Shell (ZPM). ||
|| Enter q/quit to exit the shell. Enter ?/help to view available commands ||
=============================================================================
zpm:IRISAPP>
对于 2022.x 及更新版本,您将需要 IRIS for Health。
如何在笔记本电脑上运行 iris for health?
在主机操作上运行
从适合您的平台(Windows、Mac、Linux)的InterSystems 评估网站下载最新的 IRIS for Health 并安装。安装 ZPM。这是一个单行:
USER>zn "%SYS" d ##class(Security.SSLConfigs).Create("z") s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="z" d r.Get("/packages/zpm/latest/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")
运行一个Docker版本。
在您的终端中调用以启动:
--name iris4h -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community
然后启动终端:
docker exec -it iris4h iris session IRIS
安装FHIR服务器
一旦IRIS在主机上运行,或只是在IRIS终端运行:
USER>zpm "install fhir-server"
这将在FHIRSERVER命名空间中安装FHIR服务器,并提供参数:
Set appKey = "/fhir/r4"
Set strategyClass = "HS.FHIRServer.Storage.Json.InteractionsStrategy"
set metadataPackages = $lb("hl7.fhir.r4.core@4.0.1")
Set metadataConfigKey = "HL7v40"
FHIR REST API 将在 http://yourserver/fhir/r4 上可用。
它还将添加一些合成数据。
如何理解服务器正在工作?
要在主机版本上测试:
http://localhost:52773/fhir/r4/metadata
在 docker 版本上测试:
http://localhost:9092/fhir/r4/metadata
zpm 还安装了简单的 UI,它位于:yourserver/fhirUI/FHIRAppDemo.html
您会看到类似这样的内容(输入患者 id=1):
怎么运行的?
事实上,您可以在以下 module.xml场景中观察正在使用此 ZPM 模块安装的内容。如您所见,它导入代码,安装演示前端应用程序 fhir UI,运行安装后脚本,该脚本调用以下方法。该方法中的脚本执行 FHIR 服务器设置。
以编程方式安装 FHIR 服务器
您还可以通过以下命令以编程方式安装它:
set sc= $zpm ( "install fhir-server" )
FHIR 编码快乐!
文章
Kelly Huang · 七月 12, 2023
在本文中,我将分享我们在 2023 年全球峰会技术交流室中提出的主题。我和@Rochael.Ribeiro
借此机会,我们就以下话题进行探讨:
用于快速 API 的开放交换工具
开放API规范
传统与快速 Api 开发
复合 API(互操作性)
规范优先或 API 优先方法
API 治理和监控
演示(视频)
用于快速 API 的开放交换工具
当我们谈论快速现代 API 开发(Rest / json)时,我们将使用两个 Intersystems Open Exchange 工具:
第一个是用于快速开发 API 的框架,我们将在本文中详细介绍。
https://openexchange.intersystems.com/package/IRIS-apiPub
第二种是使用 Swagger 作为用户界面,用于 IRIS 平台上开发的 Rest API 的规范和文档,以及它们的使用/执行。其运行的基础是开放 API 规范 (OAS) 标准,如下所述:
https://openexchange.intersystems.com/package/iris-web-swagger-ui
什么是开放 API 规范 (OAS)?
它是全球范围内用于定义、记录和使用 API 的标准。在大多数情况下,API 甚至在实现之前就已经设计好了。我将在下一个主题中详细讨论它。
它很重要,因为它定义并记录了 Rest API 供其在提供者和消费者方面使用。但这种模式也有助于加快市场上工具(Rest API 客户端)的测试和 API 调用,例如 Swagger、Postman、Insomnia 等……
使用 IRIS 发布 API 的传统方式
想象一下,我们必须从现有的 IRIS 方法构建并发布 Rest API(如下图)。
以传统方式:
1:我们必须考虑消费者会如何称呼它。例如:将使用哪个路径和动词以及如何响应。无论是 JSON 对象还是纯文本。
2:在 %CSP.REST 类中构建一个新方法,该方法将处理调用它的 http 请求。
3:处理方法对最终用户预期的 http 响应的响应。
4:考虑一下我们将如何提供成功代码以及我们将如何处理异常。
5:为我们的新方法绘制路线。
6:向最终用户提供API文档。我们可能会手动构建 OAS 内容。
7:例如,如果我们有一个请求或响应有效负载(对象),则实施时间将会增加,因为它也必须记录在 OAS 中。
我们怎样才能更快?
只需使用 [WebMethod] 属性标记 IRIS 方法即可。无论是什么,该框架都会使用 OAS 3.x 标准来处理其发布。
为什么 OAS 3.x 标准如此重要?
因为它还详细记录了输入和输出有效负载的所有属性。
这样,市场上的任何 Rest Client 工具都可以立即耦合到 API,例如 Insomnia、Postman、Swagger 等,并提供示例内容以便轻松调用它们。
使用 Swagger,我们已经可以可视化我们的 API(上图)并调用它。这对于测试也非常有用。
API定制
但是如果我需要自定义 API 该怎么办?
例如:我希望路径是其他东西,而不是方法的名称。我希望输入参数位于路径中,而不是像查询参数那样。
我们在方法之上定义了一个特定的符号,我们可以在其中补充方法本身不提供的元信息。
在此示例中,我们为 API 定义了另一条路径,并补充了信息,以便最终用户获得更友好的体验。
Rest API 的投影图
该框架支持多种类型的参数。
在此图中,我们可以突出显示复杂类型(对象)。它们将自动公开为 JSON 有效负载,并且每个属性都将为最终用户正确记录 (OAS)。
互操作性(复合 API)
通过支持复杂类型,您还可以公开互操作性服务。
这是构建复合 API 的有利场景,复合 API 使用多个外部组件(出站)的编排。
这意味着用作请求或响应的对象或消息将自动发布并由 swagger 等工具读取。
这是测试互操作性组件的绝佳方法,因为通常已经加载了有效负载模板,以便用户知道 API 使用哪些属性。
首先,开发人员可以专注于测试,然后通过定制来塑造 Api。
规范优先或 API 优先方法
当今广泛使用的另一个概念是在实现之前就定义 API。
有了这个框架,就可以导入 Open Api 规范。它自动创建方法结构(规范),只缺少它们的实现。
API 治理和监控
对于Api的治理,也建议一起使用IAM。
除了拥有多个插件之外,IAM 还可以通过 OAS 标准快速耦合到 API。
apiPub 为 API 提供额外的跟踪(参见演示视频)
演示
下载和文档
Intersystems 开放交换: https://openexchange.intersystems.com/?search=apiPub
完整文档:https: //github.com/devecchijr/apiPub
@Claudio Devecchi 致敬原创作者
文章
Tete Zhang · 七月 4, 2023
本文讨论了在使用或维护InterSystems产品中遇到问题时,试图确定问题时可能用到的思路和工具。
一般故障排除
确定问题发生的地点和时间
问题是什么时候开始的?多久发生一次?
问题首先出现在哪里?
问题在什么条件下会被触发?
审查日志中的警告、错误和警报
以下日志可能包含有关该问题的有用信息。可以尝试在以下日志中寻找问题开始前后的警告或报错。
检查 messages.log(IRIS)或者 cconsole.log(Caché and Ensemble)
通过文件系统(<install-dir>/mgr/messages.log)访问messages.log文件,或者
通过管理门户(系统操作>系统日志>Messages Log)访问文件内容
检查production事件日志 (详细信息请参见文档)
查看应用程序错误日志 (详细信息请参见文档)
查看Web Gateway/CSP Gateway日志
查看网络服务器(IIS/Apache)日志
检查实例是否可以访问足够的存储空间
检查文件系统剩余空间(推荐设置操作系统层级的存储空间低告警)
检查数据库剩余空间
通过管理门户(系统操作>数据库>Freespace View)查看数据库文件内剩余空间百分比
检查Journal日志空间
检查CPU活动
服务器的负载是否在正常范围内?
监控CPU利用率
CPU使用率是稳定的,还是有尖峰?这些尖峰是活动的增加还是减少?
CPU是否经常在I/O上等待?
在安装了sysstat的系统上,可以通过iostat监控此项。
审查开放的事务和锁
是否存在开放事务的问题?
评估锁表大小。
查看messages log中是否有锁表满 LOCK TABLE FULL 的警告
检查所有进程是否按预期运行
监控总进程。
进程数是否有显著增加?
是否有任何进程被卡住,或在循环?
进程使用的内存量是否正常?
进入管理门户 > 系统操作 > 进程 > 进程ID的详细信息,以获得关于具体进程的信息。
检查镜像监视器和镜像状态监视器
监控镜像的状态。同步日志工作是否已经完成?
进入管理门户>系统操作>镜像监视器,查看镜像状态。
记录镜像成员之间的差异。
不是所有在主机上的更改都会通过镜像机制同步到备机。系统管理员需要对主备机上无法自动同步的更改进行手动更改,以及对主备机上不同步的部分做完整的记录。
确保InterSystems IRIS的许可证是有效的
监控许可证使用情况。
进入管理门户>系统操作>软件许可使用情况查看。
监控许可证的过期时间。
联系WRC
你所掌握的关于问题的任何信息都可以帮助WRC确定导致该问题的原因。以下是你可以执行的步骤,以向WRC提供尽可能多的信息。
总结问题
这个问题可以重现吗?它是否持续发生?
最近系统上是否有任何变化,可能导致了这个问题?
记录InterSystems IRIS和其操作系统的版本信息
进入管理门户>关于页面,获取完整的版本信息。
运行监控工具
运行系统诊断报告
IRIS: do ^SystemCheck
Caché/Ensemble: do ^Buttons
如果系统处于挂起状态,运行IRISHung
IRISHung脚本是一个操作系统工具,用于在InterSystems IRIS实例挂起时收集系统的数据。
该脚本位于install-dir\bin目录下,在Microsoft Windows 系统上名称为IRISHung.cmd,在UNIX®/Linux 系统上名称为 IRISHung.sh。
IRISHung脚本应以管理员权限运行。
如果有性能问题,运行系统性能报告
IRIS: do ^SystemPerformance
Caché/Ensemble: do ^pButtons
与WRC取得联系
访问InterSystems全球响应中心(WRC)网站 (wrc.intersystems.com),或
邮件发送问题描述至support@intersystems.com,或
拨打中国区技术支持中心热线电话 400-601-9890
文章
Weiwei Gu · 六月 28, 2023
1. 区块链
当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”
没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料
(例如在Medium和福布斯上)。
众所周知,区块链是一个分布式注册表,即分布在多个节点之间的数据库,每个节点都存储注册表的完整副本。区块链的主要特征是记录(交易)形成块,块形成块链。区块链仅支持追加操作。这意味着几乎不可能对已经保存在区块链中的交易进行更改。
网上有无数的区块链教程(如果您从未听说过区块链,可以从这个简单的视频开始)。
当区块链蓬勃发展时,人们多次呼吁在任何地方使用该技术。然而,可能需要区块链的项目/任务有某些明显的特征。
首先,必须有很多玩家/用户编写大量数据,这些数据必须一致且可信。
那么,就不应该存在每个人都信任的第三方。
必须有一个公共数据验证的机制。如果满足所有这些标准,考虑使用区块链可能是个好主意。
任何行业都可以找到这样的任务。 www.101blockchains.com项目汇总了有关潜在和现有区块链项目的信息,以及在各个行业中使用区块链技术的细微差别。
例如,区块链可用于医疗保健领域的以下任务:
用于安全地远程管理患者记录;
通过整个供应链中不可更改的交易来打击假药;
通过排除欺诈和篡改数据的可能性来提高临床试验的监控和有效性。
企业部门通常使用一种特殊类型的区块链,称为私有许可区块链。此类网络具有一组特殊的节点来验证交易。
然而,在开发第一个 InterSystems IRIS 区块链适配器时,我们选择了以太坊,这是一种属于无许可区块链类别的区块链 - 一个没有单一控制中心的开放平台。该决定是基于该区块链引擎的受欢迎程度以及具有大量工具和库的足够成熟的基础设施。请注意,您还可以使用以太坊工具创建私有区块链。
2. 适配器
让我们实际上回到适配器。
InterSystems IRIS 中的适配器(就像 Ensemble 中一样)是 InterSystems IRIS 类的类或包,允许您与外部系统交互。 InterSystems IRIS 适配器分为入站(当外部系统是交互发起者时,用于从外部系统接收数据)和出站(当 InterSystems IRIS 是交互发起者时,用于与外部系统一起工作)。
IRIS 以太坊适配器是出站适配器,与大多数其他 InterSystems IRIS 适配器略有不同。该适配器还包括一个小型 NodeJS 模块。其架构如图 1 所示。
图1。适配器的 NodeJS 模块使用现有的 NodeJS 库来与以太坊配合使用。
该适配器允许您执行以下操作:
将智能合约部署到以太坊(我们计划撰写另一篇文章,涵盖智能合约、开发工具和示例)。
调用智能合约方法:改变区块链状态的方法和不改变区块链状态的方法
保存交易(将资金从一个钱包转移到另一个钱包)
调用额外的方法来获取区块链的状态
记录所有请求(由 NodeJS 模块完成,方便调试)
该适配器附带 OpenExchange 上的源代码。
3. 一个简单的例子
该适配器附带一个“Hello world”示例。
要开始使用以太坊(并运行此示例),您将需要以下内容:
选择您要使用的网络。 Ropsten 等测试网络通常用于开发目的
在此网络中创建一个钱包并向其存款
安装本地以太坊客户端(例如 Geth)或获取与云提供商(例如 Infura)合作的密钥
配置业务操作时需要设置以下内容(图2):
NodeJS模块工作的服务器和端口(默认使用3000端口)
提供商设置(在本例中访问 Infura)
访问凭据(指定您的钱包号码作为用户名,指定您的私钥作为密码。InterSystems IRIS 将访问凭据存储在一个单独的数据库中,您必须为其启用加密)
图 2.
为了使用智能合约,您需要在文件系统中创建(为您将使用的每个智能合约)一个文件夹,并在其中放置两个文件:*abi.txt*字节码.txt
这些文件应包含智能合约的 ABI 及其字节码。智能合约的 ABI 是 JSON 格式的接口的正式描述。 ABI 和字节码是在编译智能合约时创建的。
仅部署合约时需要字节码。
您可以使用 InterSystems IRIS 互操作性测试服务来测试业务运营。
图 3 说明了如何使用测试服务部署智能合约。调用此业务操作的结果是包含交易哈希的消息。
图 3.
您可以使用 ropsten.etherscan.io (https://etherscan.io/) 浏览器找到此交易并获取已部署的智能合约的地址。
要使用适配器调用智能合约的方法,您需要在生产配置中填写以下字段:ContractFolder 和 ContractAddress。
智能合约的执行代码非常简单:
-----0-----
将智能合约的地址和 ABI 传递给适配器的 GetContract 方法,以创建一个智能合约对象,然后将其用于调用方法。在这种情况下,必须在智能合约中定义返回字符串的 hello() 方法。
在这个例子中,hello()方法不会改变区块链状态,因此可以同步调用。然而,改变区块链状态的方法的执行时间可能相当长(因为必须等待交易被验证)。
要调用此类方法,请使用 InterSystems IRIS 提供的延迟响应机制。适配器必须提交延迟响应令牌,当交易获得批准时,NodeJS 模块会将其执行结果传递给 InterSystems IRIS。为此,您需要配置一个 Web 应用程序并向生产添加额外的业务服务来处理收到的响应。
以下是调用改变区块链状态的方法的代码:
-----1-----
在这种情况下,在调用智能合约的 setName() 方法之前,您需要指定许多参数,包括延迟响应令牌。
在下一篇文章中,我们将详细介绍智能合约,并提供使用 InterSystems IRIS 以太坊适配器解决实际问题的示例。
文章
姚 鑫 · 八月 29, 2022
# 第十六章 维护本地数据库(一)
可以在管理`Portal` (`System Operations` > `databases`)的“数据库”页面查看和维护本地数据库。
在此页面,可以查看到以下信息:
- 数据库一般信息` Databases General Information`-所有数据库的概述信息。
- 数据库空闲空间信息 `Databases Free Space Information` - 所有数据库的空闲空间信息
- 数据库详细信息页 `Database Details Page` -个别数据库的特定信息。
还可以通过维护操作增加该页面的可用空间。
本节中描述的大多数信息和操作也可以使用`^DATABASE`命令行实用程序找到并执行。
# 数据库的一般信息
数据库页面(系统操作 > 数据库)包含所有本地数据库的列表。对于每个本地数据库,会看到以下信息:
#### 本地数据库信息
- `Name` - 数据库名称。
- `Directory` - 分配给数据库可以增长的最大大小,以 `GB` 为单位。
- `Max Size (GB)` - 分配给数据库可以增长的最大大小,以 `GB` 为单位。
- `Size (MB)` - 当前分配的数据库大小,以兆字节为单位。
注意:此字段衡量数据库的逻辑大小。因此,此处报告的大小可能低于数据库的物理大小,特别是对于 `IRISTEM` 数据库。
- `Status` - 数据库的状态:`mounted` (包括它有哪些权限)、`unmounted`或`dismounted`。
- 已安装的数据库是选择了启动时需要安装的数据库,因此必须安装该数据库才能使 `IRIS` 启动或成为镜像中的主数据库;在这种情况下,它总是在 `IRIS` 启动时被安装和访问。或者,它是一个先前未挂载的数据库,在访问它或显式挂载时已动态挂载;在这种情况下,它会一直挂载,直到明确卸载它或重新启动/停止 `IRIS`。
- 未挂载的数据库是未选择启动时需要挂载的数据库,因此不需要挂载 `IRIS` 即可启动或成为镜像主数据库,并且既未访问也未显式挂载;当访问它或显式安装它时,它会动态安装,并保持安装状态,直到显式卸载它或重新启动/停止 `IRIS`。
- 已卸载的数据库是已显式卸载的数据库;在显式安装它或重新启动/停止 `IRIS` 之前,它是不可访问的(也就是说,如果尝试访问已卸载的数据库,则不会动态安装它)。要永久卸载数据库,您必须将其从配置中删除。
- `Encrypted` - 指示数据库是否已加密。
- `Journal` - 指示数据库中的全局变量是用 `Y` 还是 `N` 记录的。
此外,该页面包含一个过滤栏,可以使用它来控制显示的数据库数量。例如,要仅列出系统数据库,可以在 `Filter:` 文本框中输入 `IRIS*`;和/或要每页仅列出五个数据库,请在页面大小:文本框中输入 `5`;和/或将显示的行数限制为 `3`,在 `Max rows`: 文本框中输入 `3`(在 `Results` 字段中显示带有数字的 `+` 号表示存在满足指定条件的其他数据库,但它们不会显示)。
# 数据库可用空间信息
管理数据库中的可用空间(空块)是数据库维护的一个重要方面。要查看可用空间信息,可以显示管理门户的可用空间视图或使用 `^%FREECNT` 实用程序。请记住,正常操作中数据库的大小和可用空间属性会不断变化,门户网站或实用程序在给定时间点报告的数字只是近似值。
## 使用管理门户显示可用空间信息
要显示可用空间信息,其中显示有关每个本地数据库上可用空间量的信息,请导航到数据库页面(系统操作 > 数据库)并单击可用空间视图单选按钮。下表描述了显示的信息:
#### 本地数据库可用空间信息
- `Name` - 数据库名称。
- `Directory` - 数据库的主卷所在的系统目录。
- `Max Size` - 数据库可以增长到的最大分配大小,以 `GB` 为单位。创建数据库时默认为无限制。
- `Size` - 当前分配的数据库大小,以兆字节为单位。
注意:此字段衡量数据库的逻辑大小。因此,此处报告的大小可能低于数据库的物理大小,特别是对于 `IRISTEM` 数据库。
- `Expansion Size` - 扩展数据库的大小(以 `MB` 为单位)。创建数据库时,默认和推荐设置为零 (`0`),这表示使用系统默认值(当前大小的 `12%` 或 `10 MB`,以较大者为准)。在此设置下,扩展大小不会大于 1GB。
- `Available` - 数据库中可用的可用空间量(以 `MB` 为单位)。
- `%Free` - 数据库中可用空间的百分比。
- `Disk Free Space` - 卷上的可用空间量。
- `Status` - 目录的状态,指示数据库是否已挂载以及具有哪些权限。
# 使用 ^%FREECNT 显示可用空间信息
`IRIS` 还提供了 `^%FREECNT` 实用程序,可以通过在终端中输入 `do` `^%FREECNT` 来运行该实用程序,以显示数据库中的可用空间。
在 `%SYS` 命名空间中使用 `^%FREECNT` 时,可以选择通过在提示符处输入星号 (`*`) 来显示所有数据库的可用空间,或者输入一个数据库目录名称。例如:
```java
%SYS>do ^%FREECNT
Database directory to show free space for (*=All)? *
Databases Selected
------------------
c:\intersystems\irishealth\mgr\
c:\intersystems\irishealth\mgr\enslib\
c:\intersystems\irishealth\mgr\hscustom\
c:\intersystems\irishealth\mgr\hslib\
c:\intersystems\irishealth\mgr\hssys\
c:\intersystems\irishealth\mgr\irisaudit\
c:\intersystems\irishealth\mgr\irislib\
c:\intersystems\irishealth\mgr\irislocaldata\
c:\intersystems\irishealth\mgr\iristemp\
c:\intersystems\irishealth\mgr\user\
Device:
Right margin: 80 =>
Database Free Space
Aug 20 2022 12:30 PM
Database Max Size Size Available %Free Disk Free
c:\intersystems\irishealth\mgr\ 无限制 113MB 19MB 16.81 31.67GB
c:\intersystems\irishealth\mgr\enslib\
无限制 208MB 16MB 7.69 31.67GB
c:\intersystems\irishealth\mgr\hscustom\
无限制 21MB 8.7MB 41.42 31.67GB
c:\intersystems\irishealth\mgr\hslib\
无限制 1.19GB 132MB 10.82 31.67GB
c:\intersystems\irishealth\mgr\hssys\
无限制 21MB 8.9MB 42.38 31.67GB
c:\intersystems\irishealth\mgr\irisaudit\
无限制 11MB 10.0MB 90.9 31.67GB
c:\intersystems\irishealth\mgr\irislib\
无限制 356MB 0.51MB .14 zn "user"
USER>do ^%FREECNT
Databases Selected
------------------
c:\intersystems\cache\mgr\user\
Device:
Right margin: 80 =>
Cache Database Free Space
Aug 20 2022 12:32 PM
Database Max Size Size Available %Free Disk Free
c:\intersystems\cache\mgr\user\ 无限制 11MB 9.4MB 85.45 31.67G B
```
**注意:`
文章
Johnny Wang · 十二月 19, 2021
如果您经常阅读我们的博客,您可能记得去年夏天我们进行了 InterSystems 速度测试,该测试由 ESG 验证,旨在测试数据库可以同时摄取和查询的数据量,以及这表现出的具体的影响。从那以后,我们 GitHub 页面的许多访问者一直在根据自己的想法重复验证这个测试
最初,第一次数据库速度测试将 InterSystems IRIS 数据平台与来自许多不同云和数据管理供应商的流行数据库进行了比较。令人兴奋的是,我们现在可以宣布,我们已经将数据库性能测试从 SAP HANA、AWS Aurora MySQL、SAP Sybase ASE 和 AWS RDS SQL Server 扩展到包括 PostgreSQL、MariaDB 和 Oracle Enterprise,所有这些都跑在 Amazon Web Services (AWS )上面。
我们为什么要做这一次开源速度测试?
通过模拟不支持任何特定产品的多工作负载用例,速度测试往往充当了另一种数据库性能测试工具,可以根据测试结果来确定哪个数据库或数据平台最适合业务需求来做出决策。随着许多公司继续进行数字化转型并探索传统技术的替代品,这种能力被证明是至关重要的。
数据库速度测试最大的特点就是您可以轻松地在云端或您的机器上自己体验它,并且由于我们已将测试作为可定制的开源代码发布,它可以扩展到您自己的数据和查询。
许多人将其视为微服务的首选平台,开源速度测试现在也可在 Kubernetes 上运行,以响应该应用程序在 InterSystems 开发人员社区中越来越受欢迎的现状。这意味着除了能够使用 AWS 和 Amazon Elastic Kubernetes Service (EKS) 之外,开发人员还可以了解 InterSystems IRIS 如何在 Kubernetes 集群上执行并利用 InterSystems Kubernetes Operator。
InterSystems IRIS 如何与竞争对手抗衡?
数据库速度测试着眼于同步摄取和查询性能的特定用例,这是医疗、金融、供应链和制造等许多行业实时用例的基本要求。
最新速度测试的结果发现,与 AWS MariaDB 相比,InterSystems IRIS 在测试期间摄取的记录多 620.9%,到最后摄取它们的速度提高了 717.3%。将 InterSystems IRIS 与在公共云上运行的 Sybase ASE 的性能进行比较发现,InterSystems IRIS 在测试期间摄取的记录多 4862.8%,在测试结束时摄取记录的速度提高了 6733.4%。
对于任何希望对其基础架构进行现代化改造以提高实时和接近实时的数据库性能的公司,这些指标都极为重要。此外,对于那些在 SAP Sybase ASE 上运行生产应用程序的公司,InterSystems 对 Transact-SQL 的本机支持允许这些应用程序的无缝迁移,通常不需要重写自定义代码。
不要只相信我们的话,请访问我们的 GitHub 页面,亲自对 InterSystems IRIS 进行测试,或在此处了解有关速度测试如何工作的更多信息。
阅读更多关于 Amir Samary 的 InterSystems IRIS 数据平台速度测试的博客文章
阅读更多关于去年夏天我们进行的 InterSystems 速度测试
关于作者:Amir Samary
Amir Samary 已在数据库、互操作性和 InterSystems 技术方面工作了 20 多年。 Amir 致力于为使用 InterSystems 技术为阿根廷、巴西、智利、哥伦比亚、乌拉圭和美国的各个行业构建解决方案的合作伙伴、客户和开发人员提供支持。 这使 Amir 能够理解和试验不同技术、文化和基础设施现实中的模式和架构。 Amir Samary 目前担任解决方案架构经理,他领导 InterSystems 的一组解决方案开发人员。 他主修计算机科学,辅修数学。
查看原文 阅读更多关于 Amir Samary 的 InterSystems IRIS 数据平台速度测试的博客文章
阅读更多关于去年夏天我们进行的 InterSystems 速度测试
这两个还有文中的其他链接可以换成中文链接(如果有)吗?谢谢! 关于:阅读更多关于去年夏天我们进行的 InterSystems 速度测试,请查看链接:https://cn.community.intersystems.com/post/%E6%B4%9E%E5%AF%9F%E6%96%B0%E7%9A%84-intersystems-%E9%80%9F%E5%BA%A6%E6%B5%8B%E8%AF%95
谢谢! 直接在原文里改吧
文章
Claire Zheng · 六月 12, 2023
大家好!
这是一篇关于如何将视频嵌入您的帖子的简短文章。
其实很简单。您只需要按照以下步骤操作。
1. 打开您希望嵌入的B站视频,在视频右下角找到分享按钮;
2. 选择“嵌入代码”并复制代码
3.在社区帖子中切换到Source视图,并将您在步骤2中复制的代码粘贴在您希望嵌入视频的地方(如嵌在<p>后);
4.再次点击“Source”,回到编辑页面,您会看到如下“IFRAME”框;
5.双击红色的“IFRAME”,并如图所示填写视频尺寸(请务必按下图数值填写),点击“确定”,即可完成视频嵌入。
希望这个帖子能帮助到您:)
在评论部分留下您对这个主题的想法,或者告诉我们您还希望了解哪些社区玩儿法。
公告
Claire Zheng · 二月 16, 2022
亲爱的开发者们!
“InterSystems中国”在B站现在已经有两百多位粉丝啦,欢迎查收2021年InterSystems中国在B站最受欢迎的视频列表!
2021 InterSystems中国在B站最受欢迎的视频(Top10)
№
视频(点击查看)
播放量
1
从Caché数据库升级到InterSystems IRIS数据平台的N个理由
466
2
Caché从零基础到精通-第0讲 前言
397
3
Caché从零基础到精通-第1讲-Caché 简介
346
4
Caché从零基础到精通-第2讲_初识M程序
324
5
FHIR标准和国际基于FHIR的互联互通实践
229
6
乔鹏-IRIS数据库在医疗行业发展(1):InterSystems IRIS架构
221
7
InterSystems Caché系统运维培训:InterSystems Caché架构、备份与恢复
200
8
【中文字幕】经济学人访谈录:凝望医疗健康数字化的未来
192
9
Caché从零基础到精通-第3讲_语法规则
188
10
InterSystems Caché系统运维培训:InterSystems Caché系统高可用与数据库镜像
177
欢迎大家B站搜索“InterSystems中国”关注我们,我们将持续上传优秀视频!
文章
Lilian Huang · 三月 15, 2022
这篇文章的目的是为了说明如何使用互操作菜单实现系统集成。
图片左侧窗口是接受外部系统发送信息的窗口。
信息接收方式种类很多,如定时监控指定目录来读取文件,定期查询数据库,输入且等待信息输出,或直接调用其他应用程序系统传送信息。
在系统集成配置中创建IRIS 互操作性菜单,接收到存储在一个对象中的信息被称为一条消息message(以下统称为消息)。消息被发送到组件component (以下统称为组件)中做后续处理。
使用所有接收到的信息或仅使用其中的一部分就能用来创建消息。
假设您要将信息中包含的消息发送给外部系统。这种情况下,需要将该消息发送给负责请求外网处理的组件(图右侧)。接收到消息的组件会请求外部系统对其进行处理。
此外,假设一条消息需要人工审查、数据转换或数据附加。这种情况下,消息会被发送到图表中间的业务流程管理组件(BPM),该组件负责协调处理流程。
消息用于在每个组件之间发送和接收数据。当发送或接收消息时,消息会被自动存储在数据库中。
由于消息存储在数据库中,因此在数据转换前后可以检查其差异性。在操作期间,或过程中间重新开始(重新发送),可以检查作为问题根源的消息。在开发、测试和操作的每个阶段可以验证正在使用的消息状态。
一个简单的系统集成图将分为三个部分(业务服务、业务流程和业务操作),如下图所示。
还有一个称为“生产环境Production”的定义,它存储有关要使用的组件信息(例如,连接信息)。
各组件功能如下:
业务服务Business Service
负责从外部源接收信息,创建消息,以及向其他组件发送消息。
业务流程Business Process
该功能在收到消息时被激活,并负责协调流程(按预先定义的顺序调用组件、等待响应、等待人工审核结果等)。
业务操作Business Operation
此功能在收到消息时被激活,会请求外部系统处理该消息。
消息是用于在组件之间发送和接收数据。
当收到一个消息时,业务服务以外的所有组件开启处理流程。
问题是,创建和使用此消息的目的是什么?
通过创建消息可获取中继到外部系统的数据并检索进入业务服务。
由于不是所有的外部系统都用相同类型的数据格式连接到 IRIS,并且要中继的内容各不相同,因此生产者可以根据信息自由定义消息类别。
有两种类型的消息:请求(= 请求消息)和响应(= 响应消息)。触发组件激活的消息被称为request(=请求消息),组件处理后响应的消息称为response(=响应消息)。
这些消息在考虑中继流程时会被设计。
在接下来的文章中,我们将使用一个案例来概述产品、消息和组件的创建。