文章
· 十月 5, 2022 阅读大约需 4 分钟
Caché数据库私有apache版本升级

操作系统:
CentOS Linux release 7.9.2009 (Core)

1.查看数据相关信息

1)查看Caché数据库实例信息

[root@TestServer /]# ccontrol list

Configuration 'CACHE'   (default)
    directory: /opt/cache
    versionid: 2016.2.3.907.11.20719
    conf file: cache.cpf  (SuperServer port = 1972, WebServer = 57772)
    status:    running, since Tue Oct  4 12:54:05 2022
    state:     ok

2)查看Caché数据库私有apache版本信息

44 24
0 583
文章
· 九月 30, 2022 阅读大约需 11 分钟
使用Prometheus监控Cache集群

使用Prometheus监控Cache集群

Executive Summary

生产级别的Cache集群往往由多个Cache实例组成,而Cache自带的管理界面不能满足对整个集群的监控,因此在实际使用中,往往需要投入人力对实例进行性能巡检。即便如此,这种巡检模式实时性低、告警的漏报错报率高、对既往数据追溯能力差。针对Cache/IRIS集群管理的这一缺憾,本文提出以Prometheus监控Cache集群的方案,最终实现了对集群全实例监控指标的自动化采集,以及准实时监控数据展示和告警提示。

监控大屏3.主机实例监控

24 8
0 631
文章
· 九月 28, 2022 阅读大约需 12 分钟
关于%Dictionary.CompiledClass类在实际业务中的一些应用

