文章 Michael Lei · 四月 3, 2023 2m read

如果您使用过 Caché Objects,你已经知道所有关于关系(一对多,父子孙继承等)......
但是您不会在文档中找到关于多对多关系的地方。

但我经常遇到 Caché 对象的新用户提出的问题:
“是否可以实现多对多关系?”答案是——当然!

如何实现取决于相关的任务:有一个比较重的和一个轻量级的解决方案。
两者的共同点是它们不能开箱即用需要添加一些代码来管理它。

让我们举一个基于 SAMPLES 命名空间的例子:

我们有 N:1 关系的情况

但是,您如何处理超过 1 个公司的员工?

重的解决方案:
您添加一个额外的持久类,与双方都有一个:多的关系。

优点:您可以添加管理信息作为有效性、各种时间戳……
以及与此“链接”相关的其他内容。
但它是一个额外的持久类,具有所有优点和缺点。所以我觉得这个很重。
该类可能如下所示:

Class Sample.Jobs Extends %Persistent  [Final]
{
Property Status As %Boolean;
Relationship Company As Sample.Company [ Cardinality = one, Inverse = Slot ];
Relationship Employee As Sa
0
0 238
文章 Johnny Wang · 四月 25, 2022 39m read

    大家应该都已经很熟悉 InterSystems Ensemble(一个集成和应用程序开发平台),每个人都知道 Ensemble Workflow 子系统是什么以及它对于自动化人类交互的作用。 对于那些不了解 Ensemble Workflow 的人,我将简要介绍它的功能(已经熟悉的朋友可以直接跳过这一部分并学习如何使用 Angular.js 中的 Workflow 接口)。

InterSystems Ensemble

    InterSystems Ensemble 是一个集成和应用程序开发平台,旨在集成异构系统、自动化业务流程和创建新的复杂应用程序,这些应用程序通过新的业务逻辑或新的用户界面增强集成应用程序的功能:EAI、SOA、BPM、BAM 甚至 BI (感谢 InterSystems DeepSee:一种用于开发分析应用程序的内置技术)。

    Ensemble 具有以下关键功能:

    适配器:与应用程序、技术和数据源交互的组件。 Ensemble 提供技术和应用程序集成适配器(Web 和 REST 服务、文件、FTP、电子邮件、SQL、EDI、HL7、SAP、Siebel、1S Enterprise 等)。 您可以使用适配器 SDK 创建自己的适配器。

    业务服务:将来自外部系统的数据转换为 Ensemble 消息并启动业务流程和/或业务运营的组件。

1
0 663
文章 Louis Lu · 三月 31, 2023 2m read

当我在Docker容器上构建IRIS服务器时,由于升级Docker版本,发现我构建的IRIS服务器消失了。

基于这个经历,这篇文章展示如何在升级平台或docker之前为IRIS服务器做一个备份,以及在新环境中重建IRIS的过程。

IRIS服务器备份过程

完成IRIS服务器的构建后,需要进行备份。

特别是在升级之前建议做一个备份,尤其当有自定义类、routine或者 global时。

下文中的“{}”代表输入参数

  1. 导出用户定义

导出IRIS服务器中所有用户定义:

zn "%SYS"
write ##class(Security.Users).Export({输出完整路径文件名})
  1. 导出application定义
zn "%SYS"
write ##class(Security.Applications).Export({输出完整路径文件名})
  1. 停止IRIS
iris stop {iris运行实例名称}
  1. 备份iris.cpf

Iris.cpf存放于iris安装目录下,比如 /usr/irissys/iris.cpf

  1. 备份所有的数据库文件

建议卸除数据库后,备份所有的数据库文件所在的文件夹

  1. 启动IRIS
iris start {iris 实例名称}

服务器重建过程

如果重新安装IRIS服务器,则必须使用与备份时相同的配置重新构建它。

  1. 使用与原系统相同的配置部署数据库。
0
0 391
文章 Lele Yang · 三月 31, 2023 4m read

《WebGateway系列(4): 配置HTTPS访问IRIS的Web服务》中介绍了在Web服务器中配置SSL/TLS以实现从客户端浏览器到Web服务器之间的安全连接,从Web服务器到IRIS之间是否也可以通过配置SSL/TLS建立起安全连接呢?尤其是在Web服务器与IRIS没有安装在同一台Server上的情况下,这段连接的安全性也是需要考虑的。答案是肯定的,接下来我们就来介绍下配置Web Gateway使用SSL/TLS连接到IRIS的基本步骤。

1.首先,我们先准备一下所需要的证书。通讯的双方为Web Gateway 和 IRIS Super Server, 双方都需要准备好各自的证书和key。IRIS自带的Public Key Infrastructure(PKI)功能内置了OpenSSL,可以用来生成服务器端及客户端的证书和key。在使用此功能时,IRIS可以同时作为CA Server和CA Client,作为CA Server时可以生成自签名的证书,可以批准CA Client的证书申请并将证书下发给CA Client。

1)配置本地证书颁发机构服务器,生成sever端的证书和key。

 

 

