搜索​​​​

清除过滤器
公告
Claire Zheng · 十一月 23, 2023

腾讯会议邀请:欢迎参加今晚19:00获奖作品线上分享会

🏆InterSystems开发者社区中文版第二届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)获奖名单已公布! 11月24日19:00-20:00,InterSystems开发者社区将举办“InterSystems第二届技术征文大赛线上分享会”,邀请参赛作者进行作品分享&点评、探讨热门话题,同期还将送出多份幸运奖品,欢迎参会! 特别提醒:今晚拼手速,赢取幸运奖品,请提前准备好自己的社区主页链接,以便快速填写(点击头像右上角进入个人主页,复制浏览器链接即可,如:https://cn.community.intersystems.com/user/claire-zheng) 会议主题:InterSystems开发者社区第二届技术征文大赛线上分享会会议时间:2023/11/24 19:00-20:00 (GMT+08:00) 中国标准时间 - 北京 点击链接入会,或添加至会议列表:https://meeting.tencent.com/dm/a7BNMvn2Sqx4 #腾讯会议:306-552-860 复制该信息,打开手机腾讯会议即可参与
文章
Michael Lei · 四月 10, 2022

如何使用SYS.Database类的FreeSpace查询来检查数据库所在磁盘上的可用空间

系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。 下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。 zn "%SYS" set stmt=##class(%SQL.Statement).%New() set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace") set rset=stmt.%Execute() // 一次性显示所有 do rset.%Display() 输出结果示例如下。 *在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。 Dumping result #1 DatabaseName Directory MaxSize Size ExpansionSize AvailableFreeDiskFreeSpace Status SizeInt AvailableNum DiskFreeSpaceNum ReadOnly IRISSYS c:\intersystems\irishealth3\mgr\ 無制限 159MB 系统默认 ト 18MB 11.32 245.81GB マウント/RW 159 18 2517050 ENSLIB c:\intersystems\irishealth3\mgr\enslib\ 無制限 226MB システムデフォル ト 19MB 8.4 245.81GB マウント/R 226 19 2517051    <一部省略> IRISTEMP c:\intersystems\irishealth3\mgr\iristemp\ 無制限 51MBシス テムデフォルト 49MB 96.07 245.81GB マウント/RW 51 49251705 0 USER c:\intersystems\irishealth3\mgr\user\ 無制限 31MB システムデフォル ト 8.5MB 27.41 245.81GB マウント/RW 31 8.5 2517050 如果你想指定你要参考的数据库目录,请执行以下操作。 // 使用$LISTBUILD()函数准备好要引用的数据库目录的完整路径。 set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user") set rset=stmt.%Execute(dbdir) do rset.%Display() 如果你只想获得指定数据库目录的数据库名称(DatabaseName)、当前大小(Size)MB、可用自由空间(Available)MB、自由大小(Free)%、自由磁盘空间大小(DiskFreeSpace)GB,你可以执行以下流程(在VSCode或Studio中连接到%SYS命名空间时创建例程/类并编写代码)。 Class ZMyClass.Utils { ClassMethod GetDiskFreeSpace() { set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user") set stmt=##class(%SQL.Statement).%New() set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace") set rset=stmt.%Execute(dbdir) while(rset.%Next()) { write rset.%Get("DatabaseName")," - ", rset.%Get("Size")," - ",rset.%Get("Available")," - ", rset.%Get("Free"),"% - ",rset.%Get("DiskFreeSpace"),! } } } 注意:如果你把用户定义的例程或类放在%SYS名称空间中,创建它们的名称以Z开头,这样用户定义的源代码就会在升级安装后保留下来。 下面是一个运行的例子。 USER>zn "%SYS" %SYS>do ##class(ZMyClass.Utils).GetDiskFreeSpace() IRISSYS - 159MB - 18MB - 11.32% - 245.81GB USER - 31MB - 8.5MB - 27.41% - 245.81GB %SYS>
公告
Claire Zheng · 四月 10, 2023

相约 2023 CHITEC | InterSystems诚邀您莅临展位,探讨医院互联互通平台高效建设之举

2023年4月14日-16日,2023 CHITEC将在安徽省合肥市合肥滨湖国际会展中心(安徽省合肥市锦绣大道3899号)盛大召开。点击查看CHITEC 2023完整日程。InterSystems将亮相CHITEC,通过展位展示、主题研讨会、分论坛演讲等方式,全方位多角度展示InterSystems“加速评测,助力公立医院高效建设互联互通平台和数据中心”的能力。 1. 欢迎莅临InterSystems展位T28 在展会现场,我们将向您展示InterSystems IRIS医疗版互联互通平台、一体化数据平台、基于FHIR的数据利用和统一语义的数据中心。如果您希望进一步了解详细内容情况,希望得到详细的方案讲解或Demo演示服务,欢迎您通过以下方式进行登记预约。 莅临展位,由展位工作人员为您现场预约; 点击链接,提前预约展位Demo演示。 2. 欢迎报名参加主题研讨会“加速测评,赋能医院高质量发展” 时间:2023年4月14日(周五)13:30-17:00地点:合肥滨湖国际会展中心·综合馆(2号馆)·201会议室 在这次研讨会上,我们将为您带来InterSystems IRIS医疗版互联互通套件的详细解读与分享。您将了解到: 加速测评的五大利器; 统一语义的数据中心建设; 数据利用与应用创新; 现场演示。 点击链接,报名参会。 3. 欢迎关注分论坛主题演讲 在“分论坛:医院集成平台与电子病历建设应用”中,InterSystems中国技术总监乔鹏将与多位行业专家同台献策,分享主题演讲“InterSystems IRIS医疗版互联互通套件,赋能医院高质量发展”,助力医院夯实信息化建设基础,欢迎关注! 时间:2023年4月15日(周六)15:00-15:15 地点:合肥滨湖国际会展中心西区·综合馆(2号馆)·205会议室
文章
Tete Zhang · 二月 20, 2023

OpenAPI-Suite(从 OpenAPI 3.0 生成 ObjectScript 代码的工具集):介绍 InterSystems 开发人员工具大赛 2023 获奖者

开发者您好! 这里向介绍@Lorenzo Scalese的OpenAPI-Suite (一个用于从OpenAPI 3.0生成 ObjectScript 代码的工具集)。这个工具集在 2023 年 InterSystems 开发工具大赛的21 个参赛作品中获得专家提名第三名。 目前 IRIS 最高支持OpenAPI 2.0 ,但是这个工具支持 OpenAPI 3.0 ! 提供的功能如下。 在服务器端创建类(与 OpenAPI 2.0相同,首先创建使用 API First理念创建的 REST 调度类所需的类。) 创建客户端 HTTP 类 创建客户端Production(业务服务、业务流程、业务操作、Ens.Request、Ens.Response) 一个 Web 界面,允许您指定要从此工具生成哪些功能 从 OpenAPI 1.x、2.x 到 3.0 版的转换工具 关于各个功能的详细介绍,请参考@Lorenzo Scales撰写的文章《 OpenAPI Suite - Part 1 》和《 OpenAPI Suite - Part 2 》。 在本文中,我尝试了 1 个功能。其中,以下的应对方案非常好。 根据OpenAPI 3.0新增的Components对象的内容自动生成类的定义(在指定包下创建一个模型包,在那里创建可以实例化的类) 在POST或PUT的情况下,为了较为轻松地使用实施类(impl.cls)处理HTTP请求中传递的信息,我将Body中接收到的JSON数据设为了1中生成的类的实例, 目前,虽然需要进行一些手动更改,但是仅使用按原样创建的实例在 impl.cls 中叫 %Save() 方法也可以保存成功。 ) IRIS 提供了一种根据 OpenAPI 2.0 规范创建 REST 调度类的方法,但实际使用中它只创建要使用的类和根URL。 仅作为参考,这里是使用 IRIS 支持的 OpenAPI 2.0 创建的内容。 (以下示例使用了根据 OpenAPI2.0 规范创建的 JSON 示例。) 在下面的示例中,/crud 是根 URL,类是在 crud 包下创建的。​​​​​​ 生成的类如下(左:impl.cls,右:spec.cls) 由于调度类(disp.cls)是一个不需要改动的类,所以这里展示了studio的这部分代码。 接下来介绍一下@Lorenzo Scalese的OpenAPI-Suite的成果。 使用它的过程非常简单。 从管理门户或Studio导入IPM (InterSystems Package Manager,以前称为 ZPM)客户端工具后,您只需运行以下命令,工具就可以使用了。 客户端工具导入可以导入到任意命名空间中。 从管理门户导入时,使用以下菜单: 管理门户 -> 系统资源管理器 -> 类 -> 选择要导入的命名空间 -> 单击导入按钮 转到您希望 REST 调度类存在的命名空间,并使用 ZPM 命令安装工具。 zpm "install openapi-suite" 安装过程中的画面显示 USER>zpm “安装 openapi-suite” [USER|sslclient] 重新加载开始 (/usr/irissys/mgr/.modules/USER/sslclient/1.0.4/)[用户|sslclient] 重新加载成功[sslclient] 模块对象已刷新。[USER|sslclient] 验证开始[USER|sslclient] 验证成功[USER|sslclient] 编译开始[用户|sslclient] 编译成功[USER|sslclient] 激活开始[USER|sslclient] 配置开始[用户|sslclient] 配置成功[USER|sslclient] 激活成功[USER|yaml-utils] 重新加载开始 (/usr/irissys/mgr/.modules/USER/yaml-utils/0.1.2/)[USER|yaml-utils] 重新加载成功[yaml-utils] 模块对象已刷新。[USER|yaml-utils] 验证开始[USER|yaml-utils] 验证成功[USER|yaml-utils] 编译开始[USER|yaml-utils] 编译成功[USER|yaml-utils] 激活开始[USER|yaml-utils] 配置开始[USER|yaml-utils] 配置成功[USER|yaml-utils] 激活成功[USER|swagger-validator-cli] 重新加载开始 (/usr/irissys/mgr/.modules/USER/swagger-validator-cli/0.0.1/)[USER|swagger-validator-cli] 重新加载成功[swagger-validator-cli] 模块对象已刷新。[USER | swagger-validator-cli] 验证开始[USER|swagger-validator-cli] 验证成功[USER|swagger-validator-cli] 编译开始[USER|swagger-validator-cli] 编译成功[USER|swagger-validator-cli] 激活 START[USER|swagger-validator-cli] 配置开始[USER|swagger-validator-cli] 配置成功[USER|swagger-validator-cli] 激活成功[USER|swagger-converter-cli] 重新加载开始 (/usr/irissys/mgr/.modules/USER/swagger-converter-cli/0.0.2/)[USER|swagger-converter-cli] 重新加载成功[swagger-converter-cli] 模块对象已刷新。[USER | swagger-converter-cli] 验证开始[USER|swagger-converter-cli] 验证成功[USER|swagger-converter-cli] 编译开始[USER|swagger-converter-cli] 编译成功[USER|swagger-converter-cli] 激活开始[USER|swagger-converter-cli] 配置开始[USER|swagger-converter-cli] 配置成功[USER|swagger-converter-cli] 激活成功[USER|objectscript-openapi-definition] 重新加载开始 (/usr/irissys/mgr/.modules/USER/objectscript-openapi-definition/1.3.1/)[USER|objectscript-openapi-definition] 重新加载成功[objectscript-openapi-definition] 模块对象已刷新。[USER|objectscript-openapi-definition] 验证开始[USER|objectscript-openapi-definition] 验证成功[USER|objectscript-openapi-definition] 编译开始[USER|objectscript-openapi-definition] 编译成功[USER|objectscript-openapi-definition] 激活开始[USER|objectscript-openapi-definition] 配置开始[USER|objectscript-openapi-definition] 配置成功[USER|objectscript-openapi-definition] 激活成功[USER|io-redirect] 重新加载开始 (/usr/irissys/mgr/.modules/USER/io-redirect/1.0.2/)[USER|io-redirect] 重新加载成功[io-redirect] 模块对象已刷新。[USER|io-redirect] 验证开始[USER|io-redirect] 验证成功[USER|io-redirect] 编译开始[USER|io-redirect] 编译成功[USER|io-redirect] 激活开始[USER|io-redirect] 配置开始[USER|io-redirect] 配置成功[USER|io-redirect] 激活成功[USER|openapi-common-lib] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-common-lib/1.0.0/)[用户|openapi-common-lib] 重新加载成功[openapi-common-lib] 模块对象已刷新。[USER|openapi-common-lib] 验证开始[USER|openapi-common-lib] 验证成功[USER|openapi-common-lib] 编译开始[USER|openapi-common-lib] 编译成功[USER|openapi-common-lib] 激活开始[USER|openapi-common-lib] 配置开始[USER|openapi-common-lib] 配置成功[USER|openapi-common-lib] 激活成功[USER|openapi-server-gen] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-server-gen/1.0.0/)[USER|openapi-server-gen] 重新加载成功[openapi-server-gen] 模块对象已刷新。[USER|openapi-server-gen] 验证开始[USER|openapi-server-gen] 验证成功[USER|openapi-server-gen] 开始编译[USER|openapi-server-gen] 编译成功[USER|openapi-server-gen] 激活开始[USER|openapi-server-gen] 配置开始[USER|openapi-server-gen] 配置成功[USER|openapi-server-gen] 激活成功[USER|openapi-client-gen] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-client-gen/2.1.0/)[USER|openapi-client-gen] 重新加载成功[openapi-client-gen] 模块对象已刷新。[USER|openapi-client-gen] 验证开始[USER|openapi-client-gen] 验证成功[USER|openapi-client-gen] 编译开始[USER|openapi-client-gen] 编译成功[USER|openapi-client-gen] 激活开始[USER|openapi-client-gen] 配置开始[USER|openapi-client-gen] 配置成功[USER|openapi-client-gen] 激活成功[USER|openapi-suite] 重新加载开始 (/usr/irissys/mgr/.modules/USER/openapi-suite/1.0.0/)[用户|openapi-suite] 重新加载成功[openapi-suite] 模块对象已刷新。[USER | openapi-suite] 验证开始[USER|openapi-suite] 验证成功[USER|openapi-suite] 编译开始[USER|openapi-suite] 编译成功[USER | openapi-suite] 激活开始[USER|openapi-suite] 配置开始[USER|openapi-suite] 配置成功[USER|openapi-suite] 激活成功用户> 安装后,您可以通过以下 URL 访问该工具的相关信息。 http://localhost:端口号/openapisuite/ui/index.csp 示例)http://localhost:52773/openapisuite/ui/index.csp 在初始阶段,屏幕右下方的“Install On Server”按钮无法按下。似乎可以通过将值设置为以下全局变量来按下按钮。 (请在你安装工具的命名空间中用ZPM命令设置) Set ^openapisuite .config( "web" , "enable-install-onserver" ) = 1 准备工作完成后,进行以下设置。 对于“Application package name”,选择类定义的包名称(示例中的 PetStore);对于“What do you want to generate?”问题,选择“REST Server”;对于“NameSpace”,选择要注册 REST 调度类的命名空间;对于“Web 应用程序名称”,指定已定义的根 URL(Web 应用程序路径)(示例中的 /pet1)。 之后,只需指定根据OpenAPI规范创建的JSON文件即可。示例中默认指定https://petstore3.swagger.io/api/v3/openapi.json ,我们可以直接使用这个文件路径。 最后,单击 Install On Server 按钮。 日志如下图所示,确认正常结束后点击关闭按钮。 通过该工具,将创建一个 Web 应用程序路径:/pet1。 从管理门户 -> 系统管理 -> 安全 -> 应用程序 -> Web 应用程序检查 /pet1 是否存在。 定义完成! 现在,让我们检查是否已经创建了记载输入路径对应的方法的disp(调度类)和实施代码的impl类。 类定义已经在 PetStore 包下创建完成! 与IRIS提供的OpenAPI 2.0的类不同的是,这里包含了model包和requests包。 在这个工具中,OpenAPI 3.0的Components对象中指定的信息被创建为可以生成实例的类定义。 (它继承了 %RegisteredObject 类) Components对象Pet的信息可以在下方展开查看。 Components:Pet的规格 "Pet":{ "required":[ "name", "photoUrls" ], "type":"object", "properties":{ "id":{ "type":"integer", "format":"int64", "example":10 }, "name":{ "type":"string", "example":"doggie" }, "category":{ "$ref":"#/components/schemas/Category" }, "photoUrls":{ "type":"array", "xml":{ "wrapped":true }, "items":{ "type":"string", "xml":{ "name":"photoUrl" } } }, "tags":{ "type":"array", "xml":{ "wrapped":true }, "items":{ "$ref":"#/components/schemas/Tag" } }, "status":{ "type":"string", "description":"pet status in the store", "enum":[ "available", "pending", "sold" ] } }, "xml":{ "name":"pet" } }, 根据此信息创建的类如下: 它在可以实例化的类中。 如果将super class从 %RegisteredObject 更改为 %Persistent 并编译,则可以将其用作可以在数据库中持久化储存的类。 此外,POST 请求将发送以下格式的 JSON 对象。 { "id": 0, "category": { "id": 0, "name": "Dog" }, "name": "Hachi", "photoUrls": [ "https://x.gd/1pbYK" ], "tags": [ { "id": 0, "name": "Middle" } ], "status": "available" } 能够将此 JSON 直接作为 Pet、Tag 和 Category 类下的实例会很好,因此又追加继承了 %JSON.Adaptor 。 另外,如果我要修改 Pet、Tag 和 Category,最好将super class的配置从 %RegisteredObject 更改为 %Persistent 和 %JSON.Adaptor 的多重继承。 在此之后,需要将接收到的Body信息更新到数据库中。 Request包下的类描述了这个过程的概要。以下示例显示了在向 /pet 发出 POST 请求时运行的类 (PetStore.requests.addPet.cls) 的内容。 如果你注意LoadFromRequest()方法,你会发现它在把可以处理HTTP请求的%request传递给参数request(在IRIS的REST调度类内部处理时,HTTP请求存储在%CSP.Request的一个实例中)。 request.Content 上面的执行可以得到Body中指定的JSON对象。 Do ..PetNewObject (). %JSONImport (request.Content) 这个类中虽然调用了以上方法,但由于该类中实际上并没有PetNewObject()方法,所以做了如下修改(生成一个Pet实例,将其设置为属性Pet,然后将接收到的JSON分配给实例处理)。 set ..Pet = ##class (PetStore.model.Pet). %New () do ..Pet . %JSONImport (request.Content) 这样就完成了接收到 HTTP 请求时的处理。剩下的就是impl.cls的实现了。 在初始状态下,以下方法没有任何描述。 ClassMethod addPet(messageRequest As PetStore.requests.addPet) As %Status { ; Implement your service here. ; Return {} $$$ThrowStatus ( $$$ERROR ( $$$NotImplemented )) } 参数 messageRequest 指定了 PetStore.requests.addPet 类的一个实例,该实例在之前的流程中得到确认(根据 HTTP 请求中收到的 JSON 对象创建的实例在该实例的 Pet 属性中设置。) 改写如下,编译,大功告成! ClassMethod addPet(messageRequest As PetStore.requests.addPet) As %Status { ;Implement your service here. ; Return {} //$$$ThrowStatus($$$ERROR($$$NotImplemented)) set status= $$$OK set status=messageRequest.Pet. %Save () return status } 让我们来测试 POST 请求。 Pet、Category、和Tag都注册并添加数据成功了! 这个用例还是需要一些手动修改,但当我发现类定义是通过 OpenAPI 3.0 Components 对象自动生成的,让我觉得很便利! 大家也请试用一下。
文章
Claire Zheng · 一月 7, 2021