简单分享下在医院实际业务过程中%Dictionary.CompiledClass的一些应用。
一,Query查询出来的数据直接存表。
我们经常会遇到一些突如其来的检查,如:飞行检查,审计检查等等,往往一下子要查询几年的各种数据,每种数据涉及字段还非常多,数据之间还要求对上,查询耗时长,数据对比难度大,此时,我们需要把查询出来的数据直接存到临时表,数据核对和修改直接在临时表中完成,核对好的数据直接在sqldbx或者水滴等查询工具中整表导出,效率会高一些。
具体实现:按照数据要求,把表建好,Query输出字段和表字段顺序一致,按日期每天调用Query查询和插入,记录异常数据,后续单独处理。
优点:效率明显提高,数据核对和修改、导出很方便,避免了数据量大,多次查询耗时长问题。
缺点:数据量大会占用存储,记得删。
// W ##CLASS(lizw.CloseCycleData).insertDayByDay("2022-01-01","2022-06-30")
ClassMethod insertDayByDay(sd, ed)
{
k ^tmplzw("insertFromQyeryTestpara",$j)

23 1
0 299
文章
· 九月 25, 2022 阅读大约需 78 分钟
IRIS与Caché的23种设计模式

IRIS的23种设计模式

第一章 Caché 设计模式 简单工厂模式

定义

  • 简单工厂模式属于创建型模式,又可称为静态工厂模式,这是由一个工厂对象决定创建出哪一种产品类的实例

使用场景

  • 工厂类负责创建的对象比较少
  • 客户只需知道传入工厂类的参数,而无须关心创建对象的逻辑

优点

  • 使用户根据参数获得对一个的类实例,避免了直接实例化类型,降低了耦合性
  • 能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类:客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,所有的客户类都要进行修改

缺点

  • 可实例化的类型在编译期间已经被确定。
  • 如果增加新类型,则需要修改工厂,这违背了开放封闭原则
  • 子类多过不适合使用

示例

  • 用Caché 实现一个计算器控制台程序,要求输入两个数和运算符号。
17 2
1 254
文章
· 九月 27, 2022 阅读大约需 6 分钟
Cache / IRIS 操作数据的3种基本方式

背景

Cache起源于没有SQL的1970时代,当时各种高级计算机语言才刚刚诞生,其中M语言较为独特,它的诞生就是为了在没有操作系统的机器上,进行数据存储。别忘了,Unix在1971年才发布。M语言别具一格地采用了Global多维数组,统一了复杂的内存操作和文件读写,使之成为了1970年代数据库的事实标准,特别是在医疗行业。而后Intersystems在1978年接过M语言的旗帜,在M语言上添加了SQL兼容层和ObjectScript层,前者顺应了时代的潮流,后者不仅为M语言提供了强大的OOP和各种便捷的语法糖,还让数据能以对象形式进行访问,让数据和代码更加紧密。

本文将简述多维数组、SQL、对象这3种数据操作方式,提供实例代码片段,并在运行效率、开发效率、管理效率、实用性方面讨论它们的优缺点。
为方便讨论,以学校与学生为例。对每种操作方法,都列举3种典型的用例,分别为,访问某特定ID的学生(即数据库ID索引)、访问某特定studentID的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。

现假设学生表/对象定义如下:

16 3
1 490
文章
· 九月 29, 2022 阅读大约需 3 分钟
Cache死循环检测和申明式事务

使用Cache的两个痛点问题:

一、Cache作为后关系型数据库,使用其提供M语言操作Global数据结构。可以达到极快的查询速度。M语言的set赋值和初始化没有区分,加之是弱类型,非常容易出现死循环,就算你是多年老手也一个不小心就踩坑。我就经历过改代码即使很小心还是出了死循环把数据库tmp撑满的事故。

二、M语言作为完备的编程语言,结合cache数据库操作数据实在是不要太方便。同时一个复杂的业务提交到数据库通过一个M逻辑全部处理完成,极大的减少了app和数据库交互次数。复杂业务的事务就是一方面,通过TSTART、TROLLBACK 、TCOMMIT,前台一次数据库交互后台就可能做了几十张表的更新操作。直接使用事务是容易,但是极易引入开放事务锁表(你自己就算很小心,也难保调别人接口别人事务不完善,而你又没检测事务层级),锁表之后结束进程导致数据回滚。

解决办法:

据我观察出现上面两个问题的原因,第一个是M语言弱类型和没单独的初始化命令导致,就算你是老手、工作细致也难以避免。第二个不是Cache特有的,通用关系库也有事务写的不完整的问题,事务问题对开发要求高或者从框架设计可以解决。

16 4
1 244
文章
· 十月 8, 2022 阅读大约需 6 分钟
10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用

安装InterSystems IRIS数据库的ODBC驱动,在Windows系统中配置数据源后,可以使用Microsoft Visual Studio 开发工具 中的服务器资源管理器很方便地连接到InterSystems IRIS数据库服务器,利用数据库连接的可视化视图,可以非常方便快捷地进行连接到InterSystems IRIS数据库的应用开发。本文将展示一个利用以上方式实现的例子,开发工具为Microsoft Visual Studio 2019,开发语言为C#,10分钟快速开发实现一个连接到InterSystems IRIS数据库的C#应用,在本例子中,可以通过选择日期和科室,查询指定日期和科室的就诊日志。

1、在成功安装InterSystems IRIS数据库的ODBC驱动后,从Windows的“控制面板”中选择“管理工具”,在“管理工具”中选择“ODBC数据源”。

16 6
3 768
文章
· 九月 21, 2022 阅读大约需 4 分钟
对 %XML.PropertyParameters类的探索

日常工作中,我们使用xml 应该是比较多的,早期的ensemble或者cache,对JSON的支持不是很好,但是对xml支持比较好。因此早期的接口方式中,webservice+xml的方式很常用。而对象导出为xml最简单的方式就是类继承 %XML.Adaptor。继承该类后,就可以使用很多xml的特性,以满足各种需求。虽然看不到对象转为xml的具体实现,但是配置了参数,就可以实现更多的效果。那么想自定义一些参数呢?如果有人打开过它的定义,可以看到类上面有个 PropertyClass = %XML.PropertyParameters”,那么我们其实在需要xml参数的同时,又要自定义参数,就可以自己写个属性类,继承于%XML.PropertyParameters。

15 4
0 147

IRISHealth以其完备且系统化的安全特性在医疗行业的数据库中独树一帜,这些特性包括安全认证、安全授权、安全审计、数据加密以及安全配置。其中数据传输无疑是其中最重要的一环。为此,IRISHealth采用了SSL/TLS技术来对传输的数据进行加密,有效保障了从IRIS数据平台的超级服务数据传输、Telnet服务数据传输、java/.net/Studio客户端的访问数据传输、MIRROR与DB的数据传输,到DBServer和ECPApp之间的数据传输的安全性。


本文是在两个IRISHealth2021实例之间进行ECP服务通信的示例,一个作为DBServer,一个作为ECPApp,两个实例之间通过使用SSL/TLS的ECP协议进行TCP的加密传输通信。

1.IRIS的DB和ECP环境:

DBServer

ECPApp

14 4
3 180
文章
· 九月 25, 2022 阅读大约需 25 分钟
Ens.Util.JSON类的启发

日常工作中,JSON使用越来越多,很多其他的语言里面有成熟的JSON API,但cache 我一直没找到。而同事们使用的基本都是自己写的一些JSON工具。这些小工具,多多少少有些局限。使用ensemble2016后,发现了 Ens.Util.JSON类,他可以处理JSON。翻阅代码后,实际上主要API是 %ZEN.Auxiliary.abstractController。在使用中,我们遇到一个问题,那就是有些JSON的节点名是带有下划线的,这个不太好处理。一般来说,我们把对象转为xml的时候,对象的属性我们是去掉下划线的,带下划线的名字是用 XMLNAME来设置的,于是考虑JSON里面也使用它(如果配置了)作为对象转JSON的时候,JSON的名字。

12 4
0 164
文章
· 十月 7, 2022 阅读大约需 4 分钟
第三方HA软件结合MIRROR使用方法探讨

在Cache 2018之前的版本中,数据库的高可用是通过第三方HA软件保障的,Cache数据库在2018以后及IRIS支持MIRROR技术,通过MIRROR可以保障数据库的高可用及数据的冗余,那么在新版本中,第三方HA软件与MIRROR是否可以同时使用以实现更高的数据库可用性?使用起来有哪些需要注意的?本文重点介绍探讨上述两个问题。

12 0
0 252
文章
· 十月 6, 2023 阅读大约需 3 分钟
进程表

iris 是数据平台,更是一种数据库。对于熟悉SQL语句的人来说,会认为“既然是数据库,数据应该就能使用sql语句来查询”。这是对的,但是因为有global这个概念,保存的数据可能在global里面,而没有对应的表,也可能保存在类的参数定义里面。这些数据,不能使用sql直接查询。要查询iris数据库的数据,通常有几种方式:1.直接查询表的数据。2.查询视图。3.调用存储过程(call 命令)。其中要查询“只存于global里面或者类参数里定义的数据”,只有使用存储过程。但是存储过程有个问题,就是程序如果迁移到低版本的cache数据库后,数据类型的定义会有问题,且不再支持使用select的方式,只能使用call。这对于第三方熟悉sql的人员来说很不友好。因此结合global和表的关系,介绍一种我称为“进程表”的表。进程表,指数据只存于该进程中,global的样式为"^||global名“。通常按照默认存储新加一个持久类(对应会生成一个表),然后手动的把global改成进程global,也就是加上”||“。然后写个方法,把需要查询出来的数据写入进程global。这样就能查询出来 了。调用形式为 SELECT * FROM People WHERE People_GLB()=1。

示例如下:

10 2
0 104
文章
· 十一月 12, 2023 阅读大约需 3 分钟
关于Cache中查看关键锁的几种方式

在日常Cache运维过程中可能会由于数据或者程序等原因造成锁的异常增长,导致数据库性能受到影响会出现程序报错或卡顿无法正常运行的问题。遇到此类问题需查看数据库当前锁列表情况,找到出现次数最多关键锁,根据关键锁对应的进程来判断处理。总结有以下三种方式查看关键锁。

10 2
0 121
文章
· 十月 9, 2022 阅读大约需 3 分钟
在Cache系统中使用负载均衡服务的探讨

Cache软件自带数据服务和应用服务。在实际使用中会将Cache数据服务和应用服务分别安装在不同的服务器上面,作为数据库服务器和应用服务器。数据库服务器和应用服务器通过ECP(企业缓存协议)进行数据交换。在应用服务器部署上web服务,让数据交换和应用处理分开,实现瘦数据和胖应用的系统模式。

9 3
1 131
文章
· 十月 18, 2022 阅读大约需 4 分钟
COS的基本语法

ObjectScript是一种面向对象的编程语言,它是InterSystems公司的Caché和Ensemble数据库的核心语言之一。ObjectScript语言的语法类似于MUMPS语言,它支持面向对象编程、过程式编程、函数式编程等多种编程范式。ObjectScript语言主要用于开发Caché和Ensemble数据库应用程序,它可以访问数据库中的数据、调用数据库中的存储过程、触发器和事件,还可以与其他编程语言进行交互。

8 2
0 183
文章
· 十月 19, 2022 阅读大约需 7 分钟
CORS请求Request携带Cookie失败占用License解决方案

CORS请求Request携带Cookie失败占用License解决方案

起因

  1. 因为是前后端分离的项目,前端使用的vue2,后端iris。需要获取cooikesessionid,每次请求时携带cookie,防止每次请求都占用一个license

  2. 登录认证,保持会话期间全局变量,超时退出。

现象

下图是如果不携带cookie每次请求都会新建一个session并且占用一个license

image

6 0
0 234
文章
· 一月 6, 2023 阅读大约需 8 分钟
《数据二十条》的号角声

国务院于2022年12月19日发布了《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》(后简称《数据二十条》),如何有效利用数据已经成为下一步的趋势。另一方面,无论是基于数据中台还是数据编织理念,两者也都对如何利用数据提出了构想。因此医疗行业数字化建设的目标已不能再局限于如何收集数据,建立医疗行业数据的流通机制将会是为越来越普遍的需求。

时钟拨回几年前,数据中台概念开始火爆。人们对数据中台的定义、诠释尽管有诸多差异,通过数据中台降低数据共享和利用的成本则是共同的期望。但经过这几年的探索之后,中台已死的观点也在涌现。究其原因,除去中台概念在技术上的不确定,数据流通过程中的责权益的不清晰也是严重的制约因素。毕竟,数据中台自身作为一套技术框架并不能代替法律法规与市场自动将数据转变为商品从而创造出流通价值。

那么,如何能够使数据的流通合规合法,使数据能够如货币和商品一般自由流动,则是我们需要思考和探索的主题,这次《数据二十条》的出现,无疑为医疗信息技术工作者提供了一个明确的思考方向。

4 0
0 192

各大技术社区常年充斥着关于字符集支持、乱码的问题。Cache’/Ensemble/HealthConnect/IRIS的用户也经常遇到这类问题。为何文字乱码在信息化发展这么久后还会困扰我们?因为字符集、多语言实在有点复杂。

我计划写三篇:第一篇花点时间回顾一下多语言字符集的简史,第二篇介绍一下各种技术对于字符集和字符编码的使用声明,最后一篇会介绍常见的ISC技术和工具的乱码、尤其是中文乱码的现象和解决办法。

4 0
3 528

一、背景

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

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

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

2.挑战

2.1 如何快速恢复?

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

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

3.解决方案

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

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

3 1
0 115

第四十五章 配置第三方软件以与 InterSystems 产品结合使用

产品通常在与非 工具一起运行的环境中运行,我们的产品与此类工具之间的交互可能会产生有害影响。 关于最佳、可靠部署配置的指导假定我们的产品可以在不受第三方工具干扰的情况下进行部署。例如, 发现用于安全、系统监控或病毒扫描的软件可能会影响我们产品的安装、性能和功能。对于直接与属于 产品的一部分或被 产品使用的文件进行交互的工具(例如病毒扫描程序)尤其如此。

了解客户面临的业务、合规性和其他要求会影响有关在给定环境中运行哪些软件以及如何配置此类软件的决策。一般来说, 建议我们产品的服务器端安装通过物理安全和隔离来保护。这种保护应该减少对其他工具的需求,或者至少减少它们运行的频率。

病毒扫描仪观察:

  1. 为了交付经过病毒检查的软件, 产品在经过消毒的环境中交付给我们的客户,并通过提供校验和进行验证。
  2. 性能影响。

[对策] 出于扫描目的,排除以下文件和目录:

3 0
0 65
文章
· 十二月 27, 2023 阅读大约需 2 分钟
百讲知识点索引

百讲知识点索引

简介

  • B站已更新截止到2023.12.31之前的所有百讲课程,总计261讲。
  • 什么是百讲?百讲是一个主要介绍IRISCache编程知识的免费课程。
  • 课程的特点是,将每一个知识点,都会用示例演示出来、了解原理,而不是仅仅告诉有这个功能。
  • 每周一期,每期会请到有多年开发经验的老师来给大家讲解课程。
  • 百讲观看地址:https://www.bilibili.com/video/BV1cw41147xr/

在这里插入图片描述

3 1
0 62
文章
· 十一月 30, 2022 阅读大约需 5 分钟
HL7v2到底是什么?!

HL7(Health Level 7)是一套技术规范,用于医院信息系统(HIS)之间临床、财务和管理数据的计算机互交换。这些规范被不同程度地被纳入美国(ANSI)和国际(ISO)正式标准的语料库中。

HL7的L7表示它是在OSI模型的第7层,换句话说,在应用层运行的标准。这意味着HL7不需要考虑交换的安全性,也不需要考虑信息传输的安全性(这一点由较低层次的层来保证,例如用于安全的SSL/TLS或用于数据传输的TCP)。更准确地说,第7层支持终端用户进程和应用的通信,以及面向用户的软件应用的数据展示。作为OSI模型的最高层,也是最接近最终用户的层,第7层提供特定的应用功能,如识别通信伙伴和它们之间的服务质量,确定资源可用性,考虑隐私和用户认证,以及同步通信,并将应用与OSI模型的较低层连接起来。

回到HL7标准,HL7第二版标准(也称为Pipehat)最初创建于1989年,但目前仍在使用并定期更新,形成了2.1、2.2、2.3、2.3.1、2.4、2.5、2.5.1、2.6、2.7、2.7.1、2.8、2.8.1、2.8.2和2.9版本。v2.x标准是向后兼容的(例如,基于2.3版本的信息将被支持2.6版本的应用程序所理解),在更高的版本中,你会看到一些字段是专门为它而留的。

3 0
1 459
文章
· 九月 23, 2022 阅读大约需 2 分钟
第四十一章 使用多个 IRIS 实例(一)

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

可以在单个主机系统上安装和运行多个 IRIS® 数据平台实例。每个实例都是一个独特的、独立的 IRIS 环境。

管理 IRIS 实例

有许多方法可以连接和管理 IRIS 实例,它可能是安装在给定系统上的几种方法之一。两种最常用的方法如下:

  • 安装在 Windows 系统上的每个 IRIS 实例在系统托盘中都有自己的启动器,除其他选项外,还可以:

    • 通过打开管理门户、 TerminalStudio 开发者客户端连接到实例。
    • 启动、停止和重新启动实例。
    • 打开用户和开发人员文档。

    从启动器中,还可以管理多个远程 IRIS 实例,包括但不限于运行远程备份、编辑配置设置以及创建和编译远程对象和例程。

2 0
0 84
文章
· 九月 14, 2022 阅读大约需 6 分钟
第三十二章 管理许可(五)

第三十二章 管理许可(五)

Identifying Users

IRIS 许可系统识别不同的用户并为每个用户分配一个许可单元。用户由许可证用户 ID 标识,该 ID 可以是 IP 地址、用户名、Web 会话 ID 或其他标识符,具体取决于用户的连接方式。

由单个用户启动或为单个用户启动的多个进程共享一个许可证单元,最多可达每个用户的最大进程数。如果进程数超过此最大值,则会发生转换 IRIS 开始为该用户 ID 的每个进程分配一个许可单元。系统假设如果与用户 ID 关联的进程数超过最大值,则多个用户正在通过中介(例如防火墙系统)访问 IRIS,因此需要额外的许可证单元。 (由 Job 命令启动的进程计入调用该命令的用户 ID 下。)

2 0
0 50
文章
· 十月 5, 2022 阅读大约需 3 分钟
第七章 CSP 架构 - URL 的 Web 服务器配置

第七章 CSP 架构 - URL 的 Web 服务器配置

URLWeb 服务器配置

提供了一个默认的 /csp 虚拟目录来运行 CSP 应用程序。如果正在运行多个 Caché 实例,它还提供了一个默认虚拟目录 /cacheinstance/csp 以供使用。如果正在运行多个 Caché 实例并使用虚拟目录 /csp访问 CSP 应用程序,而之前没有 /cacheinstance,它将访问最后安装的 Caché 版本。如果计划允许使用以 http://localhost/csp 或 http//localhost/cacheinstance/csp 开头的应用程序路径调用所有 CSP 应用程序,则无需在 Web 服务器中进行任何更改配置。

2 0
0 64
文章
· 十月 6, 2022 阅读大约需 4 分钟
第八章 CSP 架构 - CSP 网关配置

第八章 CSP 架构 - CSP 网关配置

CSP 网关配置

CSP 网关是安装在 Web 服务器上并由其加载的 DLL 或共享库。 CSP 网关检测对扩展名为 .csp.cls 的文件的任何请求,并将它们发送到定义的 Caché 服务器进行处理。

CSP 网关管理器

可以使用 CSP 网关管理器(CSP Web 网关管理页面)或直接编辑其配置文件 csp.ini 来配置 CSP 网关。

CSP 网关管理器是一个小型 Web 应用程序,可以在浏览器中使用它。您可以通过导航到系统管理 > 配置 > CSP 网关管理来访问 CSP 网关管理器。默认情况下,它会访问专用 Web 服务器的 CSP 网关管理器。

2 0
0 42

%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:

2 0
2 240