2)配置本地证书颁发机构客户端,如下

 

3)将证书签名请求提交到证书颁发机构服务器

 

4)进程未决证书签名请求

 

发放证书。

0
0 538
Job Claire Zheng · 三月 26, 2023

北京协和医院是集医疗、教学、科研于一体的现代化综合三级甲等医院,是国家卫生健康委指定的全国疑难重症诊治指导中心,最早承担干部保健和外宾医疗任务的医院之一,也是高等医学教育和住院医师规范化培训国家级示范基地,临床医学研究和技术创新的国家级核心基地。
北京协和医院信息中心目前正在招聘M语言开发工程师,具体要求如下:

2
0 330
文章 Jingwei Wang · 三月 28, 2023 5m read

IRIS 配置和用户帐户包含需要跟踪的各种数据元素,许多人难以在 IRIS 实例之间复制或同步这些系统配置和用户帐户。那么如何简化这个过程呢?

在软件工程中,CI/CD 或 CICD 是持续集成 (CI) 和(更常见的)持续交付或(较少见的)持续部署 (CD) 的组合实践集。 CI/CD 能消除我们所有的挣扎吗?

我在一个开发和部署 IRIS 集群的团队工作。我们在 Red Hat OpenShift 容器平台上的容器中运行 IRIS。

如果您当前没有使用 Kubernetes,请不要停止阅读。即使您没有使用 Kubernetes 或在容器中运行 IRIS,您也可能会遇到与我和我的团队面临的挑战类似的挑战。

我们决定将代码与配置分开,并将它们放在不同的 GitHub 存储库中。每次在代码库中进行提交时,都会触发管道运行。结果,从代码库中的文件构建了一个新image。

我们通过将 YAML 文件和其他配置工件添加到部署 GitHub 存储库,将配置定义为以 GitOps 方式使用的代码。 GitOps 是一个软件开发框架,它使组织能够持续交付软件应用程序,同时使用 Git 作为单一事实来源有效地管理 IT 基础设施(以及更多)。 GitOps 的好处之一是能够轻松回滚。您所需要做的就是恢复到 Git 中的先前状态。

DevOps 是软件开发和 IT 行业的一种方法论。

0
0 369
文章 Kelly Huang · 三月 28, 2023 1m read

嗨大家好!

最近我需要使用 IRIS For Health 设置本地 FHIR 服务器,我认为我找到了有史以来最简单的方法!

只需在终端中运行以下两行:

 docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community

docker exec -it my-iris iris session iris -U "USER" '##class(%ZPM.PackageManager).Shell("install fhir-server")'

您将在 http://localhost:9092/fhir/r4 本地运行 FHIR 服务器。

就是这么简单!

FHIR 服务器将使用最新版本的 InterSystems IRIS for Health Community Edition,并将通过 FHIRSERVER 命名空间中的 IPM 包从该应用程序部署 FHIR 服务器

这是针对 Mac OS的,所以请在评论中添加它在 Windows 中的工作方式。

这是一篇非常短的文章,因为使用 InterSystems IRIS for Health 和IPM Package Manager 设置本地 FHIR 服务器真的很容易。

0
0 290
文章 water huang · 三月 27, 2023 9m read

一、背景

1.1 我遇到了几个项目,他们的接口服务器崩溃了。 项目上希望尽快恢复服务器。他们的服务器在局域网上运行,他们不能使用git,服务器中有多个命名空间运行不同的服务,而且通常只有一台平台服务器。

1.2 如果消息中有字符流类型的属性,消息搜索页面不支持使用字符流属性进行过滤,因此很难找到想要的消息。