认识Global Masters 倡导中心,从这里开始!

亲爱的社区用户,您好! 我们诚挚邀请所有社区成员加入InterSystems Global Masters倡导中心,以便了解最新动态,获取对开发者社区)的贡献积分,并获得奖励!请浏览本文并了解如何加入,有哪些福利可以期待! 点击此处:现在加入 ▶️ 什么是 Global Masters? Global Masters 是一个游戏化平台,您可以在其中完成与InterSystems技术相关的挑战(任务),赢取徽章和积分,并用积分兑换各种奖励! 在这里,每周都会发布5-10 个新挑战,公布开发者社区上最有趣的文章、最佳实践、视频、InterSystems 官方新闻、有趣的学习任务。 这是一个获得最新信息的好方法! ▶️ 具体是什么样的? 下面是挑战和奖励的示例: ▶️ 级别、徽章和特权 Global Masters 中有 6 个级别。您的级别越高,可获得的奖品价值和特权就越高。为开发者社区和 Open Exchange 做出贡献,在 Global Masters 保持活跃以达到最高级别!所有级别和徽章的列表将帮助您晋级到更高级别。 ▶️ 如何加入? 从这里开始! 1. 前往globalmasters.intersystems.com,点击“使用 InterSystems 登录名登录”按钮,然后使用您的WRC账号即可加入。 2. 登陆后,找到“自定义你的程序,从这里开始!(Customize your program! START HERE!)”开始挑战。这个初始挑战会解锁每周发布的奖励和新挑战。 不要跳过这个挑战,充分利用这里吧! 点击此处:现在加入 我们在 GM 中心等待所有 InterSystems 开发者的到来! 欢迎您提出任何反馈和想法。请随时与我们联系!InterSystems Global Masters 上见! 😉
文章
Louis Lu · 十一月 2, 2021

