清除过滤器
公告
Michael Lei · 四月 29, 2022
年度InterSystems IRIS开发者大赛来了,我们特别兴奋能够邀请大家参加我们今年的年度大奖赛,利用InterSystems IRIS数据平台创建开源解决方案!
🏆 InterSystems2022年度编程大奖赛 🏆
时间: 2021年5月9日 - 6月5日(美东时间)
总奖金超过$22,000美金,比去年提高37%!!!
主题
InterSystems 编程大奖赛是我们的年度编程大赛,旨在寻找使用InterSystems IRIS的最佳应用。 我们欢迎任何主题的申请!
提交任何使用InterSystems IRIS作为后端(API或数据库)的应用程序,以及任何类型的InterSystems IRIS API或数据模型。
我们欢迎您改进您去年在InterSystems竞赛系列中展示的应用程序,并提交给大奖赛。也欢迎您提交一个100%的新应用。
要求:
参赛作品申请:新加入Open Exchange的应用程序或现有的应用程序,但要有明显的改进。我们的团队将审核所有参赛申请后决定是否批准参赛.
该应用应在IRIS社区版或IRIS for Health社区版或IRIS高级分析社区版上运行.
该应用程序应是开源的,并在GitHub上发布
应用程序的README文件应该是英文的,包含安装步骤,并包含视频演示或/和应用程序如何工作的描述。
每位开发者最多可提交三个应用。
奖项设置(2022年总奖金比去年增长37.5%!!!):
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名- $7,000
🥈 第二名- $5,000
🥉 第三名- $3,000
🌟 第四到二十名- $100
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名- $3,000
🥈 第二名- $2,000
🥉 第三名- $1,000
✨ 所有获奖者都将授予Global Masters奖章!
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金。
重要参赛时间安排
🛠 5月9日-29日(美东时间): 应用程序开发和注册阶段(在此期间,您可以持续编辑自己的项目)
✅ 5月30日(美东时间): 开启投票阶段(在此期间,您可以持续编辑自己的项目)
✅ 6月5日(美东时间): 投票截止
谁能参加?
除了InterSystems员工以外的所有社区成员. 快来加入吧!
开发者可以组队参加,每队2-5人。
不要忘记在您的应用程序的README中标明你的团队成员--开发者社区用户资料。
您可以使用的资源
✓ 如何使用 InterSystems IRIS (初学者):
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ 初学者如何使用 ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
代码示例:
objectscript-docker-template
rest-api-contest-template
native-api-contest-template
integratedml-demo-template
PythonGateway-template
iris-fhir-template
iris-fullstack-template
iris-interoperability-template
iris-analytics-template
如何把您的APP提交给大赛:
如何在 InterSystems Open Exchange 上发布应用程序
如何把参赛APP提交给大赛
需要帮助吗?
欢迎在本帖下留言或联系您熟悉的InterSystems员工。
万分期待你的精彩项目!祝大家好运 👍
参加本次比赛,即表示您同意这里规定的比赛条款。请在进行比赛前仔细阅读这些条款。
文章
Michael Lei · 五月 17, 2022
在这篇文章中,我们将使用docker和 参数配置文件模版 这一新特性来运行IRIS集群且轻松配置好。
在 UNIX® 和 Linux 上,您可以使用声明式参数配置合并文件来修改默认的 iris.cpf。合并文件是一个部分 CPF,在实例启动时为任何数量的参数设置所需的值。CPF 合并操作对每个实例只起一次作用。
我们的集群架构非常简单,它将由一个主节点(Node1)和两个数据节点(检查所有可用角色)组成。不幸的是,docker-compose不能部署到几个服务器上(尽管它可以部署到远程主机上),所以这对本地开发分片的数据模型、测试等很有用。如果是生产的InterSystems IRIS集群部署,你应该使用ICM云管理器或IKO K8S调度器。
Docker-compose.yml
我们从docker-compose 配置开始:
docker-compose.yml
version: '3.7'
services:
iris1:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
init: true
command: --key /ISC/iris.key
hostname: iris1
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys1
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-master-instance.conf
volumes:
- ./:/ISC:delegated
ports:
- 9011:1972
- 9012:52773
iris2:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
command: --key /ISC/iris.key --before 'sleep 60'
init: true
hostname: iris2
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys2
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-data-instance.conf
volumes:
- ./:/ISC:delegated
depends_on:
- iris1
ports:
- 9021:1972
- 9022:52773
iris3:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
command: --key /ISC/iris.key --before 'sleep 60'
init: true
hostname: iris3
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys3
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-data-instance.conf
volumes:
- ./:/ISC:delegated
depends_on:
- iris1
ports:
- 9031:1972
- 9032:52773
正如你所看到的,我们正在运行一个默认的intersystems/iris:2020.3.0.221.0镜像,提供License Key(必须支持Sharding),使用持久化的%SYS特性持久化数据,并提供ISC_CPF_MERGE_FILE,指向我们的合并文件(主节点和数据节点的文件不同)。此外,数据节点的启动晚了一分钟来让主节点先启动,这是个非常保守的估计,在一个正常的硬件上,启动时间最多几秒钟。
集群配置在CPF合并文件中,让我们来看看
Cluster configuration happens at CPF merge files, let's check them out
CPF2merge-data-instance.conf
[Startup]
PasswordHash=FBFE8593AEFA510C27FD184738D6E865A441DE98,u4ocm4qh
ShardRole=node1
[config]
MaxServerConn=64
MaxServers=64
globals=0,0,400,0,0,0
errlog=1000
routines=32
gmheap=256000
locksiz=1179648
发生了什么情况?
在[Startup] 部分,我们通过为我们的集群分配主节点角色来启用分片。在[config]中,我们将服务器扩大一些,允许更多的缓存和连接。就这么简单!
CPF2merge-data-instance.conf
[Startup]
ShardClusterURL=IRIS://iris1:1972/IRISCLUSTER
ShardRole=DATA
针对数据节点, 我们需要提供主节点和节点角色的URL.
试一下
试试这个repository 或者运行这段代码:
git clone https://github.com/intersystems-ru/iris-container-recipes.git
cd iris-container-recipes
cd cluster
// copy iris.key in cluster folder
docker-compose up -d
启动InterSystems IRIS集群后你可以从 浏览器 访问. 用户名/密码 is: _SYSTEM/SYS.
结论
合并CPF文件 是一个很好用而简单的工具来配置InterSystems IRIS的实例。
感谢@Luca.Ravazzolo提供的代码并回答了我所有的问题。
文章
Lucy Ma · 五月 18, 2022
什么是选择性构建?
选择性构建是InterSystems IRIS (2020.1及以后)商业智能的一个功能。选择性构建允许仅构建模型中的指定元素,并且保持模型可以正常使用。
选择性构建有哪些特性?
在了解选择性构建的细节之前,一个简单的汇总在介绍关于在构建一个标准模型的不同阶段是重要的。这里列出了标准模型构建的过程阶段:
1)删除模型中已存在的数据
2)增添模型需要的全量数据
3)构建所有的索引
现在我们已经熟悉一个标准模型构建的过程,我们可以理解选择性构建的优势。在标准构建过程中,模型必须被停用,因为第一步是需要删除掉所有的已存在数据,接着再增添全量数据。这种情况不会发生在选择性构建中。选择性构建仅仅选择指定的模型元素停用,然后更新相应的数据到这些元素中。这意味着已经存在的数据并不会被删除。既然已经存在数据不会被删除,模型则不需要被停用。那些被选择构建的元素会被停用,表示如果用户想要查询这些停用的元素,他们会看到报错信息。
选择性构建的使用场景?
选择性构建是一种很好的方式用于更新数据模型,而不需要将整个模型停用来延长构建时间。基于模型的大小,一个模型有可能需要几个小时甚至几天来做全量的构建。如此长的构建时间仅仅为了增加一条新的维度减弱了频繁更改模型的灵活性。
如何使用?
从UI界面
在架构中,任何更改的元素都会被自动追踪。当你试图从UI界面构建模型,弹出的对话框会提供一个选项叫做选择性构建。这个选项是默认的,无论任何模型中的元素被更改需要重新构建。当然,如果你更想构建全部模型,也可以在这个界面选择。
构建模型接口
在构建模型的接口中有一个新的参数。这个参数在文档中被描述为:“pFactList是一个特殊属性的列表,存在于模型的事实表类中。如果pFactList被设定,构建过程会仅仅更新在这个事实列表中的行。这个列表可以用逗号分割或者用 $LB的格式。这个特殊的事实表更新时会被单独标记不可用于被搜索,以及与其相关的维度也不可用,否则的话则会收到报错提示。”
我会建议使用UI界面来部署模型的更改,接口方式用于部署关于系统层面的变更。
学习更多关于选择性构建,请参考文档。
文章
Johnny Wang · 十二月 19, 2021
我经常发现自己与现存客户和潜在客户就他们在访问数据方面的挫败感进行对话。他们最常见的话题是围绕对“速度的需求”展开的——可以理解,这是非常正确的。
随着数据继续以指数速度增长,企业——无论是专注于医疗健康、金融服务、零售、物联网还是制造——不仅需要快速接收数据,还需要在同一实例中对其进行分析,以便能够执行程序化、标准化的行动进而做出关键的业务决策。
那好消息是什么呢?为并发数据提取和查询提供几乎瞬时的性能已成为现实,这也是我们多年来一直在 InterSystems 提供和改进的东西。Gartner 将此功能称为“增强交易”,同时 Forrester 等其他公司将其称为“事务分析“等等。但是不管它被叫做什么,被夸赞到什么程度,实践是真正的检验,空谈不如实证。所以多年来我们一直在不断地衡量并努力提高我们软件在每个版本中的性能。事实上,在我们最新版本的 InterSystems IRIS 中,我们一些业务最复杂的客户的应用程序性能在过去两年中提高了 3 倍(甚至更多)。InterSystems IRIS 现在经过基准测试,可以在数十纳秒内提取数据、在内存中创建记录并将其编入索引,以便在硬盘上进行查询。从某种角度上来说,这一切的发生和结束不过是弹指一挥间。
图为:针对大客户应用程序的 InterSystems IRIS 数据平台的持续性能改进
但我们的许多客户和合作伙伴经常询问我们 InterSystems IRIS 的性能与他们正在使用或考虑的其他产品相比如何。 所以我们设计了一个性能测试,我们试图尽可能公平地衡量它。
对于那些经常访问我们的 GitHub 或 Open Exchange 页面的朋友,您可能已经看过了。 速度测试将 InterSystems IRIS 与来自许多不同云和数据管理供应商的流行数据库进行比较。 它包括在同一个数据库实例中同时处理提取和查询工作负载以模拟多工作负载用例,而这些实例应该具备以下特征:
a.) 不特定支持任何产品;
b.) 您可以轻松地在云或自己的电脑上运行;
c.) 可以扩展到您自己的数据和查询。
而我们也将这个测试作为可定制的开源代码发布。值得注意的是,速度测试旨在测试数据库的特定点——它们可以同时提取和查询多少数据,以及这如何影响性能。
举个例子,想想一家医院。 它需要具有并发分析的高数据提取率才能以高效率来执行管理,同时支持数千名用户同时查询他们个人信息、就诊信息等实时数据。 在某些情况下,所使用的数据库必须具有可扩展性、可靠性和同时为事务和分析查询提供高性能,所以它才可以承受施加在其上的压力,这一点至关重要。
我们设计了速度测试来模拟这种压力并记录数据库如何响应。
我们如何使用速度测试?
在这次的测试中,我们将 InterSystems IRIS 与其他数据平台进行了比较,这些平台均在 AWS 云中运行,并且运行时间均为 1,200 秒(20 分钟)。 选择 AWS 基础设施配置是为了确保比对双方的各个方面都有一一对应的比较。 根据客户的要求,我们目前正在将 InterSystems IRIS 与其他四种流行数据库进行比较:SAP HANA Express 2.0、AWS Aurora (MySQL) 5.6.10a、AWS RDS SQL Server 2017 和 Sybase ASE 16.0 SP03 PL08,公共云版 , 高级版。
在所有情况下,InterSystems IRIS 在提取和并发查询方面都优于其他产品,速度从 59.9% 到 67 倍不等。
为了保证我们在完全透明的背景下进行操作测试,我们在 GitHub 上发布了开源速度测试基准测试套件,并与 Enterprise Strategy Group (ESG) 的验证服务部门签订了合同,这是一家 IT 分析师、研究、验证和战略公司,为全球 IT 社区提供市场情报和可操作的洞察力,以审查和验证测试和结果。
速度测试发现了什么?
ESG 证实该测试做到了对各种产品比较的公平性,并且 InterSystems IRIS 显着优于其他领先的传统和内存数据平台,更快地提取更多数据(约 1 亿条记录),同时以更快的速度查询更多数据(超过 20,000 条记录/秒),实现了微秒查询响应时间。 您可以在我们与 ESG 举办的网络研讨会上详细了解结果和速度测试的确切工作原理。 网络研讨会结束后,您甚至会收到完整的 ESG 报告。
必须强调的是,我们未来还会做更多类型的测试,而这次我们使用的标准为所有产品创建了尽可能公平的测试。 但是,我们知道每种情况都不同,因此我们鼓励您前往我们的 GitHub 页面并在 AWS 中亲自测试该套件或在本地机器上使用 Docker,并根据您自己的具体需求,对测试或配置进行更改,以实现更紧密地匹配您的想法。
查看更多最新文章
在此处注册观看于 2020 年 8 月 5 日举办的 ESG 网络研讨会
查看原文
关于作者:Amir Samary
Amir Samary 已在数据库、互操作性和 InterSystems 技术方面工作了 20 多年。 Amir 致力于为使用 InterSystems 技术为阿根廷、巴西、智利、哥伦比亚、乌拉圭和美国的各个行业构建解决方案的合作伙伴、客户和开发人员提供支持。 这使 Amir 能够理解和试验不同技术、文化和基础设施现实中的模式和架构。 Amir Samary 目前担任解决方案架构经理,他领导 InterSystems 的一组解决方案开发人员。 他主修计算机科学,辅修数学。
文章
Claire Zheng · 六月 12, 2023
大家好!
这是一篇关于如何将视频嵌入您的帖子的简短文章。
其实很简单。您只需要按照以下步骤操作。
1. 打开您希望嵌入的B站视频,在视频右下角找到分享按钮;
2. 选择“嵌入代码”并复制代码
3.在社区帖子中切换到Source视图,并将您在步骤2中复制的代码粘贴在您希望嵌入视频的地方(如嵌在<p>后);
4.再次点击“Source”,回到编辑页面,您会看到如下“IFRAME”框;
5.双击红色的“IFRAME”,并如图所示填写视频尺寸(请务必按下图数值填写),点击“确定”,即可完成视频嵌入。
希望这个帖子能帮助到您:)
在评论部分留下您对这个主题的想法,或者告诉我们您还希望了解哪些社区玩儿法。
文章
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 以太坊适配器解决实际问题的示例。
公告
Claire Zheng · 七月 10, 2023
Hi 开发者们,
是时候宣布InterSystems 2023 年度编程大奖赛的获奖者了!
感谢提交20 份应用申请出色参与者们 🔥
专家提名奖
🥇第一名,7,000 美元,获奖者@Henrique Dias, @Henry Pereira, @José Roberto Pereira ,获奖应用 iris-fhir-generative-ai
🥈第二名,5,000 美元,获奖者@Ikram Shah, @Sowmiya Nagarajan,获奖应用 IRIS FHIR Transcribe Summarize Export
🥉第三名,3,000 美元,获奖者 @Muhammad Waseem 获奖应用irisChatGPT
🏅第四名,2,000 美元,获奖者@Dmitry Maslennikov,获奖应用ZProfile
🏅第五名 ,1,000 美元,获奖者@Ikram Shah, @Sowmiya Nagarajan ,获奖应用 FHIR - AI and OpenAPI Chain
🌟 200 美元,获奖者:@Robert Cemper, 获奖应用oex-mapping
🌟 200 美元,获奖者:@Rob Ellis, 获奖应用RDUH Interface Analyst HL7v2 Browser Extension
🌟 200 美元,获奖者:@davi massaru teixeira muta, 获奖应用fhir-chatGPT
🌟 200 美元,获奖者:@davi massaru teixeira muta, 获奖应用interoperability_GPT
🌟 200 美元,获奖者:@Oleksandr Zaitsev ,获奖应用password-app-iris-db
🌟 200 美元,获奖者:@Daniel Aguilar 获奖应用irisapitester
⭐️ 100 美元,获奖者:@Shanshan Yu,获奖应用IntegratedMLandDashboardSample
⭐️ 100 美元,获奖者:@Zhang Fatong 获奖应用 IntegratedML-IRIS-PlatformEntryPrediction
⭐️ 100 美元,获奖者:@Sean Connelly 获奖应用DevBox
⭐️ 100 美元,获奖者:@John Murray 获奖应用 oex-vscode-snippets-template
⭐️ 100 美元,获奖者:@Sergey Mikhailenko,获奖应用appmsw-warm-home
⭐️ 100 美元,获奖者:@yurimarx Marx, 获奖应用 FHIR Editor
⭐️ 100 美元,获奖者:@Oliver Wilms,获奖应用iris-user-manager
⭐️ 100 美元,获奖者:@Oleh Dontsov 获奖应用 Recycler
⭐️ 100 美元,获奖者:@Oleh Dontsov 获奖应用 IRIS Data Migration Manager
社区提名奖
🥇第一名,3,000 美元,获奖者@Henrique Dias, @Henry Pereira, @José Roberto Pereira ,获奖应用 iris-fhir-generative-ai
🥈第二名,2,000 美元,获奖者@Shanshan Yu,获奖应用IntegratedMLandDashboardSample
🥉第三名,1,000 美元,获奖者@Zhang Fatong,获奖应用 IntegratedML-IRIS-PlatformEntryPrediction
我们向所有参赛者和获奖者表示最诚挚的祝贺!
下次一起来参赛吧!;) 热烈祝贺 @Shanshan Yu@Zhang Fatong二位中国选手!期待以后看到更多的优秀作品!
文章
Claire Zheng · 四月 21, 2021
近日,InterSystems极客俱乐部举办了线上直播“InterSystems Caché系统运维培训”,这是系列视频之一。InterSystems中国资深售前顾问吕正之讲解了“InterSystems Caché架构、备份与恢复”。
文章
Claire Zheng · 四月 3, 2023
亲爱的社区开发者们:
感谢第四届 InterSystems 技术征文大赛(InterSystems IRIS 教程)的优秀参与者们,我们有很棒的新文章供您阅读和欣赏!
🌟 24 篇精彩文章🌟
是时候宣布此次竞赛优胜者啦!
让我们认识一下获奖者和他们的文章:
⭐️ 专家奖——由 InterSystems 专家选出的获奖者:
🥇 第一名: InterSystems Embedded Python in glance 作者: @Muhammad Waseem
🥈 第二名: InterSystems Embedded Python with Pandas - 第 1 部分,作者:@Rizmaan Marikar
🥉第三名: SQLAlchemy - 将 Python 和 SQL 与 IRIS 数据库结合使用的最简单方法 作者:@Heloisa Paiva
⭐️开发者社区奖—— 由社区成员选出的获奖者,获得最多赞的文章:
🏆 设置 VS Code 以使用 InterSystems 技术 作者:@Maria Gladkova
此外!
⭐️我们想根据贡献的数量奖励更多的作者:
@Robert Cemper:4 篇文章!
@Heloisa Paiva: 3 篇文章!
@Iryna Mykhailova: 3 篇文章!
这些作者将获得适用于 iPad 的 Magic Keyboard Folio 或 Bose Soundlink Micro 蓝牙扬声器!
让我们祝贺所有参加 英文社区 #4第四届技术征文大赛的英雄们:
@Robert Cemper
@Heloisa Paiva
@Muhammad Waseem
@王喆
@Iryna Mykhailova
@Maria Gladkova
@Yone Moreno
@Akio Hashimoto
@Julian Matthews
@Daniel Aguilar
@water huang
@Oliver Wilms
@Rizmaan Marikar
@姚 鑫
@Zhong Li
@Jude Mukkadayil
@Roger Merchberger
谢谢你们!您为我们的开发社区做出了卓越的贡献!
我们将联系参赛者以寄送礼品。 再次感谢所有中国选手的热情参与!@姚 鑫@王喆@water huang
公告
Claire Zheng · 八月 19, 2021
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
🏆 InterSystems开发者竞赛:InterSystems IRIS Analytics 🏆
竞赛时间:2021年8月23日-9月12日
奖金总额: $8,750
登录页面即可参赛: https://contest.intersystems.com
奖项设置
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名 - $4,000
🥈 第二名 - $2,000
🥉 第三名 - $1,000
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名 - $1,000
🥈 第二名 - $500
🥉 第三名 - $250
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。
请注意,要在您的README文件中标注您的团队成员——社区用户profile
参赛时间安排
🛠 8月23日 - 9月5日: 应用开发、提交阶段
✅ 9月 6日 - 12日: 投票阶段
注意:在整个参赛期间(开发与投票期间,即8月23日-9月12日),开发者可持续编辑、提升其应用
主题
💡 应用InterSystems IRIS开发分析解决方案(Analytics Solution) 💡
使用一个或多个InterSystems IRIS分析功能,如:
Adaptive Analytics 自适应分析(AtScale)
InterSystems Reports (Logi)
InterSystems BI (DeepSee)
InterSystems NLP (iKnow)
创造一个简单的、引人注目的、清晰的可视化产品和/或故事。
以下是参赛须知:
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用应该在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition 上工作。
该应用需开源并在GitHub上发布。
该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
资源助力
1. 示例应用程序和说明:
1.1. Adaptive Analytics(自适应分析):
Adaptive Analytics in Action (视频)
1.2 InterSystems报告:
A look at InterSystems Reports (视频)
InterSystems Reports Resource guide
Running InterSystems Reports in containers
IRIS reports server demo (OEX)
1.3 IRIS BI 案例:
IRIS Analytics Template
Samples BI
Covid19 analytics
Analyze This
Game of Throne Analytics
Pivot Subscriptions
Error Globals Analytics
Creating InterSystems IRIS BI Solutions Using Docker & VSCode (视频)
The Freedom of Visualization Choice: InterSystems BI (视频)
InterSystems BI(DeepSee) Overview (线上课程)
InterSystems BI(DeepSee) Analyzer Basics (线上课程)
1.4 InterSystems NLP (iKnow):
iKnow Source Code
Samples Aviation
Set Analysis
iKnow First Look (线上课程)
2. Sample数据:
Hole Foods database for IRIS BI (与SamplesBI包一起安装)
Adventure Works, zip
Synthea
3. 将数据导入IRIS的工具:
CSVGEN and CSVGENUI
S3 External Table
4. IRIS初学者
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
5. 如何将您的APP提交给大赛
如何在InterSystems Open Exchange上发布应用程序
如何把参赛APP提交给大赛
参赛评比
投票规则即将发布,敬请期待!
So!
期待您的精彩提交!加入我们的编程马拉松,赢取大奖
❗️ 点击此处,查看 官方竞赛条款解读❗️
公告
Nicky Zhu · 一月 8, 2021
现在,InterSystems **系统警报和监视**(简称 InterSystems _SAM_)第 1 版 (v1.0) 发布了预览版本。
InterSystems SAM v1.0 为基于 InterSystems IRIS 的产品提供现代化的监视解决方案。 其可对集群进行高级别查看,并且能够以单节点方式可视化深入探视指标,同时提供警报通知。 该第 1 个版本提供对一百多个 InterSystems IRIS 内核指标的可视化,并且用户可以根据自己的喜好扩展默认提供的 Grafana 模板。
V1.0 旨在成为简单直观的基准。 请进行尝试并向我们发送反馈,帮助我们使其变得更棒!
从版本 2019.4 开始,SAM 可以显示来自基于 InterSystems 的实例中的信息
SAM 仅以容器格式提供。 您将需要 SAM 管理器容器,以及一小组额外的开源_组件_(Prometheus 和 Grafana),它们由组合文件自动添加。
可从以下位置获取 SAM 组件和 SAM 管理器社区版
* [WRC 预览页面](https://wrc.intersystems.com/wrc/coDistPreview.csp):分别为“SAM 组件”和“SAM 管理器”
* 如果您要在 docker-compose 运行之前下载,可通过外部源[SAM 组件 Github repo](https://github.com/intersystems-community/sam) & [Docker Hub 上的 SAM 管理器](https://hub.docker.com/_/intersystems-system-alerting-and-monitoring)(后一个链接可能在几个小时内不可用,但容器是可获取的)
如果您正在旅行,或偏爱通过语音收听有关什么是 SAM 方面的提问与回答,我们为您准备了以下播客:
可在[此处](https://docs.intersystems.com/sam/csp/docbook/Doc.View.cls?KEY=ASAM)找到 SAM 文档
公告
Claire Zheng · 一月 7, 2021
大家好!InterSystems Global Masters 倡导中心与开发者社区紧密联系并不是秘密。 为开发者社区做出任何贡献都会带来 Global Masters 积分。 所以, 我们准备了一份关于如何在 Global Masters 以最佳方式获得积分的简短指南。
如何在 GLOBAL MASTERS 获得积分
在开发者社区上发布英文帖子
100
第一次在社区评论
回答一个问题 / 发表一个评论(英文)
300
30
第 1 个被标记为“已接受”的回答
1000
之后的每一个“已接收”回答
150
第5/10/25/50个“已接收”回答
4000/8000/20000/40000
翻译一篇文章
50
在 DC 上问第1/5/10/25/50个问题
500/2000 /5000 /15000/30000
在 DC 上发布第1/5/10/25/50个帖子
1500/7500/15000/40000/75000
在 Open Exchange 发布一个应用程序
800
对每一个ZPM应用积分奖励
400
在Open Exchange发布第1/5/10/25个应用程序
1000/10000/25000/75000
帖子浏览量达到750+/2000+/5000+/15000+
600/2500/7000/20000
在开发者社区阅读一篇帖子
10
看一个视频
20
通过社交媒体分享一次(帖子/视频)
40
发布的第1/2/3/4/5 篇带“最佳实践”标签的文章
1000/3000/7000/10000/15000
在Open Exchange上您的应用第50/100/250/500/1000次下载
2500/5000/7500/12500/25000
对 InterSystems / InterSystems 产品作一次评述
2 000-3 000
邀请成员加入开发者社区
600
为您的OEX应用创建一个video
3000
*仅计算在 Global Masters 倡导中心注册后发布的帖子。
完成挑战,获得徽章并升级:Insider > Advocate > Specialist > Expert > VIP。 您的级别越高,可获得的奖励越有趣!
欢迎点击查看更多有关 Global Masters 的其他信息:
如何加入 InterSystems Global Masters
Global Masters 徽章说明
Global Masters 级别说明
Global Masters 计划的变更
如果您尚未加入 InterSystems Global Masters 倡导中心,现在就开始行动吧! 欢迎在本帖评论中提出您的问题。 欢迎大家多参与Global Master,多积分,多贡献,提高等级,赢取礼品!
@Young Zheng @An Xingqi @jinhui hu @wenyang zhang @guoguo wang @shikai ren @chaolong huang @yabin duan @鹏飞 楚 @智辉 李 @SHAN HU @Wendy Wu
@Hao Wang @Z C @Zhaoying Li @Neal Wu @liu yaquan @qu qu @wang wei @guo meiya@yajing xu @yue li @权权 苏 @xiaohu xiong @yadong zhao @Yi Han @Wen Zhou @jie zhang @张 恒 @guo wenheng @Jing Li @迪 文
文章
Nicky Zhu · 一月 8, 2021
在本文中,我们将讨论孤立消息。
## 什么是孤立消息
每个消息正文都与一个保存元数据的消息标头相关联。 标头保存源配置名称、目标配置名称、创建时间、处理时间、关联的消息正文引用、会话信息、消息正文类名、消息状态等信息。 当有消息正文记录没有相应的标头记录时,这些消息正文称为孤立消息正文。 我们将讨论可能导致孤立消息正文产生的原因。
### 仅清除标头
在清除任务设置中,**BodiesToo** 设置用于指定是否将消息正文与消息标头一起清除。 如果**关闭**此设置,清除任务将只删除消息标头,而保留消息正文。 这些消息正文将成为孤立记录,因为所引用的标头已被删除。 如果清除消息标头但保留消息正文,则管理门户将无法清除孤立消息正文。 在这种情况下,必须以编程方式清除消息正文。

请参阅有关清除任务的文档
[http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG\_purge#EGMG\_purge_basic](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_basic)
### 复杂的消息正文类(对象值属性)
当 Ensemble 清除某条消息正文时,不一定删除该消息正文的对象值属性。 具体来说,只有当其他对象是序列对象或子对象(由关系定义)时,才会删除这些对象。 对于其他对象,必须通过在消息正文类中定义删除触发器或实现 **%OnDelete()** 方法来适当地处理删除。
OnDelete 实现的示例代码
Class Sample.Address Extends %Persistent{
/// The street address.
Property Street As %String(MAXLEN = 80);
/// The city name.
Property City As %String(MAXLEN = 80);
/// The 2-letter state abbreviation.
Property State As %String(MAXLEN = 2);
/// The 5-digit U.S. Zone Improvement Plan (ZIP) code.
Property Zip As %String(MAXLEN = 5);
}
Class Sample.Person Extends %Persistent{
/// Person's name.
Property Name As %String [ Required ];
/// Person's Social Security number. This is validated using pattern match.
Property SSN As %String(PATTERN = "3N1""-""2N1""-""4N") [ Required ];
/// Person's Date of Birth.
Property DOB As %Date;
/// Person's home address.
Property Home As Address;
/// Person's office address.
Property Office As Address;
///Callback for object deletion
ClassMethod %OnDelete(oid As %ObjectIdentity) As %Status [ Private ]{
// Delete the property object references.
Set tSC = $$$OK, tThis = ##class(Sample.Person).%Open(oid)
If $ISOBJECT(tThis.Home) Set tSC = ##class(Sample.Address).%DeleteId(tThis.Home.%Id())
If $ISOBJECT(tThis.Office) Set tSC = ##class(Sample.Address).%DeleteId(tThis.Office.%Id())
Quit tSC
}
///Callback/Trigger for SQL delete
Trigger OnDelete [ Event = DELETE ]{
// Delete the property object references. {%%ID} holds the id of the record being deleted.
Set tID={%%ID}
Set tThis = ##class(Sample.Person).%OpenId(tID)
If $ISOBJECT(tThis.Home) Do ##class(Sample.Address).%DeleteId(tThis.Home.%Id())
If $ISOBJECT(tThis.Office) Do ##class(Sample.Address).%DeleteId(tThis.Office.%Id())
Quit
}
}
### 已创建但从未发送到其他主机的消息对象
当一条消息被发送/转发到其他主机时,Ensemble 会创建一个新的消息标头,并关联相应的消息正文。 如果在业务服务/流程中创建的消息正文/对象实例已保存到磁盘/数据库,但从未在生产过程中发送到其他主机,它将没有关联的标头,并保留为孤立消息正文。 最佳实践是不创建消息正文,除非它将被转发,或者不对该对象实例调用 %Save()(在将消息放入目标配置队列之前,SendRequestSync/SendRequestAsync API 将保存该对象实例)。 这样,除非将消息正文对象发送到其他主机,否则它将不会持久化。
此问题的最常见原因是开发人员:
克隆了消息正文,且从未转发克隆的消息正文
在上下文变量 (BPL) 中创建了消息正文对象,且从未转发。
## 孤立消息的影响
孤立消息不会被清除任务清除。 这些消息将占用磁盘空间,并且随着它们数量的增长,磁盘使用量也会成比例增加。 不仅消息正文数据使用磁盘空间,每条孤立消息正文记录的任何索引/搜索表条目也都占用磁盘空间。
## 识别孤立消息
可以通过查询消息标头和正文来确定孤立消息是否存在。 每个消息标头都引用相应的消息正文。 消息正文对象 Id 引用存储在标头的 MessageBodyId 属性中,消息正文类名存储在标头的 MessageBodyClassName 属性中。
在 HL7 消息表中查找孤立消息的示例查询:
SELECT HL7.Id FROM EnsLib_HL7.Message HL7
LEFT JOIN Ens.MessageHeader hdr
ON HL7.Id=hdr.MessageBodyId
WHERE hdr.MessageBodyId IS NULL
上面的查询将返回所有没有相应标头的 HL7 消息。 可以将该查询修改为查询任何其他消息类型,只需替换消息正文表名即可。
## 清除孤立消息
管理门户无法提供清除孤立消息正文的方法。 在这种情况下,必须以编程方式清除消息正文。 在 **ENSDEMO** 数据库中,类 **Demo.Util.CleanupSet** 提供了一个如何执行此操作的示例。 该例程也执行深度清除,同时处理对象属性引用。
还可以参考另一个例程来清除孤立消息,但该例程不执行深度清除,只对删除消息正文有帮助。 我在下面附上可下载源码的 github 链接:
最佳做法是始终:
1. 避免编程错误(如前面所讨论)以防止出现孤立消息
2. 只有需要正文并且知道只能以编程方式清除这些消息正文时,才将清除任务设置成关闭 BodiesToo 设置。
3. 实施关系或针对持久对象属性实现 OnDelete。
我希望本文对您构建生产环境有所帮助。 如果您有任何问题或疑虑,请联系我们。 谢谢。
文章
Claire Zheng · 一月 21, 2021
大家好!
我想跟大家分享一个个人项目,该项目始于工作中的一个简单需求:“能否知道我们使用了多少个Caché许可证?”
在阅读社区的其他文章时,我发现了一篇David Loveluck写的非常棒的文章:APM——使用Caché History Monitor。
我根据David的这篇文章,开始使用Caché History Monitor并显示所有这些信息。
在面临“选择哪种很酷的技术”这个问题时,我决定使用简单而强大的CSP,这样我的客户可以认识到Caché不仅仅是MUMPS/终端。
在创建了页面以显示许可、数据库增长和CSP会话的历史记录后,我决定为System Dashboard和进程页面创建一个新设计。
我的Caché实例运行得良好。
但是,如果使用IRIS呢?根据Evgeny Shvarov的文章:在InterSystems IRIS开发存储库中使用Docker,我实现了docker技术,并把代码放到了GitHub上,现在大家只需几个步骤就可以进行尝试。
如何运行?
如要使用这里的repo进行编码,请执行以下操作:
1. 通过Clone/git命令将repo 更新到任意本地目录中:
$ git clone https://github.com/diashenrique/iris-history-monitor.git
2. 打开这个目录下的终端,并运行:
$ docker-compose build
3. 在项目中运行IRIS容器:
$ docker-compose up -d
如何测试
打开浏览器,并转到链接:http://localhost:52773/csp/irismonitor/dashboard.csp
使用用户名_SYSTEM可以运行仪表盘dashboard和其他功能。
系统仪表盘
系统仪表盘(System Dashboard)可展示:
·许可
·系统时间
·应用程序错误
·缓存过程
·CSP会话
·Lock Table
·日志空间
·日志状态
·ECP AppServer
·ECP DataServer
·编写守护进程
·缓存效率
·严重警告
折线图小工具每5秒绘制一个点:
系统菜单
系统进程
进程过滤器
通过使用不同的过滤器可以实现你所需的结果。也可以使用“Multiple Sort(多重排序)”,按Shift +单击列标题,甚至可以将数据网格导出到Excel!
History Monitor(历史记录监控器)
CSP会话和许可的History Monitor可显示三个部分的信息:
·每5分钟
·每天
·每小时
“Database Growth”部分只显示当日信息。历史记录页面共享以下功能:
Date Range Picker(日期选择插件)
默认值为“过去7天”
Chart / Data Table(图表/ 数据表)
在每个部分的右上角有两个按钮(Chart / Data Table [图表/ 数据表])
Data Table(数据表)显示创建图表所用的信息,同样可以以Excel格式下载。
Excel中显示CSP中定义的相同格式、内容和组。
缩放
所有图表都有Zoom(缩放)选项,以可视化方式显示更多详细信息。
平均值和最大值
对于“每小时”和“每天”部分,图表显示的是平均值和最大值。
平均值
最大值
希望这篇文章对您有用!
注:本文为译文,点击此处阅读原文,原文由Henrique Gonçalves Dias撰写。