1.3 其他同事可能会更新服务器上的代码,代码中可能有些错误。

2.挑战

2.1 如何快速恢复?

2.2 如何支持字符流属性过滤消息?

2.3 如何在编译类时自动备份?

3.解决方案

1.编译时自动导出为备份文件

首先,我们定义一个名为“SYS.base”的类,它只有一个名为“ CLSBAKPATH”的参数,并设置它的值

Class SYS.Base Extends %RegisteredObject 
{
   Parameter CLSBAKPATH = "D:\IRIS\CLSBAK" ;
}

然后,定义一个名为“SYS.Projection”的类,它继承了 base和%Projection.AbstractProjection,添加“Projection Reference As SYS.Projection”,重写类方法“CreateProjection”;

代码如下:

 Class SYS.Projection Extends ( %Projection.
1
0 284
文章 Michael Lei · 三月 27, 2023 11m read

好不好玩,能当真吗?


最近几个月,大型语言模型GPT正在激起一些现象。因此,上周末我不可避免地也在玩 ChatGPT,以探究它是否会成为我正在敲打的一些基于 BERT 的“传统”AI 聊天机器人的补充,或者更确切地说,它是否会淘汰它们。
玩的时候脑子里冒出一个念头。通过略微理论化或哲学化,最终互操作性标准(如 HL7 和 FHIR 等)是一种“语言”,对吗? HL7 有自己的语法、规则、词汇甚至方言——每个系统都有自己的语调。这就是为什么当一台机器与另一台机器对话时,它们需要翻译器(例如 DTL 转换)来实现相互理解。
所以环顾四周,似乎一切都是语言:编码是语言:python,javascript和COS也是语言。 HL7、FHIR 甚至 XML 或 JSON 都是语言,只是它们比自然语言更结构化,那么 GPT 应该更容易上手吗?
那么,我们可以从简单地重用 GPT 的预训练编码语言模型来模拟 DTL 开始吗?我们还没有进行调整,以下是初步结果:


测试


模式:完整
型号:code-davinci-002
温度:0
最大长度:1989
其他:默认
停止序列:###
1、将HL7 ADT A01转A05?

输入:  

##### Translate this function from HL7 V2.8 ADT_A01 to HL7 V2.4 ADT_A05
### HL7 V2.
0
0 264
文章 姚 鑫 · 三月 27, 2023 4m read

第十章 镜像架构和规划 - 仲裁器中断的影响

仲裁器中断的影响

仲裁器的中断对镜像的可用性没有直接影响。但是,如果在恢复仲裁器之前发生了自动故障转移以响应主中断场景中的主中断场景56,则备份无法自动接管。

备份中断的影响

在主应用程序可以恢复处理之前,某些应用程序可能会经历短暂的暂停(大约是 QoS 超时)。如果没有配置仲裁器,或者如果仲裁器在备份中断之前变得不可用,则经历的暂停可能会稍微长一些(大约是QoS 超时的三倍)。如果在恢复备份之前发生主要中断,则结果是整个镜像中断。

主要和仲裁联合中断的影响

这种情况的后果在响应主要中断情况的自动故障转移中进行了介绍。简而言之,如果备份可以联系主的 ISCAgent,它就会接管;如果不是,结果是整个镜像中断,手动干预强制备份成为主要可能是一个合适的选择。

联合备份和仲裁中断的影响

如果备份和仲裁器同时(或几乎同时)变得不可用,则主节点将无限期地保持在故障状态,因为它假定它是孤立的,因此备份节点可能已成为主要节点。结果是整个镜像中断。当备份再次可用时,它会联系主服务器,然后主服务器恢复作为主服务器运行。或者,可以通过手动干预强制恢复主节点。如果备份和仲裁程序依次失败,则在备份中断的影响中描述的短暂暂停之后,主要继续作为主要运行,因为它知道备份不可能成为主要。

主要和备份联合中断的影响

这种组合的结果总是镜像完全中断。

0
0 158
文章 姚 鑫 · 三月 26, 2023 4m read

第九章 镜像架构和规划 - 备份处于活动状态时自动进行故障转移

备份处于活动状态时自动进行故障转移

当备份处于活动状态时,如果它可以确认故障转移的第二个条件——即主服务器未作为主服务器运行并且在没有人为干预的情况下无法继续运行,则它有资格作为主服务器接管。备份可以通过以下三种方式之一执行此操作:

  • 通过接收来自主要请求它接管的通信。

这发生在主实例正常关闭期间或当主实例检测到它已挂起时。一旦主要发送此消息,它就不能再充当主要并且活动备份可以安全地接管。如果前一个主节点挂起,新的主节点会迫使它关闭。

  • 通过从仲裁器接收到它已与主节点失去联系的信息。

主要和备用 IRIS 实例与仲裁器保持持续联系,仲裁器会在与其他故障转移成员的联系中断或恢复时更新每个实例。当一个网络事件同时将主节点与备份节点和仲裁节点隔离开来时,它就会无限期地进入故障状态。因此,如果一个活动的备份失去了与主的联系,并从仲裁器得知它也失去了与主的联系,备份可以安全地接管,因为主必须要么已经失败,要么被隔离并处于故障状态,因此不能再充当主要角色。恢复连接时,如果以前的主节点挂起,新的主节点会强制关闭它。

  • 通过从主系统的 ISCAgent 接收主实例已关闭或挂起的信息。
0
0 143
文章 姚 鑫 · 三月 25, 2023 4m read

第八章 镜像架构和规划 - 镜像同步

镜像同步

如数据完整性指南的“日志”一章所述,日志文件包含自上次备份以来对 IRIS 实例中的数据库所做更改的时间顺序记录。在镜像中,记录对主数据库所做更改的日志数据成为对备份和异步数据库副本进行相同更改的基础。因此,镜像数据库始终记录在主数据库上,而在备份和 DR 异步上,它们始终是只读的,以防止来自其他来源的更新。通常它们在报告异步时也是只读的。

当镜像数据库上记录Global更新操作(主要是 SetKill 操作)的数据写入主数据库的日志时,日志记录将传输到其他镜像成员。一旦在备份或异步成员上收到日志记录,记录在其中的操作就会在该成员的数据库上执行。这个过程被称为dejournaling

日志记录从主服务器到备份的传输是同步的,主服务器在关键点等待备份的确认。这使故障转移成员保持紧密同步并使备份处于活动状态,如备份状态和自动故障转移中详细描述的那样。相反,异步从主服务器异步接收日志数据。因此,异步镜像成员有时可能比主成员落后一些日志记录。

注意:当 IRIS 实例成为镜像的成员时,会发生以下日志更改以支持镜像:

  • 当 IRIS 实例成为镜像中的主要故障转移成员时,会发生以下变化:
    • 日志切换被触发,以 MIRROR-mirror_name 为前缀的新日志文件,例如 MIRROR-MIR21-20180921.001
0
0 216
文章 姚 鑫 · 三月 24, 2023 2m read

第七章 镜像架构和规划 - 报告异步

报告异步

报告异步镜像成员出于数据挖掘和商业智能等目的维护所选数据库的只读或读写副本,并且不能提升为故障转移成员。一个报告异步最多可以属于 10 个镜像,允许它作为一个全面的企业范围数据仓库,将来自不同位置的相关数据库集合在一起。

连接到多个镜像的单个报告异步成员

单一故障转移镜像配置

镜像还可以由单个故障转移成员和一个或多个异步成员组成。此配置不提供高可用性,但可以解决其他需求。例如,具有单个故障转移成员、至少一个 DR 异步成员和一定数量的报告异步成员的镜像可以在支持数据收集和仓储的同时提供数据安全和灾难恢复。为了提供高可用性,故障转移成员可以位于操作系统级别的故障转移集群或其他一些高可用性配置中。

具有多个异步成员的单个故障转移成员

ISCAgent

称为 ISCAgent 的进程在每个镜像成员的主机系统上运行,为镜像成员之间提供额外的通信方式。最重要的是,ISCAgent 提供了一种方法,当两个成员之间的正常通信中断时,一个故障转移成员可以通过该方法获取有关另一个成员的信息。 ISCAgent 可以向已关闭或断开连接的镜像成员发送数据。代理还参与故障转移决策;例如,与主实例和仲裁器都失去联系的备份可以联系主实例的 ISCAgent(假设主实例的主机系统仍在运行)以确认主实例在接管之前确实已关闭。

0
0 163
文章 姚 鑫 · 三月 23, 2023 3m read

第六章 镜像架构和规划 - 镜像组件

镜像是物理上独立的 IRIS实例的逻辑分组,同时维护生产数据库的精确副本,以便在提供对数据库的访问的实例变得不可用时,另一个实例可以接管。镜像可以通过自动故障转移提供高可用性,在自动故障转移中,提供数据库访问的 IRIS实例(或其主机系统)发生故障会导致另一个实例立即自动接管。

本章介绍镜像的组件和机制,并解释镜像规划中的问题,包括网络要求、故障切换后重定向应用程序连接以及在虚拟环境中进行镜像。

镜像组件

托管配置为镜像一部分的 IRIS 实例的系统称为镜像成员。 (IRIS 实例本身有时称为镜像成员。)镜像成员有两种类型:

  • 故障转移镜像成员
  • 异步镜像成员

两个附加组件支持从一个故障转移成员到另一个的自动故障转移:

  • ISCAgent

  • Arbiter

故障转移镜像成员

要启用自动故障转移,镜像必须包含两个故障转移成员,物理上独立的系统,每个系统托管一个 IRIS 实例。在任何给定时间,一个故障转移实例充当主要实例,为应用程序提供对镜像中数据库的访问权限,而另一个实例充当备份实例,维护这些数据库的同步副本,以备接管为主要实例。当主要的 IRIS 实例变得不可用时,备份将接管,提供对数据库的不间断访问,而没有数据丢失的风险。有关自动故障转移过程的详细信息,请参阅自动故障转移机制。

故障转移成员使用多个镜像成员网络地址通过多个通信通道相互通信。

0
0 143
文章 姚 鑫 · 三月 23, 2023 24m read

简介

什么是Query

Query是一种查询方法,用于查找满足条件的数据,将结果以数据集的形式展现出来。

Query类别

  • SQL Query,使用类 %SQLQuerySQL SELECT 语句。
  • 自定义Query,使用类 %Query 和自定义逻辑生成查询数据。

说明:在讲通用Query解决方案之前,我们先了解一下Query的基础和基础使用,有助于理解实现原理。如果读者了解Query基本使用,可跳过此章节,直接阅读“现状”。

Query基本使用

SQL Query基本使用

Query QueryPersonByName(name As %String = "") As %SQLQuery(COMPILEMODE = "IMMEDIATE", CONTAINID = 1, ROWSPEC = "id:%Integer:ID,MT_Name:%String:name,age:%String,no:%String", SELECTMODE = "RUNTIME") [ SqlName = QueryPersonByName, SqlProc ]
{
	SELECT top 10 ID, MT_Age, MT_Name, MT_No
	FROM M_T.
0
0 332
文章 姚 鑫 · 三月 22, 2023 2m read

第五章 镜像概述

传统的高可用性和数据复制解决方案通常需要在基础架构、部署、配置、软件许可和规划方面进行大量资本投资。 IRIS® 数据库镜像旨在为两个 IRIS 实例之间快速、可靠、强大的自动故障转移提供经济的解决方案,从而提供有效的企业高可用性解决方案。

依赖共享资源(如共享磁盘)的传统可用性解决方案通常容易出现与该共享资源相关的单点故障。镜像通过在主镜像成员和备份镜像成员上维护独立的资源来降低这种风险。此外,通过利用逻辑数据复制,镜像避免了与基于 SAN 的复制等物理复制技术相关的风险,包括无序更新和结转损坏。

将分布式缓存与镜像相结合可提供更高级别的可用性;具有镜像数据服务器的分布式缓存集群中的应用程序服务器将镜像故障转移视为数据服务器重启,允许处理在新的主服务器上继续不间断,这大大减少了工作流和用户中断。在不同的数据中心配置两个故障转移镜像成员可提供额外的冗余并防止发生灾难性事件。

除了为计划外停机时间提供可用性解决方案外,镜像还可以灵活地将计划内停机时间(例如,IRIS 配置更改、硬件或操作系统升级等)纳入特定 IRIS 系统,而不会影响整体服务水平组织的协议 (SLA)。

最后,除了故障转移成员之外,镜像还可以包含异步成员,这些成员可以配置为从整个企业的多个镜像接收更新。

0
0 160
公告 Michael Lei · 三月 22, 2023

大家好!

第二次数字健康互操作与FHIR创业孵化器——Caelestinus,今日启动!

今天,21 支选定的队伍将在 Caelestinus 开始为期八个月的旅程。在孵化期间,团队将数字健康互操作性引入到他们的互联医疗服务或医疗设备创新中,并添加对 FHIR、HL7、DICOM、CDA、X12 和其他数字健康标准的支持,并使用InterSystems IRIS for HealthFHIR Server进行转型在经验丰富的 InterSystems 团队的帮助下。

我很高兴邀请大家观看 Caelestinus 2023 启动活动直播,您可以在其中了解哪些团队被选中以及他们的创新想法。

请从欧洲中部时间下午 3 点开始通过www.caelestinus.tech观看流媒体

很高兴在在线上与您相见。

祝 Caelestini 初创公司好运!

0
0 244
Job Tingting Jiang · 三月 21, 2023 2m read

注意:请投递时,发送英文简历!

工作概述

每年夏天InterSystems都会招聘实习生在中国办公室工作,从事专门围绕InterSystems产品设计的项目。我们信任实习生团队在导师的指导下可独立的工作。除了在项目中工作外,实习生还能融入我们的团队,与我们的全职员工一起解决所面对的工作问题。

 

InterSystems的带薪暑期实习项目可以让学生接触到在重要的职业生涯中出类拔萃所需的各种技术和软技能。

 

我们希望实习生可以累计工作时长4个月,预计于2023年6月份开始。

工作职责

  • 参加必要的培训课程,成功完成实习期间分配的项目。
  • 在导师和其他InterSytems员工的指导下,成功地完成分配给他们团队的项目。
  • 向高层领导和InterSystems的员工展示他们的项目。
  • 遵守实习计划的所有要求(包括出勤、着装、行为)。
  • 遵守公司关于实习的合理指示。
  • 在公司规定的时间内可以进行活动。
  • 如果在实习期间有任何计划外的缺席,请及时通知人力资源部门。
  • 遵守适合公司的职业行为标准。
  • 遵守公司的政策和程序,包括那些与WHS和就业公平和多样性有关的政策和程序。
  • 在任何时候都要适当地、负责任地使用公司的资源。
  • 承担所有与实习有关的评估活动。
  • 对在实习期间获得的有关公司、员工、客户和公司业务的信息进行保密。
  • 公司可能不时地指示其他职责。
3
0 322
文章 Michael Lei · 三月 21, 2023 3m read

InterSystems IRIS 是一个高性能、可靠且可扩展的数据平台,用于为医疗保健、金融服务和其他行业构建和部署关键任务应用程序。它提供了广泛的功能,包括数据管理、集成、分析等。

IRIS 提供的功能之一是能够将 Python 代码嵌入到 ObjectScript 代码中。这意味着您可以在 IRIS 应用程序中使用 Python 库和函数,让您可以访问大量的工具和资源。在本文中,我们将了解如何在 InterSystems IRIS 中使用嵌入式 Python。

设置嵌入式 Python

在 IRIS 中开始使用嵌入式 Python 之前,您需要设置环境。这涉及安装 Python 解释器和配置 IRIS 以识别它。

第一步是安装 Python。您可以从官方网站 ( https://www.python.org/downloads/ ) 下载最新版本的 Python。安装 Python 后,需要将其添加到系统的 PATH 环境变量中。这允许 IRIS 找到 Python 解释器。

接下来,您需要配置 IRIS 以识别 Python。为此,您需要创建一个 Python 网关。网关是一个在 IRIS 之外运行的进程,充当 IRIS 和 Python 之间的桥梁。

要创建网关,请打开一个终端窗口并导航到 Python 安装目录。

0
1 276
文章 姚 鑫 · 三月 21, 2023 3m read

第四章 高可用性的故障转移策略

IRIS 镜像

具有自动故障转移功能的 IRIS 数据库镜像为计划内和计划外停机提供了一种有效且经济的高可用性解决方案。镜像依赖于数据复制而不是共享存储,避免了由于存储故障导致的重大服务中断。

IRIS 镜像由两个物理上独立的 IRIS 系统组成,称为故障转移成员。每个故障转移成员在镜像中维护每个镜像数据库的副本;应用程序更新在主要故障转移成员上进行,而备份故障转移成员的数据库通过应用来自主要的日志文件与主要保持同步。

镜像自动将主要角色分配给两个故障转移成员之一,而另一个故障转移成员自动成为备份系统。当主要的 IRIS 实例出现故障或不可用时,备份会自动快速接管并成为主要实例。

第三个系统称为仲裁器,它与故障转移成员保持持续联系,为他们提供在无法直接通信时安全地做出故障转移决策所需的上下文。在每个故障转移系统主机上运行的代理进程,称为 ISCAgents,也有助于自动故障转移逻辑。备份无法接管,除非它可以确认主服务器确实已关闭或不可用,并且不会尝试作为主服务器运行。在仲裁器和 ISCAgent 之间,这几乎可以在所有中断情况下完成。

或者,当使用混合虚拟化和镜像 HA 方法(如本节稍后讨论的那样)时,虚拟化平台可以重新启动发生故障的主机系统,从而允许镜像确定以前的主实例的状态并根据需要继续进行。

0
0 217
文章 姚 鑫 · 三月 20, 2023 4m read

第三章 高可用性的故障转移策略

随着组织越来越依赖基于网络的应用程序,使数据库尽可能可用和可靠变得至关重要。本指南解释了 IRIS 数据平台如何提供高度可用和可靠的数据存储,并描述了从中断和故障中快速恢复并同时保持数据完整性的策略。

IRIS® 数据平台提供多种高可用性 (HA) 解决方案,并可轻松与操作系统供应商提供的所有常见 HA 配置集成。

维持系统高可用性的主要机制称为故障转移。在这种方法下,一个失败的主系统被一个备份系统取代;也就是说,处理故障转移到备份系统。许多 HA 配置还提供灾难恢复机制,即在故障转移机制无法保持系统可用时恢复系统可用性。

IRIS 实例故障转移有五种通用方法以实现 HA(包括不实施 HA 策略)。本章概述了这些方法,而本指南的其余部分提供了实施这些方法的过程。

重要的是要记住,在除镜像之外的所有这些方法中,单个存储故障都可能是灾难性的。因此,磁盘冗余、数据完整性指南“日志记录”一章中描述的数据库日志记录以及数据完整性指南“备份和还原”一章中描述的良好备份过程必须始终是您的一部分方法,因为它们对于减轻磁盘故障的后果至关重要。

如果需要详细信息来帮助制定适合环境的故障转移和灾难恢复策略。

无故障转移策略

IRIS 数据库的完整性始终受到数据完整性指南中描述的功能的保护,免受生产系统故障的影响。

0
0 244
文章 Kate Lau · 三月 17, 2023 1m read


添加凭据以登录 FHIR REST 接口 - 在这例子仅考虑基本身份验证

 

 

添加服务注册表 - 在这例子仅考虑基本身份验证

- 设置 HTTP 服务

- 输入 FHIR 服务器的路径

- 输入 FHIR 服务的 URL

- 使用配置的凭证

 


添加 "HS.FHIRServer.Interop.HTTPOperation"

选择服务名称

 

测试 FHIR 客户端

 

跟踪测试结果

1
0 177
文章 姚 鑫 · 三月 19, 2023 4m read

第二章 高可用性解决方案 - 虚拟化平台高可用

虚拟化平台高可用

虚拟化平台通常提供 HA 功能,通常会监控来宾操作系统及其运行的硬件的状态。在任何一个失败时,虚拟化平台都会根据需要在备用硬件上自动重启失败的虚拟机。当 IRIS 实例重新启动时,它会自动执行正常的启动恢复,保持结构和逻辑的完整性,就好像 IRIS 在物理服务器上重新启动一样。

虚拟环境中的故障转移

虚拟化 HA 具有内置于虚拟化平台基础架构中的优势,因此只需很少的配置工作,在某些情况下根本不需要。此外,虚拟化平台允许有计划地将虚拟机重新定位到备用硬件以进行维护,从而实现物理服务器的升级,例如,无需任何停机时间。

IRIS 镜像

具有自动故障转移功能的 IRIS 镜像采用不同的 HA 方法,依靠完全独立系统之间的逻辑数据复制来避免共享存储的单点故障风险,并确保生产可以立即故障转移到几乎所有的备用 IRIS 实例故障场景——系统、存储和网络。

IRIS 镜像中,一个称为主要故障转移成员的 IRIS 实例提供对生产数据库的访问。单独主机上的另一个实例,称为备份故障转移成员,与主实例同步通信,检索其日志记录,确认收到它们,并将它们应用于同一数据库的自己的副本。通过这种方式,主备都始终知道备份是否有来自主的最新日志文件,因此可以将其数据库与主上的数据库精确同步。

0
0 269
文章 姚 鑫 · 三月 18, 2023 3m read

第一章 高可用性解决方案 - HA 解决方案中的问题

高可用性(HA)指的是使系统或应用程序在长时间内保持正常运行并可供用户使用的目标,从而最大限度地减少计划内和计划外停机时间。 IRIS提供自己的HA解决方案,并轻松与操作系统提供商提供的常见HA解决方案集成。

维护高系统可用性的主要机制称为故障转移。在这种方法下,故障的主系统由备用系统代替;也就是说,生产故障转移到备份系统。许多HA配置还提供了灾难恢复(DR)机制,即当HA机制无法保持系统可用时,恢复系统可用性。

本页简要讨论可与基于 IRIS 的应用程序一起使用的一般 HA 策略,然后涵盖 IRIS HA 解决方案中的问题,提供 HA 解决方案功能比较,并讨论使用分布式缓存和故障转移策略

IRIS HA 解决方案中的问题

在为IRIS 系统评估潜在的 HA 解决方案时,请牢记以下两个重要问题:

  • 共享存储

HA 架构的一个重要原则是避免单点故障。大多数 HA 解决方案依赖于共享存储组件;这代表了这样的风险;如果存储出现故障,就不可能保持系统可用。存储级冗余可以在一定程度上减轻这种风险,但也可以延续某些类型的数据损坏。

另一方面,IRIS 镜像在完全独立的主存储和备份存储之间使用逻辑数据复制,完全消除了单点故障问题并避免了大多数类型的损坏。

  • IRIS 升级

许多 HA 解决方案允许在不中断整体可用性的情况下对给定组件系统进行计划内停机。

0
0 207
文章 Hao Ma · 三月 14, 2023 2m read

介绍

在最近几篇文章中的一些文章中,我谈到了 IRIS 和 Python 之间的类型,很明显,从一侧到另一侧访问对象并不是那么容易。

幸运的是,已经完成了创建SQLAlchemy-iris 的工作(点击链接在 Open Exchange 上查看它),这使得 Python 访问 IRIS 对象的一切变得更加容易,我将展示它的启动器。

谢谢@Dmitry Maslennikov

安装中

要安装,只需打开具有管理员权限的终端并输入

pip install sqlalchemy-iris

如果需要,这还将为您安装先决条件。

用法

现在,在 python 文件上,您可以导入模块、连接到数据库并以任何您想要的方式使用 sqlalchemy。如果你觉得舒服,你可以按照以下步骤操作:

  • 从 sqlalchemy 导入“create_engine”并使用字符串“iris://username:password@IP:port/namespace”创建引擎。当然,您可以导入整个模块,但“create_engine”会创建一个 Engine 实例(sqlalchemy.engine,有关更多信息,请单击此处)具有我在这里展示的所有必要子类。
0
0 418
文章 Claire Zheng · 三月 14, 2023 10m read

本文根据InterSystems中国技术总监乔鹏( @Qiao Peng )的演讲“互联互通套件赋能数据利用与应用创新”整理而成。

IRIS医疗版互联互通套件的缘起与发展演进
 

来源HL7:正在到来的挑战 



http://hl7.org/fhir/change.html


 

这是来自HL7官网上的一张图,描述了我们在医疗卫生行业面临的一些挑战,以及信息化建设在应对挑战中发挥的作用。当今,医疗卫生、生物学、信息技术有很强的融合趋势,加之社会变革带来的经济方面的需求,同时构成颠覆传统医疗卫生行业的因素。

这张图显示了从“被动医疗”转向“主动医疗”过程中信息的爆炸式增长,信息共享交换推动了我们对信息的利用,在这一进程中,医疗卫生信息化起着核心作用——而让信息更具价值,赋予信息标准化和互操作能力的过程,这也是InterSystems一直努力的方向,我们在国内支持大量医院实现了互联互通建设。在建设过程中,我们注意到项目的定量部分的建设成本占比是比较高的,很多的工作都花在了合规性和相关管理工具的开发上——应用标准的实施是有成本的,而对于标准的理解在各个项目上水平不尽相同,这就进一步影响了互联互通项目的建设成果。

0
0 358