IRIS 2021 技术文档 First Look 25 -- 数据库加密

本文档向您介绍 InterSystems IRIS®数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。 本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件,激活该密钥文件,然后用它来加密一个数据库。这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理那些离题的细节(尽管这些细节在执行实现时可能很重要)。有关数据库加密的完整文档,请参见 Encryption Guide(《加密指南》)。 要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。 为什么数据库加密很重要 虽然加密并不能防止对机密或个人信息的所有不当或未经授权的使用或披露,但确保静止数据的加密为信息安全提供了一个重要的防御层。在数据库级别实施加密为您的信息保护控制提供了一个额外的维度。 此外,许多有关敏感信息或个人信息的法律和法规建议或要求处理数据的组织采用加密作为第一道防线。这些包括法律和法规,如: 《健康保险携带和责任法案》(Health Insurance Portability and Accountability Act,HIPAA )——要求安全保护健康(Secure Protected Health)信息是不可读、不可破译和不可恢复的 马萨诸塞州 201 《马萨诸塞州法规法典》(Code of Massachusetts Regulations,CMR) 17.00——要求个人信息在传输和静止时进行加密 纽约州 23 《纽约法典、规则和条例》 (NewYork Codes, Rules and Regulations,NYCRR) 500 部分——处理非公开信息的金融和其他涉及的组织必须利用加密作为保护数据的一种手段。 欧盟《通用数据保护条例》(General Data Protection Regulation,GDPR)——安全保障要求将加密作为一种保护控制考虑在内 意大利《个人数据保护法》(Personal Data Protection Code,PDPC)——《最低数据安全措施技术规范》(Technical Specifications on Minimum Data Security Measures)第 24 条要求对披露健康和性生活的数据进行加密处理 澳大利亚隐私原则(Australian Privacy Principles,APP)原则 4——强有力的加密实现解决了必要的隐私增强技术,以确保个人信息的安全 日本经济产业省(Ministry of Economy, Trade, and Industry,METI)指南——如果未加密的个人或机密信息遭到泄露,必须进行监管调查,因为根据《个人信息保护法》(Act on the Protection of Personal Information,APPI)第 20 条,个人信息的处理者有义务防止信息的泄漏、丢失或损坏 请注意,这些法律要求中有许多集中在数据泄露上,因为这是一种越来越普遍的现象,但目前的框架要求组织有义务通过适当的安全控制来解决风险,如基于角色的访问、密码保护、入侵检测、数据丢失预防和日志/审计 ——以及加密。加密本身并不能满足所有的强制性要求,但提供了一个安全的基础。数据库级别的加密 通过要求攻击者不仅要获得对系统或文件空间的访问权限,而且要有访问数据库的权限,从而加强了保护。这一附加层为组织、其客户和任何利益相关者提供了保证。 InterSystems IRIS 如何使用数据库加密 对于与数据库操作相关的活动,InterSystems IRIS 的加密和解密过程对用户是透明的。从终端用户或应用程序开发人员的角度来看,应用程序只需执行其常规活动(activity),数据就会自动在磁盘上加密。从系统管理员的角度来看,有几个简单的任务可以确保数据加密的发生;在执行这些任务后,加密的过程又是在背后执行的。 更重要的是,这些活动使用最少的处理器时间,所以它们对您的应用程序没有明显的影响。此外,由于我们数据库的构建方式,这些活动被高度优化。 加密和解密在密码块链接(Cipher Block Chaining,CBC)模式中使用美国政府高级加密标准(United States Government Advanced Encryption Standard,AES),通常简称为 AES CBC。InterSystems IRIS 支持 AES CBC 的所有合法密钥大小:128–、192–和 256–位密钥。 InterSystems IRIS 使用最快的可用实现(available implementation)执行加密和解密。只要有可能,加密和解密就会利用基于处理器的指令集及其固有的效率。现代英特尔(Modern Intel)和 IBM POWER8 处理器都有这样的指令。InterSystems IRIS 自动检测并使用这些指令,所以您不需要采取任何行动来实现它。在英特尔(Intel)处理器上,这些是高级加密标准新指令(Advanced Encryption Standard New Instructions,AES-NI);在 IBM 上,它们是 AES VMX 指令集。 您可以将数据库加密密钥存储在支持密钥管理互通协议(key management interoperability protocol,KMIP)的密钥管理服务器上,或者存储在包含数据库密钥加密副本的文件中。每个都有自己的优势: KMIP 是一个 OASIS 标准协议,用于客户端与密钥管理系统通信。KMIP 服务器可以是专门的硬件设备,或是运行密钥管理软件的通用服务器。 当数据库加密密钥存储在文件中时,InterSystems 使用多层 AES 密钥封装算法对密钥进行加密,并使用 PBKDF2 算法派生出单个管理员密钥加密密钥,从而使字典攻击和暴力破解变得不切实际。 必须记住,虽然数据库加密是安全策略的一个组成部分,但它不能单独解决安全漏洞。其他工具,如动态数据保护,也是至关重要的。这就是为什么数据库加密是 InterSystems IRIS 为保护数据而提供的一整套工具的一部分。这些包括: 支持政府标准——您可以将 InterSystems IRIS 配置为使用经过验证符合联邦信息处理标准 140–2(Federal Information Processing Standards 140–2,FIPS 140-2)的库进行数据库加密。这在 Red Hat Linux 上是可用的。 保护选定的数据元素——被称为数据元素加密,该功能提供了一种编程方法,允许您只对记录的选定部分进行加密,如信用卡或身份识别号码。 保护动态数据——InterSystems IRIS 使用最新版本的传输层安全协议(Transport-Layer Security,TLS)保护动态数据。TLS 是保护数据通信的行业标准协议。 支持第三方授权——InterSystems IRIS 支持在第三方网站上使用资源的授权,就像在 web 上经常看到的通过 QQ 或微信登录以使用一个网站。这是通过开放授权框架(Open Authorization Framework)2.0 版(称为 OAuth 2.0)实现的,并可能包括通过另一层,称为 OpenID 连接(OpenID Connect)进行身份验证。 亲自尝试数据库加密 使用 InterSystems IRIS 数据库加密很容易。这个简单的程序将引导您完成设置加密数据库的基本步骤。 用前须知 要使用该程序,您需要一个运行中的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。 创建加密密钥 首先,创建一个密钥文件,其中自动包含一个数据库加密密钥: 使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中URL described for your instance(为您的实例描述的 URL),在浏览器中打开您的实例的管理门户(Management Portal)。 导航到 Create Encryption Key File(创建加密密钥文件)页面(System Administration(系统管理) > Encryption(加密) > Create New Encryption Key File(创建新的加密密钥文件)): 在 Create Encryption Key File(创建加密密钥文件)页面上: 在 Key File(密钥文件)字段中,输入密钥文件的名称和路径。当您点击 Browse(浏览)按钮时,文件选择对话框(File Selection Dialog) 默认在实例的 install-dir/mgr 目录中打开(其中 install-dir 是 InterSystems IRIS 安装目录),例如, C:\InterSystems\IRIS\mgr\testkeys.key;您可以在所有类型的实例上使用此目录,或者在主机或容器文件系统中选择另一个位置。 在 Administrator Name(管理员名称) 、Password(密码)和 Confirm Password(确认密码)字段中,输入值如 testadmin 和 password。这只是一个示例,所以不要重复使用您在开发环境中使用的密码。 选择靠近页面顶部的 Save(保存) 按钮。 您刚刚在 C:\InterSystems\directory 里创建了 testkeys.key 密钥文件,其中有一个密钥,您可以用它来进行数据库加密。InterSystems IRIS 会显示一条带有密钥的信息,如 有关创建密钥文件及其初始密钥的详细信息,请参见 Create a Key File(《创建密钥文件》)。 激活加密密钥 接下来,激活您刚刚创建的密钥: 在管理门户(Management Portal)中,进入 Database Encryption(数据库加密)页面(System Administration(系统管理) > Encryption(加密) > Database Encryption(数据库加密))。 在数据库加密(Database Encryption)页面,选择 Activate Key(激活密钥) 按钮: 在 Key File(密钥文件) 字段中,输入您创建的密钥文件的位置,如 C:\InterSystems\IRIS\mgr\testkeys.key。 在 Administration Name(管理员名称) 和 Password(密码) 字段中,输入您指定的值(testadmin和 password)。 选择 Activate(激活) 按钮。 您可以在这个页面上看到密钥 ID: 有关激活密钥的详细信息,请参见 Activate a Database Encryption Key from a Key File(《从密钥文件中激活数据库加密密钥》)。 创建加密数据库 现在,您可以创建一个加密数据库: 再次在管理门户(Management Portal)中,进入 Namespaces(命名空间) 页面(System Administration(系统管理) > Configuration(配置) > System Configuration(系统配置) > Namespaces(命名空间))。 在 Namespaces(命名空间)页面上,选择 Create New Namespace(创建新的命名空间)。这将显示 New Namespace (新的命名空间) 页面: 在 New Namespace (新的命名空间)页面,输入您要创建的加密数据库的名称,如 ENCDB。 在 Select an existing database for Globals(为 Globals 选择现有的数据库)下拉菜单旁边,选择 Create New Database(创建新的数据库)按钮。这将显示 Database Wizard(数据库向导): 在 Database Wizard(数据库向导)的第一页,在 Enter the name of your database(输入您的数据库名称) 字段中,输入您要创建的数据库的名称,如 ENCDB。输入一个数据库的目录,如 C:\InterSystems\IRISmgr\ENCDB。在该页面上,选择 Next(下一步)。 在下一页,将 Encrypt database(加密数据库)的值从 No 更改为 Yes。在该页面上,选择 Finish(完成)。 回到 New Namespace(新的命名空间)页面,在 Select an existing database for Routines(为例程选择现有的数据库)下拉菜单中,选择您刚刚创建的数据库,如 ENCDB。 选择靠近页面顶部的 Save(保存)按钮,然后在生成的日志的末尾选择 Close(关闭)。 现在您已经创建了一个名为 ENCDB 的加密数据库,它使用 InterSystems IRIS 在您创建密钥文件时创建的密钥。您可以像使用未加密的数据库一样使用这个数据库。由于 InterSystems IRIS 隐藏了所有的加密和解密机制,您可以用通常的方式执行所有的操作,所有数据都会被加密。 有关创建命名空间及其相关数据库的更多详细信息,请参见 InterSystems IRIS System Administration Guide(《InterSystems IRIS 系统管理指南》)中"Configuring InterSystems IRIS(配置 InterSystems IRIS)"一章中的 "Create/Modify a Namespace(创建/修改命名空间)"。有关背景信息, 请参见 Orientation Guide for Server-Side Programming(《服务器端编程指导手册》)中的“Namespaces and Databases(命名空间和数据库)”。 查看加密数据 一旦您创建了加密数据库,您可以像使用其他未加密的数据库一样使用它。唯一的区别是数据的存储方式。要查看存储在加密数据库和未加密数据库中的数据的区别,您可以执行以下简单的测试: 使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中为您的实例描述的程序 ,为您的 InterSystems IRIS 实例打开终端(Terminal )。 使用以下命令切换到加密数据库的命名空间: %SYS>set $namespace="ENCDB" ENCDB> 在 ENCDB 命名空间中,运行以下命令: ENCDB>for i=1:1:1000 set ^x(i)="This is test number "_i 这将创建一千个持久化变量(persistent variable),包含如下内容 This is test number 22。 要确认您已经成功,请看一个变量的值: ENCDB>w ^x(22) This is test number 22 ENCDB> 要打开数据库文件,进入您在上一节中创建的目录,如 C:\InterSystems\IRIS\mgr\ENCDB,并打开数据库文件 IRIS.DAT。您将会看到如下内容: 尝试在文件中搜索 "This is test number"这个字符串。您不会找到它——因为数据库是加密的。事实上,您会发现唯一未加密的字符串是数据库的名称或其加密密钥的标识符。 如果您在未加密的数据库上执行同样的测试,产生的文件将包含以下内容: 请注意,屏幕截图的最后一行包含了在终端(Terminal)设置的变量值。 与数据库加密有关的其他功能 InterSystems IRIS 还具有其他值得注意的数据库加密功能,这些功能对您的实现可能很重要: KMIP——InterSystems IRIS 允许您在独立于托管实例的服务器上存储密钥。为了与这些服务器通信,InterSystems IRIS 支持密钥管理互通协议(key management interoperability protocol,KMIP)。这使得 InterSystems IRIS 能够从 KMIP 提供的标准化密钥管理方法中获益。 更改密钥和添加或删除加密——您可以轻松地更改数据库的加密密钥。如果需要这些操作,加密一个未加密的数据库或制作一个加密数据库的未加密副本也是很简单的。 对磁盘上的相关数据进行加密——InterSystems 允许您轻松加密其临时缓存数据库和其他用于保持最近事务记录为当前状态的磁盘内容(即其日志文件)。 基于芯片的加密——芯片可以将加密作为其活动的一部分,这为操作提供了更快的速度。InterSystems IRIS 支持使用这种芯片。有关基于芯片的加密的详细信息,请参见下一节。​​​​​​​ 了解有关数据库加密的更多信息 InterSystems 有很多参考资料可以帮助您了解有关数据库加密的更多信息: Encryption Awareness(《加密意识》)——InterSystems 在线学习交互式课程,为我们的加密技术提供概念介绍。 Encryption Guide(《加密指南》)——InterSystems 有关数据库加密和相关功能的文档。 FIPS 140–2 Compliance for Database Encryption(《FIPS 140-2 数据库加密的遵从性》)——InterSystems 有关 InterSystems IRIS 支持 FIPS 140-2 标准的文档。
公告
Claire Zheng · 五月 8, 2021

