清除过滤器
文章
Michael Lei · 五月 15, 2022
InterSystems IRIS对加密、解密和哈希操作有很好的支持。在%SYSTEM.Encryption(https://docs.intersystems.com/iris20212/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25SYSTEM.Encryption)类中,有市场上主要算法的类方法。
IRIS算法和加密/解密类型
正如你所看到的,这些操作是基于密钥的,包括3个类:
对称密钥: 进行加密和解密操作的部分共享同一个秘密密钥。
非对称密钥: 进行加密和解密操作的部分共享相同的秘密密钥进行加密。然而,对于解密,每个部分都有一个私人密钥。这个密钥不能与其他人共享,因为它是一个身份证明。
哈希: 当你不需要解密,而只需要加密时使用。当涉及到存储用户密码时,这是一种常见的方法。
对称和非对称加密的区别
对称加密使用一个单一的密钥,需要在需要接收信息的人之间共享,而非对称加密在通信时使用一对公共密钥和一个私人密钥来加密和解密信息。
对称加密是比较老的技术,而非对称加密则相对较新。
非对称加密的出现是为了补充对称加密模式中需要共享密钥的固有问题,通过使用一对公共-私有密钥来消除共享密钥的需要。
非对称加密比对称加密花费的时间相对较多。
主要区别
对称加密
非对称加密
密码文本大小
比原始纯文本文件更小的密码文本
比原始纯文本文件更大的密码文本
数据量
用于传输大数据.
用于传输小数据.
资源消耗
较低.
较高
密钥长度
128 或 256 位
RSA 2048位或者更长.
安全性
由于使用单一密钥进行加密,安全性较低。
由于在加密和解密中涉及两个不同的密钥,因此要安全得多。
密钥数量
加密和解密用单一密钥
加密和解密使用两个不同的密钥
技术
较老.
较新.
保密性
单一密钥,有可能被破解.
两个密钥分别用于加密和解密,从而消除了共享密钥的需要.
速度
较快
较慢.
算法
RC4, AES, DES, 3DES, QUAD.
RSA, Diffie-Hellman, ECC .
来源: https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences
使用 %SYSTEM.Encryption 类来实现加密、解密与哈希
要行使IRIS对加密、解密和哈希操作的支持,请访问https://github.com/yurimarx/cryptography-samples,并遵循以下步骤:
1. Clone/git 将 repo 拉入任何本地目录
$ git clone https://github.com/yurimarx/cryptography-samples.git
2. 在目录中打开 Docker 终端并执行:
$ docker-compose build
3. 启动 IRIS 容器:
$ docker-compose up -d
4. 打开 IRIS 终端:
$ docker-compose exec iris iris session iris -U IRISAPP
IRISAPP>
5. 实现非对称RSA 加密:
IRISAPP>Set ciphertext = ##class(dc.cryptosamples.Samples).DoRSAEncrypt("InterSystems")
IRISAPP>Write ciphertext
Ms/eR7pPmE39KBJu75EOYIxpFEd7qqoji61EfahJE1r9mGZX1NYuw5i2cPS5YwE3Aw6vPAeiEKXF
rYW++WtzMeRIRdCMbLG9PrCHD3iQHfZobBnuzx/JMXVc6a4TssbY9gk7qJ5BmlqRTU8zNJiiVmd8
pCFpJgwKzKkNrIgaQn48EgnwblmVkxSFnF2jwXpBt/naNudBguFUBthef2wfULl4uY00aZzHHNxA
bi15mzTdlSJu1vRtCQaEahng9ug7BZ6dyWCHOv74O/L5NEHI+jU+kHQeF2DJneE2yWNESzqhSECa
ZbRjjxNxiRn/HVAKyZdAjkGQVKUkyG8vjnc3Jw==
6. 实现非对称 RSA 解密:
IRISAPP>Set plaintext = ##class(dc.cryptosamples.Samples).DoRSADecrypt(ciphertext)
IRISAPP>Write plaintext
InterSystems
7. 实现对称 AES CBC 加密:
IRISAPP>Do ##class(dc.cryptosamples.Samples).DoAESCBCEncrypt("InterSystems")
8sGVUikDZaJF+Z9UljFVAA==
8. 实现对称AES CBC 解密:
IRISAPP>Do ##class(dc.cryptosamples.Samples).DoAESCBCDecrypt("8sGVUikDZaJF+Z9UljFVAA==")
InterSystems
9. 实现MD5 哈希:
IRISAPP>Do ##class(dc.cryptosamples.Samples).DoHash("InterSystems")
rOs6HXfrnbEY5+JBdUJ8hw==
10. 实现SHA 推荐哈希:
IRISAPP>Do ##class(dc.cryptosamples.Samples).DoSHAHash("InterSystems")
+X0hDlyoViPlWOm/825KvN3rRKB5cTU5EQTDLvPWM+E=
11. 退出终端:
Enter HALT or H (大小写不敏感)
关于源代码
1. 关于对称密钥
# to use with symmetric encrypt/decrypt
ENV SECRETKEY=InterSystemsIRIS
在Dockerfile创建了一个环境密钥,作为对称操作的秘钥。
2. 关于非对称密钥
# to use with asymmetric encrypt/decrypt
RUN openssl req -new -x509 -sha256 -config example-com.conf -newkey rsa:2048 -nodes -keyout example-com.key.pem -days 365 -out example-com.cert.pem
在Dockerfile创建了一个公钥和一个私钥用作非对称操作
3. 对称加密
// Symmetric Keys sample to encrypt
ClassMethod DoAESCBCEncrypt(plaintext As %String) As %Status
{
// convert to utf-8
Set text=$ZCONVERT(plaintext,"O","UTF8")
// set a secret key
Set secretkey = $system.Util.GetEnviron("SECRETKEY")
Set IV = $system.Util.GetEnviron("SECRETKEY")
// encrypt a text
Set text = $SYSTEM.Encryption.AESCBCEncrypt(text, secretkey, IV)
Set ciphertext = $SYSTEM.Encryption.Base64Encode(text)
Write ciphertext
}
AES CBC 加密主要用于加密文本。Base64编码将结果作为一个可读的文本返回给用户。.
4. 对称解密
// Symmetric Keys sample to decrypt
ClassMethod DoAESCBCDecrypt(ciphertext As %String) As %Status
{
// set a secret key
Set secretkey = $system.Util.GetEnviron("SECRETKEY")
Set IV = $system.Util.GetEnviron("SECRETKEY")
// decrypt a text
Set text=$SYSTEM.Encryption.Base64Decode(ciphertext)
Set text=$SYSTEM.Encryption.AESCBCDecrypt(text,secretkey,IV)
Set plaintext=$ZCONVERT(text,"I","UTF8")
Write plaintext
}
AES CBC 解密用于解密文本.Base64解码将加密后的文本返回为二进制文本,可以用来解密。
5. 非对称加密
// Asymmetric Keys sample to encrypt
ClassMethod DoRSAEncrypt(plaintext As %String) As %Status
{
// get public certificate
Set pubKeyFileName = "/opt/irisbuild/example-com.cert.pem"
Set objCharFile = ##class(%Stream.FileCharacter).%New()
Set objCharFile.Filename = pubKeyFileName
Set pubKey = objCharFile.Read()
// encrypt using RSA
Set binarytext = $System.Encryption.RSAEncrypt(plaintext, pubKey)
Set ciphertext = $SYSTEM.Encryption.Base64Encode(binarytext)
Return ciphertext
}
必须获得公钥文件内容,用RSA进行加密。RSA加密是用来加密文本的。
6. 非对称解密
// Asymmetric Keys sample to decrypt
ClassMethod DoRSADecrypt(ciphertext As %String) As %Status
{
// get private key
Set privKeyFileName = "/opt/irisbuild/example-com.key.pem"
Set privobjCharFile = ##class(%Stream.FileCharacter).%New()
Set privobjCharFile.Filename = privKeyFileName
Set privKey = privobjCharFile.Read()
// get ciphertext in binary format
Set text=$SYSTEM.Encryption.Base64Decode(ciphertext)
// decrypt text using RSA
Set plaintext = $System.Encryption.RSADecrypt(text, privKey)
Return plaintext
}
要想用RSA解密,必须得到私钥文件内容。RSA解密的操作来解密文本。
7. 使用MD5的哈希文本(老方法)
// Hash sample
ClassMethod DoHash(plaintext As %String) As %Status
{
// convert to utf-8
Set text=$ZCONVERT(plaintext,"O","UTF8")
// hash a text
Set hashtext = $SYSTEM.Encryption.MD5Hash(text)
Set base64text = $SYSTEM.Encryption.Base64Encode(hashtext)
// convert to hex text to following best practices
Set hextext = ..GetHexText(base64text)
// return using lowercase
Write $ZCONVERT(hextext,"L")
}
MD5 哈希加密文本,并且不能被解密Hash will encrypt the text, and it will not be possible to decrypt it.新项目不建议使用MD5的哈希值,因为它被认为是不安全的。这就是为什么它被SHA所取代。InterSystems的IRIS支持SHA(我们的下一个例子将演示它)。
8. 使用SHA的Hash文本 (推荐)
我们将在这个样本中使用SHA-3哈希方法。根据InterSystems公司的文档,该方法使用美国安全哈希算法-3之一生成哈希值((更多信息见联邦信息处理标准出版物202)。
// Hash using SHA
ClassMethod DoSHAHash(plaintext As %String) As %Status
{
// convert to utf-8
Set text=$ZCONVERT(plaintext,"O","UTF8")
// hash a text
Set hashtext = $SYSTEM.Encryption.SHA3Hash(256, text)
Set base64text = $SYSTEM.Encryption.Base64Encode(hashtext)
// convert to hex text to following best practices
Set hextext = ..GetHexText(base64text)
// return using lowercase
Write $ZCONVERT(hextext,"L")
}
对于SHA方法,可以设置哈希操作中使用的比特长度。位数越多,破解哈希就越困难。然而,哈希过程也会变慢。在这个例子中,我们使用了256位。你可以选择以下长度:
224 (SHA-224)
256 (SHA-256)
384 (SHA-384)
512 (SHA-512)
文章
Lucy Ma · 五月 18, 2022
什么是选择性构建?
选择性构建是InterSystems IRIS (2020.1及以后)商业智能的一个功能。选择性构建允许仅构建模型中的指定元素,并且保持模型可以正常使用。
选择性构建有哪些特性?
在了解选择性构建的细节之前,一个简单的汇总在介绍关于在构建一个标准模型的不同阶段是重要的。这里列出了标准模型构建的过程阶段:
1)删除模型中已存在的数据
2)增添模型需要的全量数据
3)构建所有的索引
现在我们已经熟悉一个标准模型构建的过程,我们可以理解选择性构建的优势。在标准构建过程中,模型必须被停用,因为第一步是需要删除掉所有的已存在数据,接着再增添全量数据。这种情况不会发生在选择性构建中。选择性构建仅仅选择指定的模型元素停用,然后更新相应的数据到这些元素中。这意味着已经存在的数据并不会被删除。既然已经存在数据不会被删除,模型则不需要被停用。那些被选择构建的元素会被停用,表示如果用户想要查询这些停用的元素,他们会看到报错信息。
选择性构建的使用场景?
选择性构建是一种很好的方式用于更新数据模型,而不需要将整个模型停用来延长构建时间。基于模型的大小,一个模型有可能需要几个小时甚至几天来做全量的构建。如此长的构建时间仅仅为了增加一条新的维度减弱了频繁更改模型的灵活性。
如何使用?
从UI界面
在架构中,任何更改的元素都会被自动追踪。当你试图从UI界面构建模型,弹出的对话框会提供一个选项叫做选择性构建。这个选项是默认的,无论任何模型中的元素被更改需要重新构建。当然,如果你更想构建全部模型,也可以在这个界面选择。
构建模型接口
在构建模型的接口中有一个新的参数。这个参数在文档中被描述为:“pFactList是一个特殊属性的列表,存在于模型的事实表类中。如果pFactList被设定,构建过程会仅仅更新在这个事实列表中的行。这个列表可以用逗号分割或者用 $LB的格式。这个特殊的事实表更新时会被单独标记不可用于被搜索,以及与其相关的维度也不可用,否则的话则会收到报错提示。”
我会建议使用UI界面来部署模型的更改,接口方式用于部署关于系统层面的变更。
学习更多关于选择性构建,请参考文档。
文章
Lilian Huang · 六月 23, 2022
InterSystems许可证是指InterSystems发放的电子或纸质版的产品许可证,内容包括许可证订购日期、产品描述等。
激活码/License Key是InterSystems随许可证发放的许可软件激活码。通常情况下,客户收到的是电子许可证。
以下是一些许可证,激活码/License key常见咨询问题参考:
收到电子许可证后,如何获取纸质版许可证?
纸质版许可证或是安装介质盘,可通过合作伙伴或是致电原厂核验许可证信息后获取。
如需申请WRC支持,需要
申请准备:
WRC账号,如无请通过WRC联络信息申请WRC账号
故障问题描述
许可证或激活码/License key
最终客户名称
WRC全球响应中心联络信息:
电话: +86 400-601-9890
邮件: support@intersystems.com
网站1(国内用户): https://wrc.intersystems.cn/
网站2:https://wrc.intersystems.com
如何查询您的授权文件客户名和授权密钥?
方法1: 使用管理门户
以管理员身份登录到系统管理门户,进入菜单:系统管理>软件许可颁发>软件许授权码 (或英文菜单:System Administartion>Licensing>License Key)
记录客户名和授权密钥:
方法2 :使用命令行
执行命令: w $System.License.CKEY(),并拷贝输出内容
USER>w $System.License.CKEY()
Cache Key display:
Based on the active key file 'c:\intersystems\cache\mgr\cache.key'
LicenseCapacity = Cache 2017.1, Enterprise:100, Concurrent User
CustomerName = ***
OrderNumber = 54321
ExpirationDate = 11/30/2022
AuthorizationKey = ********************************************************
MachineID =
方法3 :查看授权文件
使用文本编辑器查看您收到的授权文件。如果您不知道授权文件保存在哪里,可以到服务器的<InterSystems产品安装目录>/mgr/ 下找到cache.key (Cache’/Ensemble/旧版HealthConnect) 或iris.key (IRIS/新版HealthConnect)。
如何查询您的许可证产品类型和版本
方法1 :使用管理门户
任意身份登录到管理门户,点击菜单“关于”,记录版本信息。
方法2 :使用命令行
执行命令: w $ZV,并拷贝输出内容
USER>w $ZV
Cache for Windows (x86-64) 2017.1.1 (Build 111U) Wed May 17 2017 15:34:56 EDT
备注:其他许可证任何问题,欢迎咨询:GCDPSales@intersystems.com。
问题
泽 吴 · 三月 16, 2022
我就一个问题,InterSystems IRIS 怎么用,我就想创建一个数据库(也不知道是不是cache),然后通过jdbc url 连接,找了一个星期的文档,不知道jdbc url 是什么,完全靠猜,别跟我说文档,没有一个靠谱的 不知道你在哪里找文档找了一个星期,可以直接去docs.intersytems.com,选择你要对应的版本,然后再查找框里输入jdbc url, 比如我在最新的InterSystems IRIS for health 2021.2的文档中查到:
jdbc:IRIS://<host>:<port>/<namespace>/<logfile>:<eventclass>:<nodelay>:<ssl>
比如:
jdbc:IRIS://127.0.0.1:1972/User
原文在这里:https://docs.intersystems.com/irisforhealth20212/csp/docbook/DocBook.UI.Page.cls?KEY=BJAVA_connecting#BJAVA_connecting_url 从文档库搜索关键词“JDBC“
进入第一篇或第二篇文档,其中明确指出了IRIS使用的JDBC参数
耗时大约15秒
请务必使用官方文档以达到事半功倍的效果哦
文章
Michael Lei · 十一月 2, 2022
门为医疗行业打造,深度整合国内外医疗行业标准,专有技术服务医疗行业44年,可能是全球最早从事医疗信息化的公司;
耕细做打磨数十年的稳定、可靠、易用、可扩展的数据平台;
色鲜明,不唯技术、终生负责、以解决客户问题为核心的特色企业文化;
一代混合一体化架构,一个平台同时支持混合事务处理、传统架构、容器化、云原生等多种应用场景;
公告
Jeff Liu · 二月 8, 2022
InterSystems 数据平台团队非常高兴地宣布,InterSystems IRIS数据平台、InterSystems IRIS for Health和HealthShare Health Connect的2021.2版本现已向我们的客户和合作伙伴全面开放(GA)。
发布重点:
InterSystems IRIS数据平台2021.2使开发、部署和管理连接数据和应用孤岛的增强型应用和业务流程更加容易。它有许多新的功能和改进!
为应用程序和界面开发人员提供的增强功能,包括:
嵌入式Python
使用Python进行互操作性开发
对Visual Studio Code ObjectScript扩展包的更新
增加了新的业务服务和操作,允许用户以最少的自定义编码来设置和运行SQL查询
对分析和人工智能的增强,包括:
新的SQL LOAD命令有效地将CSV和JDBC源数据加载到表中
增强适应性分析的功能
对云计算和运营任务的加强,包括:
新的云连接器使得在InterSystems IRIS应用程序中访问和使用云服务变得简单。
IKO的改进提高了Kubernetes资源的可管理性
对数据库和系统管理员的增强,包括:
在线分片再平衡可以在不中断操作的情况下自动在各节点间分配数据
自适应SQL引擎使用快速块采样和自动化来收集高级表的统计数据,并利用运行时信息来改进查询规划
通过新的流和日志文件压缩设置,InterSystems IRIS的存储需求得以降低
支持TLS 1.3和OpenSSL 1.1.1,使用系统提供的库
新的^TRACE工具报告详细的进程统计数据,如缓存点击率和读取率
关于所有这些功能的更多细节可以在产品文档中找到:
InterSystems IRIS 2021.2 documentation and release notes
InterSystems IRIS for Health 2021.2 documentation and release notes
HealthShare Health Connect 2021.2 documentation and release notes
如何获得软件
InterSystems IRIS 2021.2是一个持续交付(CD)版本,现在带有所有支持平台的经典安装包,以及OCI(Open Container Initiative)(又称Docker容器格式)的容器镜像。 容器镜像可用于Linux x86-64和Linux ARM64的OCI兼容运行时引擎。 详见 支持平台文档.
每个持续交付产品的完整安装包都可以从WRC 支持中心的网站 获得 . 使用 "自定义 "安装选项使用户能够挑选他们需要的选项,如InterSystems Studio和IntegratedML,以正确地缩小他们的安装范围。
容器镜像 企业版本,和社区版本 和所有的相关组件都可以从 InterSystems Container Registry 使用以下命令获得:
docker pull containers.intersystems.com/intersystems/iris:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.649.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.649.0
有关可用镜像的完整列表,请参考 ICR 文档.
另外,所有容器镜像的tarball版本可以通过WRC的 CD容器产品下载网站获得。.
我们在主要云市场上的相应列表将在未来几天内更新。
分享你的经验
我们很高兴看到这个版本现在达到了GA的里程碑,并渴望听到你对新软件的体验。请不要犹豫,通过InterSystmes的销售团队或 开发者社区 与我们联系。
对于选定的新功能和产品,我们已经建立了早期试用计划,允许我们的用户在软件发布之前进行评估。通过这些有针对性的举措,我们可以向目标受众学习,确保新产品在发布时能满足他们的需求。如果你有兴趣参与其中的任何一项,请通过InterSystems销售团队或 开发者社区 与我们联系。
文章
Qiao Peng · 二月 22, 2023
面向对象编程的优势
在应用程序开发时,我们使用的大多数开发语言都是面向对象编程 object-oriented programming (OOP)语言,例如大家熟悉的Java、.NET。而TIOBE的2023年2月的最新开发语言流行排行榜上,前5大语言都是面向对象编程语言,连排名第六的Visual Basic都有了越来越多的OO特性:
为什么使用面向对象编程这么流行?因为它有诸多优势:
封装:将数据和操作数据的代码封装在一个单元中,在确定范围的数据上进行编程。方便代码的开发、管理与分享。
抽象:将业务数据概括为不同的对象类型,从而进行业务分组开发、简化程序。
继承:一个类可以从另一个类继承它属性和行为,从而实现更大范围的代码复用。
多态:多个对象可以创建自一个类,且可以有不同的行为。一段灵活的代码能实现多种形态的业务,它进一步降低了代码开发量和调用难度。
而这4个优势正是面向对象编程的核心特征。
关系型数据库的对象/关系错配
虽然面向对象编程是绝对的主流,但数据通常被保存到关系型数据库中。关系型数据库的行和列二维关系与复杂的对象并不匹配:
面向对象的核心特性:封装、抽象、继承、多态,关系数据库都无法直接支持。
对象可以表达复杂的多维度、多类型的数据集,关系性数据库只能表达二维(行和列)、简单类型的数据集。例如对于集合类型-列表或数组,面向对象可以直接将其作为对象的属性,而关系型数据库只能用额外的关联子表或序列化为字符串/字符流等进行表达。
面向对象间通过继承、引用等方式建立对象间关系,关系性数据库通过外键建立表之间的关系。例如人和患者这两个业务概念,在面向对象编程中可以是两个有继承关系的对象类 – 子类患者的属性和方法多数是由人继承来的;而在关系数据库中,只能表达为没有关系的两张表,无法体现这种关系。
在表达和操作数据的方式上, 面向对象基于封装原则,其中数据和操作该数据的代码被组合到一个单元中。而关系数据库基于规范化原则,其中数据被分成单独的表以最小化数据冗余并提高查询性能。例如患者和其病历这两个业务概念,在面向对象编程中病历是患者对象类中的一个集合属性,通过患者可以直接操作病历集和每一份病历;而在关系数据库中,只能表达为通过外键关联的两张表:患者表和病历表。还要保证一个业务对象操作时对应多张表的事务一致性问题。
简单比喻一下这种错配,这就像一辆车,我们使用面向对象方式操作时,是以整车的形式操纵它;但存这辆车时,我们要把它先拆成零件 – 发动机、轮胎、车架… - 分类保存,取车时,再把零件组装起来才能上路。
为了应对这种对象关系错配,通常有三种方法:
自己开发数据映射逻辑,将一个对象拆成对应的多张表,自己维护保存对象数据时的SQL(可能是复杂的存储过程)和从SQL获取数据后组合为对象的代码。
使用对象关系映射 (ORM)框架,例如Hibernate,来自动实现对象模型和关系模型间的映射。它增加了系统的复杂度、降低了性能和可靠性。
直接使用面向对象数据库管理系统。
InterSystems IRIS的面向对象特性
InterSystems Caché和InterSystems IRIS作为多模型数据库管理系统,其面向对象数据库特性在全球面向对象数据库排名中分列第1、第2位。它提供了丰富的面向对象特性和对包括SQL的支持。
完整的OO特性
InterSystems IRIS提供了完整的面向对象特性:封装、多重继承、多态。
封装
InterSystems IRIS可以将数据、逻辑和复杂的模型关系封装在类中。在类中,可以定义:
属性: 支持任意复杂的属性类型,包括简单数据类型、对象型类型、关系型类型、集合类型、透明类型、计算类型等。并支持对属性的复杂约束,例如取值范围约束、模式约束、唯一性约束等
参数:静态属性
方法:操作对象的方法,可以是静态方法或实例方法。方法可以是私有方法,从而不会被继承。InterSystems IRIS提供方法生成器的概念:方法是创建方法实现的程序。使用方法生成器,可以创建类、为不同的情况自动生成特定的应用代码。
索引:用于加速数据检索等索引,支持多种索引类型,包括普通索引、位图索引、位片索引;支持复合索引
查询:封装好的对数据的查询方法,可以基于对象或SQL构建对数据的查询,并可封装为SQL视图或SQL存储过程
持久化方案:可以动态调整的底层多维存储方案。调整持久化方案,不影响以对象和SQL方式对数据的操作与查询代码
/// 人
Class User.Person Extends (%Persistent, %XML.Adaptor, %Populate)
{
/// 属性: 姓名
/// 类型: 字符串
Property Name As %String;
/// 属性: 性别
/// 类型: 字符串
/// 约束取值范围为男和女
Property Gender As %String(VALUELIST = ",男,女");
/// 属性: 家庭住址
/// 类型: User.Address
Property HomeAddress As User.Address;
/// 索引: 基于Gender的位图索引
Index bmIndGender On Gender [ Type = bitmap ];
}
支持纯虚类开发,同时InterSystems IRIS提供庞大的、功能完善的类库,方便用户直接使用或继承。
多重继承
多重继承让一个子类可以同时从多个的父类那里继承属性和行为(方法)。InterSystems IRIS通过多重继承能力,可以快速构建代码。子类可以覆盖父类的属性和方法。
/// 患者,继承与人
Class User.Patient Extends User.Person
{
/// 患者病案号
Property MRN As %String;
}
多态
InterSystems IRIS多态特性让程序可以用父类打开子类的实例,运行这个实例上的方法时,执行的是子类覆盖过的方法。通过多态特性,避免父类的代码臃肿、降低维护难度。
例如1号实例是人,6号实例是患者。都用类User.Person打开对应对象,并用XMLExport输出对象的XML序列化结果,可以看到6号患者的记录输出了它独有的病案号信息:
USER>do ##class(User.Person).%OpenId(1).XMLExport()
<Person><Name>Ximines,Joe U.</Name><Gender>男</Gender><HomeAddress><City>Washington</City><Street>3006 Washington Blvd</Street></HomeAddress></Person>
USER>do ##class(User.Person).%OpenId(6).XMLExport()
<Patient><Name>Geoffrion,Clint R.</Name><Gender>女</Gender><HomeAddress><City>Fargo</City><Street>908 Franklin Place</Street></HomeAddress><MRN>H7768</MRN></Patient>
透明的持久化
通过继承父类%Persistent,任何的类都可以自动获得透明的持久化 (存取到数据库) 的能力:
能够使用方法来新建、打开、修改、保存和删除对象。
当打开一个对象实例并引用对象类型的属性时,系统也会自动打开该对象。这个过程被称为swizzling(也被称为懒惰加载)。然后就可以对该对象进行操作。在下面的例子中,当User.Person对象被打开时,相应的User.Address对象被刷新了。
Set person=##class(User.Person).%OpenId(3)
Set person.Name="张小明"
Set person.HomeAddress.City="北京"
Do person.%Save()
同样,当保存一个对象时,系统也会自动保存其所有的对象类型属性 - 这被称为深度保存。InterSystems IRIS可以通过选项设置执行浅保存。
ACID
InterSystems IRIS的面向对象编程提供事务管理和锁机制,完全支持ACID事务。
在打开一个持久化对象时,可以指定并发锁定的程度,因为持久化对象有可能被多个用户或多个进程使用。锁定程度选项包括:无锁、原子读、共享锁、共享/保留锁、排他/保留锁。
在操作多个持久化对象时,可以将这些操作纳入一个事务进行管理,从而确保事务完整提交或全部回滚。
SQL访问
对于事务性操作来说,面向对象开发非常合适;但对于批量数据操作和数据的查询检索来说,SQL是目前大家最熟悉和便捷的操作语言。多数面向对象数据库使用专用的API来操作数据,而不支持SQL,这影响了开发的便捷性、提高了开发门槛。
InterSystems IRIS在支持面向对象建模和开发的同时,也支持关系型的数据操作,这是它多模型特性的一部分。
父类%Persistent提供了InterSystems IRIS中对象 - SQL投射关系的框架。它提供如下核心能力:
自动建立并维护对象-SQL的投射关系。这种投射是双向的:使用对象建模,会自动投射出SQL表模型;如果使用SQL DDL建模,同样会生成对应的对象模型。这种投射会选择合适的投射逻辑,例如将对象型属性投射为SQL子表、将关系型属性投射为SQL外键。
开发者可以干预对象-SQL的投射关系,从而得到更适合自己的模型。例如对于对象模型中的列表集合类型,默认会投射为表的一个字段,而开发者可以通过设置将它投射为一张子表。
对象-SQL投射并不会拷贝一份不同模型的数据,而是通过投射,将一份数据投射为不同的模型,供开发者在最适合的场景下使用最高效的模型。
投射出的SQL和对象模型同时支持ACID的读写操作。也就是说使用对象方式建模,依然可以使用SQL插入、更新、删除数据。
在类方法中,可以直接使用SQL;同样可以直接将类的Query发布为SQL视图、将类的方法发布为SQL存储过程。在持久化类中,可以定义SQL触发器。
对SQL的对象模式扩展:为了在面向对象应用程序中更容易地使用SQL,InterSystems IRIS提供SQL的一系列对象扩展。其中最有趣的是使用隐式连接运算符("->")提供对象引用的能力,通常被称为 "箭头语法",它可以很大程度上简化SQL的编写。例如,假设你有一个Vendor类,它引用了另外两个类Contact和Region作为属性。在SQL投射上,会看到3张表:Vendor表、Contact表和Region表。要获得Vendor的完整信息,标准SQL需要类似于这样的实现:
SELECT Vendor.ID,Vendor.Name,Contact.Name
FROM Vendor
LEFT OUTER JOIN Contact ON Contact.ID = Vendor.ContactInfo
LEFT OUTER JOIN Region ON Region.ID = Vendor.Region AND Region.Name = '南极洲'
而使用隐式连接运算符,可以在SQL中把引用类型的字段当作对象,使用相关类的属性:
SELECT ID,Name,ContactInfo->Name
FROM Vendor
WHERE Vendor->Region->Name = '南极洲'
另外,InterSystems SQL层面也能体现出很多面向对象的特性。例如,上面的User.Person和User.Patient这两个类投射出Person表和Patient表,如果创建了5条Person的记录,又创建了5条Patient记录,在Patient表中将看到5条记录,而在Person表中将看到10条记录,因为这5个Patient也是Person。这种实现极大方便数据的查询和利用,而关系型数据库很难实现。
从Patient表中获取到5条Patient记录:
从Person表中,获取到10条记录,包括ID为6-10的Patient记录,因为它们也是Person记录:
数据分片
InterSystems IRIS提供数据分片技术(Sharding),将超大数据集分片到不同实例上,形成可弹性横向扩展的集群。
可以在类定义中将持久化类声明为需要数据分片保存的类。同时,可以在数据分片集群上的任何节点上执行对象方法,获得全数据分片集群上其它节点保存的对象数据,并更改它们。
列存储
InterSystems IRIS同时支持基于行存储和列存储的储存模型。列存储对于超大数据上的分析类查询能显著降低I/O、利用现代CPU/GPU的SIMD(Single Instruction Multiple Data)芯片级优化极大提升性能。
对象模型可以直接声明成列存储模型:
Class Sample.TransactionHistory Extends %Persistent [ DdlAllowed, Final ]
{
Parameter STORAGEDEFAULT = "columnar";
Parameter USEEXTENTSET = 1;
Property AccountNumber As %Integer;
Property TransactionDate As %Date;
Property Description As %String(MAXLEN = 10);
Property Amount As %Numeric(SCALE = 2);
Property Type As %String(VALUELIST = "-Deposit-Withdrawal-Transfer");
Index BitmapExtent [ Extent, Type = bitmap ];
}
或仅对对象模型中的特定字段使用列存储的混合模型:
Class Sample.BankTransaction Extends %Persistent [ DdlAllowed ]
{
Parameter STORAGEDEFAULT = "row";
Parameter USEEXTENTSET = 1;
Property AccountNumber As %Integer;
Property TransactionDate As %Date;
Property Description As %String(MAXLEN = 100);
Property Amount As %Numeric(SCALE = 2, STORAGEDEFAULT = "columnar");
Property Type As %String(VALUELIST = "-Deposit-Withdrawal-Transfer");
Index BitmapExtent [ Extent, Type = bitmap ];
}
无论使用行存储、列存储、混合存储, OOP代码和SQL代码都无需任何修改。
多开发语言支持
InterSystems IRIS作为一个多模型数据库,可以向外提供关系型的访问方式;外部开发语言像连接关系型数据库一样,使用XDBC、ADO.NET连接InterSystems IRIS,并使用SQL操作数据。或者使用Entity Framework将.NET对象映射到IRIS的SQL表。
对于面向对象开发而言,InterSystems提供更多的开发语言选择。
内部语言
在使用OOP开发InterSystems IRIS上的类时,使用ObjectScript建立对象模型和方法,也可以使用嵌入式Python开发类方法、或调用外部的Python库。
例如,我们可以直接用嵌入式Python,编写python方法,调用外部的Python库:
/// 使用Python的xmltodict库,将XML转换为JSON
ClassMethod XML2JSON(pXML As %String) [ Language = python ]
{
import xmltodict, json
obj = xmltodict.parse(pXML)
return(json.dumps(obj,ensure_ascii=False))
}
外部语言
Java、.NET和 Python都是流行的OOP语言。InterSystems IRIS可以直接将Java和.NET对象保存到数据库而无需做对象/关系映射,同时InterSystems IRIS的外部服务器(InterSystems External Servers)特性使InterSystems IRIS和这些OOP语言可以双向使用对方定义的对象。它包括以下特性:
即时访问
该特性使Java、.NET 和 Python 对象成为 InterSystems IRIS可以直接操作的对象。当你发出命令时,外部服务器会自动启动,提供对外部语言平台的即时访问,而不需要任何预先设置。
共享的会话
共享会话让 ObjectScript 和外部应用程序在相同的环境和事务中工作,共享相同的双向连接。
远程对象控制
通过代理对象,允许共享会话的任何一方实时控制另一方的目标对象。InterSystems IRIS可以创建和控制 Java、.NET 和 Python 对象,这些语言也可以创建和控制 InterSystems IRIS的对象。
完全可重入的双向连接
传统的单向客户端/服务器关系不再是一个障碍。通过双向重入,任何一方的新对象或方法调用都可以随时进入现有的共享会话。这使得共享会话中任何一方的应用程序都可以同时充当服务器和客户端,发起客户端的查询并为另一方的请求提供服务。
可重入的Native SDK方法
Native SDK方法也是完全可重入的,可以包含在共享会话中,使外部应用程序可以直接访问大量的InterSystems IRIS资源。
例如,在InterSystems IRIS中创建Java类的 java.util.Date的代理类实例,并执行其方法显示当前日期:
write $system.external.getJavaGateway().new("java.util.Date").toString()
除了对象型、关系型,InterSystems IRIS还支持多维(或键值对)和文档建模和数据操作方式。它的多模型特性可以帮助开发者用最合适的模型处理数据、获得最佳的开发效率和运行效率。
公告
Michael Lei · 三月 8, 2023
你好社区,
在上次激烈的编程比赛之后,我们很高兴宣布下一场 InterSystems 技术文章写作比赛!
✍️技术文章竞赛:InterSystems IRIS 教程✍️
写一篇可以被视为 InterSystems IRIS 教程的文章 任何级别的程序员:3月1日至3月31日初级/中级/高级。
🎁 人人有奖:参加比赛的每位作者都可获得一份特别奖品包!
🏆 主要奖品:共有6个奖品可供选择。
奖品
1. InterSystems技术论文大赛人人有奖!任何在比赛期间写文章的会员都将获得特别奖品:
🎁 品牌有机帆布手提袋
🎁 Moleskine 内衬笔记本
2. 专家奖——文章将由 InterSystems 专家评判:
🥇 第一名:Mars Pro 蓝牙音箱 / AirPods Max
🥈 第二名:带无线充电盒的 Apple AirPods Pro /
JBL Pulse 4 灯光秀音箱
🥉 第三名:适用于 iPad 的妙控键盘保护套 / Bose Soundlink 微型蓝牙音箱
或者作为替代方案,任何获胜者都可以从比他自己的奖品级别低的奖品中选择一个奖品。
3.开发者社区奖——点赞数最多的文章。获胜者将可以选择以下奖品之一:
🎁 iPad 妙控键盘保护套
🎁 Bose Soundlink 微型蓝牙扬声器
笔记:
作者每个类别只能获得一次(作者总共将获得 2 个奖项:一个专家奖,一个社区奖)
如果出现平局,则专家对平局文章的投票数将被视为打破平局的标准。
谁可以参加?
任何开发人员社区成员,InterSystems 员工除外。 创建一个帐户!
比赛期间
📝 3月1日-3月31日:文章发表及投票时间。
在此期间发表一篇文章。 DC 成员可以通过 Likes 为已发表的文章投票——在社区奖中投票。
注意:您越早发表文章,您收集专家和社区投票的时间就越多。
有什么要求?
❗️凡是在比赛期间所写的文章,满足以下要求,将自动进入比赛:
文章必须是有关 InterSystems IRIS 主题的教程*。它可以适用于初学者、中级或高级开发人员。
文章必须是英文的。
文章必须是 100% 新的(它可以是现有文章的延续)。
该文章不能是已在其他社区发表的文章的翻译。
文章必须包含Tutorial 标签。
文章大小:最少 400 字(链接和代码不计入字数限制)。
同一作者最多允许 3 个条目。
允许发表关于同一主题但具有来自不同作者的不同示例的文章。
* 教程提供开发人员可以遵循以完成特定任务或一组任务的分步说明。
🎯 额外奖励
这次我们决定增加额外的奖金来帮助您赢得奖品!请欢迎:
奖金
标称
细节
话题奖
5个
如果您的文章与建议主题列表(如下所列)中的主题相关,您将获得 5 票专家票的奖励(相对于专家选择的第一名 = 3 票) 。
视频奖
3个
文章内容的呈现形式:除了发布文章外,还制作一个解释性视频。
讨论奖
1个
包含最有用讨论的文章,由 InterSystems 专家决定。只有 1 篇文章将获得此奖金。
翻译奖金
1个
在任何区域社区上发布您文章的翻译。 了解更多。
注意:每篇文章只能投一票。
新会员奖励
3个
如果您没有参加过之前的比赛,您的文章将获得 3 票专家票。
拟议主题
以下是建议的主题列表,这些主题将为您的文章提供额外的奖励:
✔️ 从 C# 使用 IRIS✔️ 从 Java 使用 IRIS✔️ 从 Python 使用 IRIS✔️ 使用嵌入式 Python✔️ 使用 Python API✔️ 使用嵌入式 SQL✔️ 使用 ODBC/JDBC✔️ 使用 %Query/%SQLQuery✔️ 使用索引✔️ 使用触发器✔️ 使用 JSON✔️ 使用 XML✔️ 使用休息✔️ 使用容器✔️ 使用 kubernetes
注意:允许来自不同作者的同一主题的文章。
➡️ 加入InterSystems Discord讨论规则、话题和奖金。
所以,
是时候展示你的写作技巧了!祝你好运✨
重要提示:奖品的交付因国家/地区而异,其中一些可能无法交付。可以从@Liubka.Zelenskaia 索取有限制的国家/地区列表
欢迎关注中文社区成员 @ 王喆 的作品:Develop IRIS using SSH (https://community.intersystems.com/node/537756)
文章
Michael Lei · 二月 19, 2024
世界各地的医院和医疗系统、支付方、技术提供商和研究人员都使用InterSystems解决方案来打破互操作性障碍,简化FHIR应用程序的开发和交付工作。
SMART on FHIR 应用
纽约州健康信息网络Hixny使用InterSystems HealthShare Unified Care Record®,为美国最大的公共卫生信息交换机构Healthix开发了一个SMART on FHIR应用程序。每当临床医生查看患者记录时,该创新应用程序都会并排显示患者的社交和病史。该解决方案允许临床医生评估健康的社会决定因素,并直接从其现有的应用程序和工作流程中进行社会服务转介,从而简化互动并提高提供者的效率。HealthShare Unified Care Record 使 Hixny 能够轻松地以单一、一致的格式维护所有数据,无论其来源如何。
数据转换
英国林肯郡NHS使用InterSystems HealthShare和InterSystems HealthShare护理社区来支持一个综合护理门户,并为当地护理团队和患者提供个性化的护理计划。InterSystems解决方案使医生、护士、健康从业者、护理提供者和护理经理能够在任何环境中有效地共享信息并协调护理。Care Community 通过提供对准确治疗计划和患者偏好的全面和即时访问,帮助护理提供者节省时间和精力,并改善护理质量和患者体验。临床医生使用护理门户在就诊前查看患者记录和护理计划,从而提高准备情况并简化咨询和基于社区的就诊。这种方法有助于NHS改善人口健康,并通过将护理从医院转移到更接近林肯郡公民的地方来降低护理成本。
Leumit Health Services是以色列四大健康维护组织之一,作为患者信息亭项目的一部分,它使用InterSystems IRIS for Health在支付机构和医疗服务系统之间交换数据。该集成解决方案通过在登记时以电子方式验证患者的保险资格来改善患者体验,从而取代了耗时的手动流程。Leumit将InterSystems FHIR服务器作为FHIR的Facade,以简化和加快集成工作。(FHIR Facade相当于中间件,它通过将旧数据转换为 FHIR 格式,将现代 FHIR 应用程序与旧医疗保健系统互通。使用Facade方法时,历史数据仍保留在其原始源中以原始格式保存。InterSystems FHIR服务器自动将数据实时转换并转换为FHIR格式,以响应查询,而无需额外的数据存储。
中东的一家私立医院集团使用InterSystems HealthShare Health Connect为远程患者监测应用提供动力。InterSystems解决方案打破了互操作性障碍,将FHIR格式的数据转换为XML,将家庭患者监护系统与医院集团的EHR系统和其他临床应用程序无缝连接。远程监控计划通过改善家庭护理和减少再入院率,帮助医院集团控制护理成本并改善临床结果和患者满意度。
查询 FHIR 数据
Pria是一家创新的医疗技术公司,使用InterSystems HealthShare Health Connect作为其老年人居家健康解决方案的基础。Pria Wellhub是一个语音激活的交互式家庭健康平台,包括健康管理和监测工具,并提供实时警报和通信功能。Pria 使用 HealthShare Connect 将 Wellhub 平台连接到不同的电子病历系统和医疗保健应用程序。InterSystems解决方案使Pria能够轻松地将FHIR格式的家庭中心数据传播给临床医生和个人护理人员。
基于FHIR的数据分析
一家领先的医疗设备制造商使用InterSystems IRIS for Health来快速、大规模地收集和分析设备数据。InterSystems解决方案将设备性能数据、患者报告结果测量(PROM)数据和其他数据转换为通用的FHIR格式,以便进行直接分析。该解决方案消除了对单独分析存储库的需求,从而降低了成本和系统复杂性。InterSystems IRIS for Health SQL Builder使制造商的数据科学家能够使用熟悉的SQL分析工具有效地查询和分析数据。该解决方案使制造商能够向监管机构提供设备合规性的证据。它还提高了对人口健康数据的可见性,并提供可操作的见解,以帮助个体患者更好地管理疾病和检测早期预警信号。
以色列卫生部使用InterSystems IRIS for Health来有效地存储和分析来自分散在全国各地的不同医院EHR系统的人口健康数据。InterSystems IRIS for Health SQL Builder使检查大型FHIR格式的数据集变得容易,帮助卫生部简化流行病学调查,加速发现,并遏制传染病的传播。此外,它还以 FHIR 格式收集信息,例如遗传疾病、死亡和其他人口统计数据。
eHealth Exchange 是一个连接美国联邦机构和非联邦医疗保健组织的网络网络,因此可以在全国范围内交换医疗数据。eHealth Exchange活跃于所有50个州,建立在InterSystems HealthShare之上,是该国最大的基于查询的健康信息网络。美国食品和药物管理局的生物制品有效性和安全性 (BEST) 计划使用 eHealth Exchange 从 EHR 系统中检索人口健康数据。更具体地说,BEST 使用 FHIR 来查询 EHR 系统,以获取有关对生物制品有不良反应的个人的数据。该解决方案简化了监测和流行病学研究,帮助 FDA 确保国家疫苗、血液制品和先进疗法的安全性和有效性。
结论
FHIR 可以帮助您打破互操作性障碍,并将原始健康和护理数据转换为有意义且可操作的信息。它可以帮助您更快、更轻松地访问来自不同来源的数据,从而提高几乎任何医疗保健服务、流程或产品的质量、效率和安全性。
InterSystems拥有产品、专业知识和合作伙伴,可以帮助您自信地开发、交付和扩展FHIR应用。欢迎随时联系我们InterSystems了解如何帮助您的组织快速引入FHIR并取得成果。
公告
Claire Zheng · 二月 6, 2023
Hey 开发者们,
投票周开始了!
在我们的 InterSystems 开发者竞赛:Tool(工具)中,来为你最欣赏的应用投上一票吧!
🔥 投票选出最佳应用程序 🔥
如何投票?详情如下。
Experts nomination(专家提名)
InterSystems经验丰富的专家评审团将选出最好的应用程序,在Experts nomination(专家提名)中提名奖项。 有请InterSystems专家:
⭐️ @akoblov,支持专家⭐️ @Guillaume.Rongier7183,销售工程师⭐️ @Eduard.Lebedyuk,高级云工程师⭐️ @Steve.Pisani,高级解决方案架构师⭐️ @Timothy.Leavitt,开发经理⭐️ @Evgeny.Shvarov,开发者生态系统经理⭐️ @Dean.Andrews2971,开发者关系主管
Community nomination(社区提名)
每一个用户来说,你投出的每一票的分数,是根据下面两类中最高的分数来计:
条件
奖项排名
第一名
第二名
第三名
您在社区发布了一篇文章并将应用程序上传到 Open Exchange (OEX)
9
6
3
您在社区发布了至少 1 篇文章或将 1 个应用程序上传到 OEX
6
4
2
您对 DC 做出任何有效贡献(发表评论/问题等)
3
2
1
等级
奖项排名
第一名
第二名
第三名
Global Masters 的 VIP 级别 或 InterSystems 产品经理
15
10
5
Global Masters 的 Ambassador级别
12
8
4
Global Masters的Expert 级别或开发者社区版主
9
6
3
Global Masters的Specialist级别
6
4
2
Global Masters的Advocate级别,或 InterSystems员工
3
2
1
Blind vote!
每个应用获得的投票数将对所有人不可见。我们会每天在这个帖子(英文原帖)的评论区发布一次排行榜。
在竞赛页面,提交时间越早,在列表中的排名就靠前。
P.S. 不要忘记订阅本文(请订阅英文原帖),点击铃铛图标,即可收到最新“排行榜”评论。
在参与投票前,您需要:
登录 Open Exchange – 使用开发者社区账号即可。
在社区内进行有效贡献 ——回答问题、发帖、在Open Exchange发布新应用等等都可以,然后你的账号才可以参与投票。点击查看本帖 ,了解如何更好地成为有效的社区贡献者!
投票期间,如果你改了主意,可以随时将票改投给其他项目。
来支持你喜欢的项目吧!
注意:在投票期间,参赛者可以继续修复bug,提升应用,所以投票者不要错过最新发布的版本哦~ 截至2月7日的投票结果分享-
Since the beginning of the voting we have the results:
Expert Nomination, Top 5
OpenAPI-Suite by @Lorenzo Scalese
irissqlcli by @Dmitry Maslennikov
iris-tripleslash by @Henry Pereira
Intersystems IRIS platform queue trend monitoring component by @Yubo Mao
message_key_query by @王喆
➡️ Voting is here.
Community Nomination, Top 5
Intersystems IRIS platform queue trend monitoring component by @Yubo Mao
iris-tripleslash by @Henry Pereira
message_key_query by @王喆
DX Jetpack for VS Code by @John Murray
OpenAPI-Suite by @Lorenzo Scalese
➡️ Voting is here.
So, the voting continues.
Please support the application you like! Please check out today's voting results:
Expert Nomination, Top 5
irissqlcli by @Dmitry Maslennikov
OpenAPI-Suite by @Lorenzo Scalese
iris-geo-map by @Muhammad Waseem
iris-tripleslash by @Henry Pereira
iris-log-viewer by @Oliver Wilms
➡️ Voting is here.
Community Nomination, Top 5
iris-tripleslash by @Henry Pereira
Intersystems IRIS platform queue trend monitoring component by @Yubo Mao
irissqlcli by @Dmitry Maslennikov
OpenAPI-Suite by @Lorenzo Scalese
message_key_query by @王喆
➡️ Voting is here.
文章
Michael Lei · 七月 7, 2024
InterSystems 常见问题系列FAQ
InterSystems 产品里数据 (表、对象、实例数据) 是存在global 变量里的。每个global 的数据大小可以从管理门户中中点击属性查看Management Portal > System > Configuration > Local Database > Globals page, 然后在global 属性页点击计算大小Calculate Size 按钮。你可以在终端上调用^%GSIZE 来在命名空间里显示数据大小,方法如下.
USER>do ^%GSIZE Directory name: c:\intersystems\ensemble\mgr\user\ =>All Globals? No => Yes^DeepSee.ActiveTasks contains no dataInclude it anyway? No => YInclude any other similar globals without asking again? Yes =>^DeepSee.ActiveTasks contains no dataInclude it anyway? No => YesInclude any other similar globals without asking again? Yes => Yes^DeepSee.FeatureStats contains no data -- included^DeepSee.Session contains no data -- included^oddBIND contains no data -- included^oddMETA contains no data -- included^oddStudioDocument contains no data -- included^oddStudioMenu contains no data -- included^rINCSAVE contains no data -- included91 items selected from91 available globalsShow details?? No => YesDevice:Right margin: 80 =>directory: c:\intersystems\ensemble\mgr\user\ Page: 1 GLOBAL SIZE 26 Jun 2017 6:56 PM Global Blocks Bytes Used Packing Contig. -------- -------- --------------- ------- ------- CacheMsg 1 3,812 47 % 0 DeepSee.ActiveTasks 1 24 0 % 0 DeepSee.AgentLog 1 6,008 74 % 0 DeepSee.Agents 1 688 8 % 0 DeepSee.BucketList 1 76 1 % 0 DeepSee.Cache.Axis 25 142,616 70 % 14 DeepSee.Cache.Listing 15 87,728 72 % 11 DeepSee.Cache.Results 31 183,200 72 % 17 DeepSee.Cubes 3 17,936 73 % 0 to continue or '^' to STOP:
文章
Claire Zheng · 五月 11, 2023
2023年4月14日-16日,2023 CHITEC在合肥圆满举办!此次盛会期间,创新的数据技术提供商InterSystems通过展位展示、主题研讨会、分论坛演讲等方式,全方位多角度展示了“加速评测,助力公立医院高效建设互联互通平台和数据中心”的能力,吸引了众多参会嘉宾。
问题
xiao wang · 十二月 4, 2024
使用dbeaver 连接数据库, 弹出[InterSystems IRIS JDBC] Communication link failure: License Violation错误. 可能的原因包括:
1. 用户名密码错误
2. 授权失效、过期或已被占满
公告
Claire Zheng · 一月 20, 2021
去年,AWS推出了基于ARM架构的AWS Graviton处理器第一代Amazon EC2 A1实例。在2019年AWS re:Invent 大会上,亚马逊宣布了第二代AWS Graviton2处理器和相关的Amazon EC2 M6g实例。相比前一代基于Intel Xeon的M5实例,Amazon EC2 M6g实例的性价比提升幅度高达40%。基于AWS Gravity 2的M6g实例现已推出预览版,InterSystems借此机会利用InterSystems IRIS数据平台对其性能进行了评估。InterSystems很高兴地宣布,我们取得了令人印象深刻的结果,并在2020年实现支持基于ARM架构的AWS Graviton2处理器的Amazon EC2实例!
我们测试了两种不同的工作负载,它们代表着InterSystems IRIS客户群体的常见用例。第一个工作负载是基于InterSystems IRIS数据平台的金融应用程序的纯数据接收。第二个是基于InterSystems IRIS医疗版的医疗互操作性工作负载。我们对比了Amazon EC2 M6g和M5在每种工作负载下的性能表现。
工作负载#1:InterSystems IRIS数据平台上的数据接收吞吐量
我们测试了相同的工作负载,以便在InterSystems IRIS上模拟纽约证交所在两节点分片集群上运行的数据处理(下单/成交)。该基准测试比较了m5.2xlarge和基于AWS Graviton2的m6g.2xlarge Amazon EC2实例之间的性能表现。每个实例均具有8个vCPU和32GB RAM,唯一的配置差异是处理器和AMI操作系统镜像。所对比的系统配置具有相同的EBS卷、iops、VPC配置和IRIS参数(例如全局缓冲区),且均使用了InterSystems IRIS的预发布版本IRIS-2020.1.0L.188.0-lnxrharm64和IRIS-2020.1.0L.188.0-lnxrh64。
结果显示,m5.2xlarge系统平均每秒处理9.8万条记录,而m6g.2xlarge每秒处理大约12万条记录。在相同数量的vCPU上,后者的性能提高了20%以上!
工作负载#2:InterSystems IRIS 医疗版上的医疗互操作性吞吐量
我们测试了相同的工作负载,以便在InterSystems IRIS医疗版互操作性技术框架上模拟HL7消息接收、路由和转换。该基准测试对m5.2xlarge和m6g.2xlarge(均具有8个vCPU和32GB RAM)进行了比较。除处理器以外,二者其余配置完全相同,且均在InterSystems IRIS(2020.1)的预发布版本上进行测试。我们同样针对基于第一代AWS Graviton处理器的A1实例进行了测试,以展示AWS Graviton2在性能上的飞跃。结果如下:
左侧轴是衡量此工作负载性能的主要指标,即应用程序每秒处理的消息数。x轴表示基准驱动向应用程序传输的不断增加的消息。从左向右,应用的工作负载不断增加,首先将入站接口的数量增加到16个,然后在保持稳定的情况下增加每秒消息数量。上图中的列则表示在右侧轴上测得的CPU利用率,当CPU利用率接近100%时,可以看到每种实例的最大容量。
正如大家所看到的,基于AWS Graviton2的M6g实例是线性扩展,并且在高工作负载下明显优于M5实例。在相同的工作负载下,M6g实例保持较低的CPU利用率,并在M5实例达到CPU最大利用率后仍可以继续扩展。与相同大小的M5实例相比,M6g实例的消息吞吐量最终提高了约28%。AWS Graviton2处理器以显著优势胜出!
性价比
通过比较基于AWS Graviton2的M6g和相同大小的M5实例,可以发现前者除了明显的性能提升外,还具有价格优势——与当前的Amazon EC2 M5实例相比,Amazon EC2 M6g实例的成本降低了20%:
m5.2xlarge按需:每小时0.384美元
m6g.2xlarge按需:每小时0.308美元
结论
InterSystems致力于为客户提供选择平台的自由。我们很高兴地看到,AWS Graviton2处理器将为InterSystems IRIS客户带来显著的性能提升,并为客户降低成本。我们相信这些综合优势将推动ARM平台在IRIS客户中的广泛应用,我们很高兴可以为此提供支持!
更多资源
https://aws.amazon.com/ec2/graviton/
https://aws.amazon.com/ec2/instance-types/m6/
https://www.intersystems.com/products/intersystems-iris/
注:本文为译文,欢迎点击查看原文,原文由Steven LeBlanc撰写 @LU.WANG @na.liu 这个版本的IRIS 我们能发货吗?
文章
Claire Zheng · 九月 12, 2021
2021年9月13日,中国 北京—— 致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商InterSystems今日宣布在中国推出InterSystems IRIS医疗版互联互通套件,以满足医院信息化建设的标准化要求,促进业务协同,助力公立医院高效建设互联互通平台。
中国医院信息互联互通标准化成熟度测评工作自2012年启动以来,已成为医院信息化建设的重要抓手。2020年发布的最新版测评方案(《国家医疗健康信息医院信息互联互通标准化成熟度测评方案(2020年版)》)结合医疗健康信息化建设新需求、新技术应用情况,强化了分级管理机构职责,修订了测评流程,补充完善了测评指标,提升了测评方案的科学性和指导性。
凭借多年来深耕医疗信息化建设领域的丰富经验和强大的医疗数据平台,InterSystems结合新版测评标准,及时推出InterSystems IRIS医疗版互联互通套件,从安全管理、监控、数据管理、互联互通文档、互联互通服务、集成与交换六大方面入手,在满足测评标准化组件的基础上,提供最新版医院互联互通标准化成熟度测评规定的文档、监控、服务、Schema等组件,充分满足医院快速落地互联互通标准化成熟度测评涉及到的标准化改造需求。通过内置的模块化服务,InterSystems IRIS医疗版互联互通套件将有效缩短实施周期,加快互联互通平台建设。
InterSystems IRIS医疗版互联互通套件兼备高性能与稳定性,连续多年支持数百家大型公立医院海量数据稳定运行。
主流 PC 服务器单实例下,支持日消息吞吐量可高达27.64亿。截至2021年,InterSystems技术已助力一百余家医院通过四级及以上医院信息互联互通标准化成熟度评级。目前获评医院互联互通成熟度五级乙等评级的32家医院中,有10家均采用了InterSystems的技术和产品,某大型三甲医院日均处理数据在千万量级。
InterSystems IRIS医疗版互联互通套件包含先进的互操作技术,同时具备强大的创新功能,包括数据库管理、敏捷开发、 API 管理、FHIR资源仓库、分布式扩展、一体化机器学习、自适应分析等,全面支持医院持续开展数字化创新与应用。
InterSystems亚太区总经理卢侠亮表示:“作为一家服务中国医疗信息化市场超过20年的创新数据提供商,InterSystems致力于为中国用户提供卓越服务,此次发布的InterSystems IRIS医疗版互联互通套件专为中国用户打造,将更高效地为医疗机构标准化互联互通和信息共享提供技术保障。接下来,我们会一如既往地与本土合作伙伴和医疗机构紧密合作,将全球领先的医疗信息平台解决方案与中国市场需求相结合,为更多的医院数字化转型提供强大支持。”
InterSystems将于2021年9月17日举办“InterSystems IRIS医疗版互联互通套件”线上发布会,会议详情如下,欢迎点击“此处”或扫描下方二维码报名。
目前已经可以回放,节前错过的小伙伴可以继续注册观看啦