最新职位正在招聘:Channel Sales Manager

InterSystems中国正在招聘SE,具体职位需求以英文发布,详情如下,欢迎将简历砸过来 (claire.zheng@intersystems.com)or 私信联系 :) Intersystems China 系联软件(北京)有限公司, established in 1978 is the trusted Healthcare IT solution provider for many World-Class hospitals and clinics in China, such as China’s largest foreign-invested hospital, United Family Healthcare 和睦家医疗, and one of China’s most prestige medical institution, Peking Union Medical College Hospital 北京协和医院。 The company has a small but collaborative team of talented and passionate individuals working the Greater China Region. Due to China’s economic growth, aging population and the government’s determination in the Healthcare reform, China has become one of InterSystems’s most important strategic regions with unparalleled growth potentials in the years to come. Overview This Channel Sales Manager role will require someone who is passionate about technology within the Greater China Regions. The role will focus on selling our core product portfolio and HealthShare into the Greater China Region IT channel. The successful applicant will develop new relationships with Application Partners and System Integrators, whilst maintaining and enhancing relationships with current partners to ensure that Intersystems is there vendor of choice. This role will suit someone who would like to work for a stable international company, have exposure to working with colleagues from other countries and who wants to be associated with leading edge technology. Responsibilities Develop relationships with new application partners and systems integrators. Manage and motivate current application partners and systems integrators to ensure that Intersystems is their vendor of choice by showing value, enhancing customer experience and being the trusted advisor for them Develop and execute against sales plan to meet revenue targets. Work with Marketing to develop market awareness of the potential of InterSystems products, organise industry events and initiatives. Create and maintain a healthy pipeline Provide accurate forecasting to the management team. Maintain awareness of industry sector and technological advances Qualifications Strong knowledge and experience in building and expanding solid partner ecosystem; Capability and Experience of closing deals and transaction execution within limited time, driven by success and results. In depth experience in and understanding of the IT sales channel within The Greater China Region. Demonstrable experience developing Application Partner and System Integrators Proven track record in exceeding quotas Previous experience in developing and successfully executing against a sales plan Ability to develop strong relationships with key decision makers and influencers with win-win strategy and be the trusted advisor to customers. Ability to think and work creatively to develop unique value propositions for specific partners or customers Experience negotiating and motivating a mutually agreeable and positive contracts Fluent written and communication skills both in Mandarin and English. Experience in Healthcare is not mandatory but a plus.
文章
Claire Zheng · 二月 6, 2023

InterSystems开发者竞赛(Tool):欢迎了解来自中国开发者的三个参赛应用

InterSystems 开发者竞赛:Tool(工具)已进入投票时间,我们收集到来自全球的21个参赛作品,其中有三个参赛应用来自中国开发者。 以下按提交顺序排名 参赛应用1 Intersystems IRIS platform queue trend monitoring component(Intersystems IRIS平台队列监控组件) 提交者:yubo mao简介:随着医院信息化建设的逐步完善,医院业务接口越来越多,业务接口数据处理可能会由于多种因素(网络、消费方系统等)影响下,出现消息堆积过多甚至造成接口卡顿的情况,影响院内正常业务开展,因此对于业务接口组件队列的的监控愈发重要。 当前Intersystems IRIS平台内置的队列监控界面仅展示接口组件实时队列信息,对于对于医院实际应用场景所需要的队列数据信息提供较为局限。队列监控组件程序是基于Intersystems IRIS平台开发,可以对所有接口组件进行统一监控,并展示组件24h内组件队列信息,也可通过设置时间段查询组件历史队列数据,更好满足当前的院内应用需求。 更多详情,请查看参赛者文章及应用: 文章:Queue monitoring 应用:应用已上传至InterSystems Open Exchange 参赛应用2 message_key_query(消息键查询) 提交者:王喆简介:随着新型冠状病毒肺炎的流行,医院往往需要对患者信息进行流程调整操作,如输入患者ID查找门诊或住院部、挂号时间等。传统的数据库查询需要专业的程序员来处理,而使用该方案从界面上可以直接快速定位到患者在医院的挂号和就诊相关信息和时间。 更多详情,请查看参赛者文章及应用: 文章:IRIS快速查询服务思路分享 IRIS quick query service idea sharing 应用:应用已上传至InterSystems Open Exchange 参赛应用3 iris_log_analytics(IRIS log分析) 提交者:银行 郝简介:此方案用于监控IRIS平台事件日志相关信息,包括事件日志列表、日志详细信息、日志类型占比、日志数量最高组件Top7、近7天内日志数量波形图。 更多详情,请查看参赛者文章及应用: 应用:应用已上传至InterSystems Open Exchange 投票已经开始啦,欢迎为你感兴趣的应用投出宝贵的票票! 🔥 投票选出最佳应用程序 🔥 非常棒的应用,欢迎大家踊跃投票! 截至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!
文章
Claire Zheng · 七月 20, 2021

扫码看回放 | InterSystems极客俱乐部线上直播课:Health Connect 系统运维培训

InterSystems极客俱乐部线上直播课“Health Connect系统运维培训”回放已准备好,欢迎您点击报名,扫码看回放!
文章
Claire Zheng · 一月 15

InterSystems第三次入围Gartner云数据库管理系统魔力象限,2023年荣膺“挑战者”称号

Gartner魔力象限是业内知名的分析报告,针对特定市场进行严谨、基于事实的研究后发布的魔力象限报告,可为用户提供全面视图,以便其了解在高速增长、差异化明显的市场中供应商的相对位置。在魔力象限中,供应商被定位在四个象限中:领导者(Leader)、挑战者(Challenger)、远见者(Visionary)和利基玩家(Niche Player)。 2023年年底,在 Gartner 2023年最新发布的“云数据库管理系统(Cloud DBMS)魔力象限”中,InterSystems再次荣膺“挑战者”(Challenger)称号,这是InterSystems第三次入围这一报告并得到认可(2022年“远见者”,2021年“挑战者”)。 Gartner此次评估面向包括InterSystems在内的19家云数据库管理系统供应商进行。我们相信,Gartner魔力象限“挑战者”这一定位,证明了InterSystems有能力挑战现状、推动创新,为市场提供独特的解决方案。 InterSystems IRIS数据平台提供的结缔组织(connective tissue)可将不同来源的分散数据转换为单一、完整的视图,从而在医疗保健、金融服务和供应链等关键市场中为具有关键数据需求的客户提供更好的结果。InterSystems提供了一种独特的智能数据编织方式,可提供高性能多模型和多工作负载数据库管理、智能数据服务、互操作性和分析能力。 IInterSystems数据平台主管Scott Gnau表示:“‘挑战者’这一称号证实了我们专注于创新并为客户提供价值的承诺。InterSystems是此次Gartner魔力象限中唯一的‘挑战者’,这足以说明我们不断超越,在云数据库管理方面取得的成功,InterSystems成功帮助企业在云中实现了数据集成、处理和分析。” 查看《2023云数据库管理系统魔力象限》免费副本:点击链接。 官方报道链接:Gartner® 推出2023年云数据库管理系统魔力象限™,InterSystems荣膺“挑战者”称号 ============ Gartner 免责声明:Gartner 不支持其研究出版物中描述过的任何供应商、产品或服务,也不建议技术用户只选择具有高评级或其他荣誉的供应商。Gartner研究出版物由Gartner研究机构的意见构成,不应被视为事实陈述。Gartner 不为本研究提供任何明示或暗示的担保,包括任何适销性或适用于特定用途的担保。 GARTNER和魔力象限(MAGIC QUADRANT)是 Gartner, Inc. 和/或其附属公司在美国境内和境外的注册商标,已获准用于此处。保留所有权利。
公告
Johnny Wang · 九月 2, 2021

2021 年 8 月学习资料:现已上线!

2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以: 先睹为快:2021 年虚拟峰会体验实验室 使用自适应分析(Adaptive Analytics)解决方案来组建你的第一个数据模型 免费试用 InterSystems IRIS 社区版 查看 InterSystems 文档中的分析 申请即将举行的线上技术课程 立刻报名! 注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。
公告
jieliang liu · 十月 18, 2023

[视频] FHIR 上的临床警报和通知:将医疗保健行动引擎纳入工作流程

你好社区, 观看此视频,了解如何将 FHIR、CDS Hooks 和低代码医疗保健规则编辑器组合成一个易于使用、功能强大的平台,以帮助确保以最佳方式传递信息: ⏯ FHIR 临床警报和通知:将医疗保健行动引擎纳入 2023 年全球峰会工作流程 🗣演讲者:@Frank.Pandolfe,InterSystems 临床产品经理 订阅我们的Bilibili 频道InterSystems Developers以获取最新更新!
文章
Jingwei Wang · 六月 8, 2023

Embedded python 重新加载更新后的python模块

InterSystems IRIS中重新加载更新后的Python模块的方式和直接使用Python 重新加载模块的方式是一样的。 在Python3.4 之后到版本中,直接使用Python 重新加载模块的方式如下: import importlib ​ importlib.reload(module) 同样,在在InterSystems IRIS中重新加载Python模块的方式与其没有区别,示例如下: ClassMethod Hello() As %Status { Set sc = $$$OK Set sm = ##class(%SYS.Python).Import("sample") Set importlib = ##class(%SYS.Python).Import("importlib") do importlib.reload(sm) write sm.hello() Return sc } ​
文章
Claire Zheng · 五月 9, 2023

【视频】老卢问答:与其他亚太国家相比,中国医疗信息化发展有什么特色?

2023年4月,InterSystems亚太区总经理老卢(Luciano Brustia)回到了阔别三年多的北京,针对一些热门问题分享了自己的观点:北京在疫情前后有什么不同?InterSystems是如何进行本土化创新服务中国市场的?与其他亚太国家相比,中国医疗信息化发展有什么特色?医疗信息化未来的发展方向和趋势是什么?
文章
jieliang liu · 四月 17

[视频]了解HL7 FHIR 资源(Resources)的架构

各位开发者好 欢迎观看InterSystems Bilibili官方频道的最新视频 InterSystems Developers Bilibili: ⏯ Understanding the Structure of HL7 FHIR Resources 了解 HL7 FHIR 资源的结构。了解如何在 HL7 FHIR 网站上查看和阅读资源的树形表示法,从而了解资源中包含的不同数据元素。此外,还可了解如何查看 XML、JSON 或 Turtle 格式的资源,以及在哪里可以找到 FHIR 资源的通用建模语言 (UML) 图。 观看新视频!