清除过滤器
公告
Claire Zheng · 四月 13, 2021
Hi 社区开发者们,告诉大家一个好消息!InterSystems IRIS®数据平台已入驻AWS Quick Start,今后可在AWS上快速部署高可用的生产环境。
基于AWS和InterSystems在安全性和高可用性方面的最佳实践,InterSystems IRIS Quick Start模板能够提供可靠、可重复的自动化参考部署,简化IRIS关键任务环境的构建过程。 这些加速器将数百个手动步骤简化为几步,因此用户可以在几分钟内快速、经济有效地在自己的AWS账户中安装InterSystems IRIS,从而更快地获得洞察和价值。 InterSystems数据平台副总裁Scott Gnau表示:“InterSystems IRIS入驻AWS Quick Start后,可为用户提供优化的、预配置的数据平台,帮助其近乎实时地部署安全、高可用的生产环境。InterSystems IRIS和AWS Quick Start的强强联合可以加快实现价值的速度,用户可专注于利用其中的深刻洞见。在目前日益激烈的竞争环境中,这两点非常重要。” 作为这个最新产品的一部分,我们还将为通过Quick Start部署InterSystems IRIS平台的用户提供一份指南,以介绍架构并提供部署指导。 作为一个全面的、云优先的数据平台,InterSystems IRIS无需集成多种技术,因此可减少代码、系统资源和维护流程,并提高投资回报率。
文章
Michael Lei · 四月 14, 2021
**什么是分布式人工智能 (DAI)?**
试图找到一个“无懈可击”的定义是徒劳的:这个术语似乎有些“超前”。 但是,我们仍然可以从语义上分析该术语本身,推导出分布式人工智能也是人工智能(请参见我们为提出一个“实用”定义所做的[努力](https://www.linkedin.com/pulse/ai-robotization-intersystems-iris-data-platform-sergey-lukyanchikov/)),只是它分布在多台没有聚合在一起(既不在数据方面,也不通过应用程序聚合,原则上不提供对特定计算机的访问)的计算机上。 即,在理想情况下,分布式人工智能的安排方式是:参与该“分布”的任何计算机都不能直接访问其他计算机的数据和应用程序,唯一的替代方案是通过“透明的”消息传递来传输数据样本和可执行脚本。 与该理想情况的任何偏差都会导致出现“部分分布式人工智能”- 一个示例是通过中央应用程序服务器分发数据, 或者其反向操作。 不管怎样,我们都会得到一组“联合”模型(即,在各自数据源上训练的模型,或者按自己的算法训练的模型,或者同时以这两种方式训练的模型)。
**“面向大众”的分布式人工智能方案**
我们不会讨论边缘计算、机密数据操作员、分散的移动搜索,或者类似的引人入胜但又不是最有意识和最广泛应用(目前不是)的方案。 我们将更“贴近于生活”,例如,如果考虑以下方案(其详细演示应该可以在此处观看):一家公司运行一个生产级 AI/ML 解决方案,其运行质量正在由一名外部数据科学家(即,不是该公司员工的专家)系统地进行检查。 由于种种原因,该公司无法授予数据科学家访问该解决方案的权限,但可以按照时间表或在特定事件(例如,解决方案终止一个或多个模型的训练会话)后向其发送所需表中的记录样本。 我们据此假定,该数据科学家拥有某个版本的 AI/ML 机制,且这些机制已经集成在公司正在运行的生产级解决方案中,而且数据科学家本人很可能正在开发、改进和调整这些机制,以适应该具体公司的具体用例。 将这些机制部署到正在运行的解决方案中、监控机制的运行以及其他生命周期方面的工作由一名数据工程师(公司员工)负责。
我们在[这篇文章](https://www.linkedin.com/pulse/intersystems-iris-all-purpose-universal-platform-aiml-lukyanchikov/)中提供了一个在 InterSystems IRIS 平台上部署生产级 AI/ML 解决方案的示例,该解决方案可自主处理来自设备的数据流。 上一段提供的链接下的演示中也运行了相同的解决方案。 您可以使用我们的仓库 Convergent Analytics 中的内容(免费且无时间限制,请访问 Links to Required Downloads 和 Root Resources 部分)在 InterSystems IRIS 上构建您自己的解决方案原型。
通过这样的方案,我们可获得“分布程度”如何的人工智能? 在我们看来,此方案相当接近理想情况,因为数据科学家与公司的数据和算法均保持“切割”(只是传输了有限的样本,但在某个时间点前很重要;而且数据科学家自己的“样本”永远不会与作为实时生产级解决方案的一部分部署和运行的“活跃”机制 100% 同步),他完全不能访问公司的 IT 基础架构。 因此,数据科学家的作用变为在他的本地计算资源上部分重放该公司生产级 AI/ML 解决方案的运行片段,获得可接受置信级别的运行质量评估,并向公司返回反馈(在我们的具体方案中,以“审核”结果表示,可能还加上该公司解决方案涉及的 AI/ML 机制的改进版本)。
_图 1 分布式人工智能方案表示_
我们知道,在人类执行人工智能项目交换的过程中,不一定需要表示和传输反馈,这源于有关现代方法的出版物以及已有的分布式人工智能实现经验。 但是,InterSystems IRIS 平台的优势在于,它允许同样高效地开发和启动“混合”(人类和机器串联)且完全自动化的人工智能用例,因此,我们将继续根据上述“混合”示例进行分析,同时为读者留下自行阐述其完全自动化的可能性。
**如何在 InterSystems IRIS 平台上运行具体的分布式人工智能方案**
本文上一节提到的带有方案演示的视频介绍对作为实时 AI/ML 平台的 InterSystems IRIS 进行了总体概述,并解释了其对 DevOps 宏机制的支持。 在演示中,没有明确覆盖负责定期将训练数据集传输给外部数据科学家的“公司侧”业务流程,因此,我们将从该业务流程及其步骤的简介开始。
发送方业务流程的一个主要“引擎”是 while 循环(使用 InterSystems IRIS 可视业务流程编辑器实现,该编辑器基于平台解释的 BPL 表示法),负责将训练数据集系统地发送给外部数据科学家。 该“引擎”内部执行以下操作(参见下图,跳过数据一致性操作):
_图 2“发送方”业务流程的主要部分_
(a) 负载分析器 – 将训练数据集表中的当前记录集加载到业务流程中,并基于它在 Python 会话中形成一个数据框架。 调用操作会触发对 InterSystems IRIS DBMS 的 SQL 查询,并触发对 Python 接口的调用以将 SQL 结果传输给它,以便形成数据框架;
(b) Azure 分析器 – 另一个调用操作,触发对 Python 接口的调用,以向其传输一组 Azure ML SDK for Python 指令,从而在 Azure 中构建所需的基础架构,并在该基础架构上部署前一个操作中形成的数据框架数据;
作为执行上述业务流程操作的结果,我们在 Azure 中获得一个存储对象(一个 .csv 文件),其中包含公司的生产级解决方案用于模型训练的最近数据集的导出:
_图 3 训练数据集“到达”Azure ML_
这样,发送方业务流程的主要部分已经结束,但是我们还需要再执行一个操作,同时请记住,我们在 Azure ML 中创建的任何计算资源都是可计费的(参见下图,跳过数据一致性操作):
_图 4“发送方”业务流程的最后部分_
(c) 资源清理 – 触发对 Python 接口的调用,以向其传输一组 Azure ML SDK for Python 指令,从 Azure 中删除上一个操作中构建的计算基础架构。
数据科学家所需的数据已经传输完毕(数据集现在在 Azure 中),因此我们可以继续启动将访问数据集的“外部”业务流程,运行至少一次替代模型训练(从算法上讲,替代模型不同于作为生产级解决方案一部分运行的模型),并向数据科学家返回得到的模型质量指标及可视化,从而表示有关公司生产级解决方案运行效率的“审核结果”。
我们现在看一下接收方业务流程:与发送方业务流程(在包含公司自主 AI/ML 解决方案的其他业务流程中运行)不同,它不需要 while 循环,而是包含与在 Azure ML 和 IntegratedML(InterSystems IRIS 中用于自动 ML 框架的加速器)中训练替代模型有关的一系列操作,并将训练结果提取到 InterSystems IRIS 中(该平台也被认为在数据科学家处本地安装):
_图 5“接收方”业务流程_
(a) 导入 Python 模块 – 触发对 Python 接口的调用,以向其传输一组指令,导入进一步操作所需的 Python 模块;
(b) 设置 AUDITOR 参数 – 触发对 Python 接口的调用,以向其传输一组指令,为进一步操作所需的变量指定默认值;
(c) Azure ML 审核 –(我们将跳过任何对 Python 接口触发的进一步引用)将“审核任务”提交到 Azure ML;
(d) 解释 Azure ML – 将发送方业务流程传输到 Azure ML 的数据与 Azure ML 的“审核”结果一起获取到本地 Python 会话中(此外,在 Python 会话中创建“审核”结果的可视化);
(e) 流式传输到 IRIS – 将发送方业务流程传输到 Azure ML 的数据与 Azure ML 的“审核”结果一起从本地 Python 会话中提取到 IRIS 中的业务流程变量;
(f) 填充 IRIS – 将发送方业务流程传输到 Azure ML 的数据与 Azure ML 的“审核”结果一起从 IRIS 中的业务流程变量写入 IRIS 中的表;
(g) IntegratedML 审核 – 使用 IntegratedML 加速器“审核”从 Azure ML 接收的数据以及上一个操作中写入 IRIS 的 Azure ML“审核”结果(在此特定情况下,该加速器处理 H2O auto-ML 框架);
(h) 对 Python 进行查询 – 将数据和 IntegratedML“审核”结果传输到 Python 会话中;
(i) 解释 IntegratedML – 在 Python 会话中,创建 IntegratedML“审核”结果的可视化;
(j) 资源清理 – 从 Azure 中删除先前的操作中创建的计算基础架构。
_图 6 Azure ML“审核”结果的可视化_
_图 7 IntegratedML“审核”结果的可视化_
**分布式人工智能一般如何在 InterSystems IRIS 平台上实现**
InterSystems IRIS 平台实现分布式人工智能有三种基本方法:
· 根据用户定义的规则和算法,直接交换人工智能项目,并对其进行本地和中央处理
· 人工智能项目处理委托给专门的框架(例如:TensorFlow、PyTorch),交换的编排和各个准备步骤由用户在 InterSystems IRIS 的本地和中央实例上配置
· 人工智能项目的交换和处理都通过云提供商(Azure、AWS、GCP)来完成,本地和中央实例只向云提供商发送输入数据并接收最终结果
_图 8 在 InterSystems IRIS 平台上实现分布式人工智能的基本方法_
这些基本方法可以修改/组合使用:尤其是,在本文的上一节(“审核”)所描述的具体方案中,使用了第三种方法“以云为中心”,将“审核员”部分划分到云端,而在数据科学家一侧执行本地部分(作为“中央实例”)。
目前,在我们生活的现实中,“分布式人工智能”学科的理论和应用要素正在不断积累,但还没有形成“规范形式”,这使得创新实现具有巨大潜力。 我们的专家团队密切关注分布式人工智能作为一门学科的发展,并为其在 InterSystems IRIS 平台上的实现设计加速器。 我们乐于分享我们的内容,并帮助每一个认为这里讨论的领域有用的人开始分布式人工智能机制的原型设计。 您可以使用以下电子邮件地址联系我们的 AI/ML 专家团队 – MLToolkit@intersystems.com。
文章
Hao Ma · 三月 26, 2021
Intersystems IRIS 是开发、运行和消耗数据科学服务的绝佳平台。 IRIS 可以使用适配器从任何类型、格式、协议和时间提取数据。 这些数据集可以通过 BPL、DTL 和 Object Script 准备,并存储为 SQL 或 NoSQL 数据。 最后,它可以被 IRIS 内部的开放 ML 算法所消耗,并在 IRIS 仪表板中可视化。 了解详情:[https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE\_data\_science](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE_data_science)。
公告
Claire Zheng · 九月 26, 2023
Hi 开发者们,
是时候公布2023 InterSystems Python 编程大赛的获奖者了!
感谢所有提交15 份申请的出色参与者 🔥
专家提名奖
🥇第一名和 🥈第二名以及各4,000 美元由获得相同专家票数的两个应用程序共享:
iris-vector by @Dmitry Maslennikov
iris-GenLab by @Muhammad Waseem
🥉第三名 1,500 美元 iris-recorder-helper app by @Alexey Nechae
🏅第四名 750 美元 iris-python-machinelearn app by @André Dienes Friedrich
🏅第五名 500 美元 Face Login app by @yurimarx Marx
🌟 100 美元 native-api-command-line-py-client app by @Robert Cempe
🌟 100 美元 IRIS-Cloudproof-Encryption app by @LI XU
🌟 100美元 BardPythonSample app by @xuanyou du
🌟 100 美元 iris-python-lookup-table-utils app by Johannes Heinz
🌟 100 美元 apptools-django app by @Sergey Mikhailenko
开发者社区提名奖
🥇第一名1,000 美元 iris-vector app by @Dmitry Maslennikov
🥈第二名750 美元 iris-python-machinelearn app by @André Dienes Friedrich
🥉第三名500 美元iris-GenLab app by @Muhammad Waseem
🏅第四名 300 美元 BardPythonSample app by @xuanyou du
🏅第五名 200 美元 native-api-py-demo app by @shan yue
我们向所有参赛者和获奖者表示最诚挚的祝贺!
下次再一起享受乐趣吧;)
文章
Michael Lei · 七月 7, 2024
InterSystems 常见问题系列FAQ
流程如下
1. 上传到 FTP server
set tmpfile="c:\temp\test.jpg" set ftp=##class(%Net.FtpSession).%New() // connect to FTP server do ftp.Connect("","<username>","<password>") // set transfer mode to BINARY do ftp.Binary() // Move to the directory to upload do ftp.SetDirectory("/temp/upload") // Prepare a stream of files to upload set file=##class(%File).%New(tmpfile) do file.Open("UK\BIN\") // upload file // 1st argument: File name to create at upload destination // 2nd argument: File stream to upload do ftp.Store("test.jpg",file) // Logout from ftp server do ftp.Logout() // close the file do file.Close() // (Optional) Delete the uploaded file //do ##class(%File).Delete(tmpfile)
2. 从FTP服务器下载
set ftp=##class(%Net.FtpSession).%New() // Connect to ftp server do ftp.Connect("","<username>","<password>") // Set the transfer mode to BINARY do ftp.Binary() // Prepare a file stream to download and store set stream=##class(%FileBinaryStream).%New() do stream.LinkToFile("c:\temp\testdownload.jpg") // Go to the download directory do ftp.SetDirectory("/temp/download") // Download the file and close the stream do ftp.Retrieve("test.jpg",stream) do stream.SaveStream() Set stream="" // Logout from the ftp server do ftp.Logout()
文章
Michael Lei · 八月 17, 2024
各位社区成员,大家好,
利用面向您的组织中的各个角色提供的全套 InterSystems 学习资源(在线或面授形式),您可以全面挖掘 InterSystems IRIS 的潜力,并帮助您的团队完成入门流程。 开发者、系统管理员、数据分析师和集成商可以快速上手。
学习服务提供的资源
在深入学习角色特定的资源之前,我们先来总体了解一下现有的学习资源:
💻 在线学习:在 learning.intersystems.com 上免费注册,以访问自定进度的课程、视频和练习。 您还可以完成基于任务的学习路径或基于角色的计划,以促进您的职业发展。
👩🏫 课堂培训:查看直播、面授或虚拟课堂培训的时间安排,或为您的团队申请不公开课程。 访问 classroom.intersystems.com 了解详细信息。
📘 InterSystems IRIS 文档:全面的参考资料、指南和操作说明文章。 探索文档。
💬 开发者社区:与其他开发者互动、发布问题、阅读文章并及时了解最新公告。 请先阅读本帖,其中介绍了在开发者社区中学习的技巧。
📧 支持:如需获取技术支持,请发送电子邮件至 support@intersystems.com。
针对各个角色提供的入门资源
开发者
在线学习计划:面向程序员的 InterSystems IRIS 使用入门(21 小时)
课堂培训:使用 InterSystems 对象和 SQL 进行开发(5 天)
系统管理员
学习路径:InterSystems IRIS 管理基础(10 小时)
课堂培训:管理 InterSystems 服务器(5 天)
数据分析师
视频:使用 InterSystems 进行分析的简介(6 分钟)
学习路径:使用 InterSystems IRIS BI 分析数据
课堂课程:使用 InterSystems 嵌入式分析(5 天)
其他学习路径:利用 InterSystems 报告直观地交付数据(1 小时 15 分钟)和利用自适应分析构建数据模型(2 小时 15 分钟)
集成商
学习计划:面向集成商的 InterSystems IRIS for Health 使用入门(14 小时)
课堂培训:开发系统集成与构建和管理 HL7 集成(各 5 天)
学习路径:利用 InterSystems 构建 FHIR 集成(4 小时)和利用 InterSystems 使您的应用程序支持 FHIR(3 小时 30 分)
项目经理
观看产品概述视频。
阅读成功案例获得灵感 – 了解其他人如何使用 InterSystems 产品!
通过这些学习资源,您的团队将掌握相应知识,从而最大限度地利用 InterSystems IRIS 的功能,推动组织的发展并取得成功。 如需获取其他帮助,请随时在此发布问题或咨询您的专属销售工程师。
认证机会
在您和您的团队成员接受足够时长的培训并获得相应经验后,你们可以申请认证来证明在 InterSystems 技术方面具备相应的技能和专业知识:
开发者:InterSystems IRIS 核心解决方案开发专家
系统管理员:InterSystems IRIS 系统管理专家
集成商:InterSystems HL7 接口专家
公告
Claire Zheng · 七月 8, 2024
嗨,开发者,
我们很高兴邀请大家参加新的以 Python 为主题的 InterSystems 在线编程竞赛!
🏆 InterSystems 2024 Python 编程大赛 🏆
时间: 2024年7月15日-8月4日(美国东部时间)
奖金池: 14,000美元
话题
使用Python(或嵌入式Python)作为编程语言的InterSystems IRIS或InterSystems IRIS for Health或IRIS Cloud SQL开发任意解决方案。
一般要求:
应用程序或库必须具有完整的功能。它不应该是另一种语言中已经存在的库的导入或直接接口(C++除外,在C++中,您确实需要做大量的工作来为IRIS创建接口)。它不应是现有应用程序或库的复制粘贴。
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用程序应在 IRIS Community Edition 或 IRIS for Health Community Edition 上运行。两者都可作为host (Mac, Windows)版从Evaluation site下载,或者可以按从 InterSystems Container Registry或Community Container中提取的容器形式使用: intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest 。
该应用需开源并在GitHub上发布。
该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
一名开发者只允许提交 3 份作品。
请留意:我们的专家将根据复杂性和实用性的标准最终决定应用程序是否被批准参加比赛。他们的决定是最终决定,不得申诉。
奖品
1. 专家提名奖(Experts Nomination)——获奖者由我们特别挑选的专家团选出:
🥇第一名 - 5,000 美元
🥈第二名 - 3,000 美元
🥉第三名 - 1,500 美元
🏅第四名 - 750 美元
🏅第五名 - 500 美元
🌟第 6-10 位 - 100 美元
2. 社区提名奖(Community Nomination)—— 获得总票数最多的应用程序:
🥇第一名 - 1,000 美元
🥈第二名 - 750 美元
🥉第三名 - 500 美元
🏅第四名 - 300 美元
🏅第五名 - 200 美元
如果几位参与者获得相同数量的选票,他们都将被视为获胜者,奖金由获胜者分享。
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。
请注意,要在您的README文件中标注您的团队成员(成员的社区用户主页)。
重要截止日期:
🛠 应用程序开发和注册阶段:
2024年7月15日 (美国东部时间00:00):比赛开始。
2024年7月28日 (美国东部时间23:59):提交截止日期。
✅ 投票时间:
2024年7月29日 (美国东部时间00:00):投票开始。
2024年8月4日 (美国东部时间23:59):投票结束。
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用。
资源助力:
✓ 文档
Embedded Python Documentation
Native SDK for Python Documentation
PEX Documentation
✓ 示例应用及库
iris-fastapi-template
iris-django-template
iris-flask-template
interoperability-python
pex-demo
python-examples
Python Faker
✓ 在线课程
Learning Path Writing Python Application with InterSystems
✓ 视频
Introduction to Embedded Python
Embedded Python: Bring the Python Ecosystem to Your ObjectScript App
Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
Embedded Python with Interoperability
InterSystems IRIS Native Python API in AWS Lambda
✓ IRIS初学者
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ ObjectScript Package Manager (IPM) 初学者
How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and IPM
✓ 如果向大赛提交您的应用?
How to publish an application on Open Exchange
How to submit an application for the contest
需要帮助?
加入 InterSystems Discord server上的竞赛频道或跟帖留言。
期待您的精彩提交 - 加入我们的编程大赛吧!来赢得胜利!
❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
文章
Michael Lei · 七月 18, 2024
InterSystems 常见问题系列
使用 ErrorList 查询 SYS.ApplicationError 类.
注 1: 在 %SYS 命名空间中运行.
注 2: 这是个非存储的utility, 所以我们用 %ResultSet 类而不用 %SQL.Statement.
执行命令的例子如下.
USER>set $namespace="%SYS" //equal to zn "%SYS"
%SYS>set rset=##class(%ResultSet).%New()
%SYS>set rset.ClassName="SYS.ApplicationError"
%SYS>set rset.QueryName="ErrorList"
// The first argument of the query is the namespace name, the second argument is the date (in MM/DD/YYYY format).
%SYS>do rset.Execute("USER","08/17/2020")
// To display the results on the screen, execute the %Display() method.
%SYS>do rset.%Display()
Error # Error message Time Process DisplayPID Username Code line
1 <DIVIDE> 02:43:10 2536 2536 irisowner
1 Rows(s) Affected
%SYS>do rset.Close()
以下显示如何获得在浏览行时获取SELECT的列值The following shows how to get column values of a SELECT while navigating through rows.
使用Next()方法来移动到一行(如果行存在的话返回1)
获取一列的话使用 Get("column name"). 具体列名,请参考类文档里面的ErrorList 查询描述。
关于ErrorList 查询的列名.
%SYS>do rset.Execute("USER","08/17/2020")
%SYS>while rset.Next() { write rset.Get("Error #"),"-",rset.Get("Error message"),"-",rset.Get("Time"),"-",rset.Get("Code line"),!}
1-<DIVIDE>-02:43:10-
For terminal viewing, you can also use the ^%ER routine.
Execute the following while in the namespace you want to reference (the example is executed in the USER namespace).
The green bold underlined text indicates the input area.
USER>do ^%ER
For Date: ?L
Thu 09/17/2020 (T) 2 Errors
Mon 09/07/2020 (T-10) 3 Errors
Mon 08/31/2020 (T-17) 1 Error
Mon 08/24/2020 (T-24) 1 Error
For Date: 09/17/2020 17 Sep 2020 2 Errors
Error: ?L
1. " *a" at 9:05 am. $I=|TRM|:|13484 ($X=0 $Y=15)
$J=13484 $ZA=0 $ZB=$c(13) $ZS=262144 ($S=268271680)
2. "^%ETN" at 9:05 am. $I=|TRM|:|13484 ($X=0 $Y=17)
$J=13484 $ZA=0 $ZB=$c(13) $ZS=262144 ($S=268263368)
%ETN ;%STACK-related error log
Error: 1
1. " *a" at 9:05 am. $I=|TRM|:|13484 ($X=0 $Y=15)
$J=13484 $ZA=0 $ZB=$c(13) $ZS=262144 ($S=268271680)
Variable:
Error:
For Date:
USER>
日期: 错误发生的日期格式为 mm/dd/yyyy
错误: 明确错误编号.
看完之后,回车即可退出。
文章
Michael Lei · 十月 24, 2024
InterSystems FAQ
一个实例上的最大命名空间数量是 2047. 但是,要使用这么大量的命名空间,你需要相应地配置好内存。
一个实例里可以创建的数据库的最大数量(包括远程数据库) 15998. 根据授权的类型,可能会有所限制。具体细节请参考以下文档。Database Configuration [IRIS]Database Configuration
公告
Claire Zheng · 五月 8
Hi开发者们,
我们很高兴邀请大家参加我们的新一轮开发者竞赛。
🏆 InterSystems开发者竞赛:FHIR和数字医疗健康互操作性 🏆
时间: 2025年5月12日-6月1日(美国东部时间)
奖金池: 12,000美元
主题
使用InterSystems IRIS for Health、Health Connect或FHIR服务器,开发任何基于FHIR的互操作性解决方案,或医疗健康互操作性解决方案,或帮助开发或维护互操作性解决方案的应用程序或库(解决方案)。
一般要求:
应用程序或库必须具有完整的功能。它不应该是另一种语言中已经存在的库的导入或直接接口(C++除外,在C++中,您确实需要做大量的工作来为IRIS创建接口)。它不应是现有应用程序或库的复制粘贴。
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用程序应在IRIS Community Edition 或 IRIS for Health Community Edition上运行。均可作为host (Mac, Windows)版从 Evaluation site 下载,或者可以按从 InterSystems Container Registry或Community Container中提取的容器形式使用: intersystemsdc/iris-community:latest or intersystemsdc/irishealth-community:latest 。
该应用需开源并在GitHub或GitLab上发布。
该应用的README文件应为英文,包含安装步骤,以及应用程序的工作原理的视频演示或描述。
每位开发者最多只能提交3个作品。
注:我们的专家将根据作品的复杂性和实用性最终决定是否批准该作品参赛。他们的决定是最终决定,不可上诉。
奖品
1. 专家提名奖(Experts Nomination)——获奖者由我们特别挑选的专家团选出:
🥇第一名 - 5,000 美元
🥈第二名 - 2,500 美元
🥉第三名 - 1,000 美元
🏅第四名 - 500 美元
🏅第五名 - 300 美元
🌟第 6-10 名 - 100 美元
2. 社区提名奖(Community Nomination)—— 获得总票数最多的应用程序:
🥇第一名 - 1,000 美元
🥈第二名 - 600 美元
🥉第三名 - 300 美元
🏅第四名 - 200 美元
🏅第五名 - 100 美元
❗如果多名参与者获得相同票数,则他们都被视为获奖者,奖金将在获奖者之间平分。❗ 现金奖励仅发放给能够验证身份的获奖者。如有任何疑问,组织者将联系参与者并要求提供额外信息。
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。
请注意,要在您的README文件中标注您的团队成员(社区用户主页)。
重要截止日期:
🛠 应用程序开发和注册阶段:
2025年5月12日 (美国东部时间00:00): 竞赛开始
2025年5月25日 (美国东部时间23:59): 应用提交截止
✅ 投票时间:
2025年5月26日 (美国东部时间00:00): 投票开始
2025年6月1日(美国东部时间23:59): 投票截止
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用。
资源助力
✓ 文档
InterSystems IRIS for Health FHIR Components documentation
InterSystems Cloud FHIR Server documentation
InterSystems Interoperability documentation
Healthcare Data Transformations documentation
✓ 工具
Clinfhir - FHIR visualization and developer tool.
✓ 示例应用
FHIR Server Template
iris-healthtoolkit-template
interoperability-embedded-python
FHIR HL7 SQL Demo FHIR DropBox
HL7 and SMS Interoperability Demo
IrisHealth Ensdemo
UnitTest DTL HL7
Healthcare HL7 XML
FHIR Interoperability Examples
FHIR-Orga-dt
FHIR Peudoanonimisation Proxy
FHIR-client-java
FHIR-client-.net
FHIR-client-python
FHIR related apps on Open Exchange
HL7 applications on Open Exchange
✓线上课程
Interactive Digital Health Interoperability Foundation - An intro course into Digital Health Interoperability productions built with InterSystems IRIS for Health
FHIR Data Architecture
FHIR Integrations
HL7 Integrations
Learn FHIR for Software Developers
Exploring FHIR Resource APIs
Using InterSystems IRIS for Health to Reduce Readmissions
Connecting Devices to InterSystems IRIS for Health
Monitoring Oxygen Saturation in Infants
FHIR Integration QuickStart
✓ 视频
6 Rapid FHIR Questions
SMART on FHIR: The Basics
Developing with FHIR - REST APIs
FHIR in InterSystems IRIS for Health
FHIR API Management
Searching for FHIR Resources in IRIS for Health
✓ IRIS初学者
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ ObjectScript Package Manager (IPM) 初学者
How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and IPM
✓ 如何向大赛提交应用?
How to publish an application on Open Exchange
How to submit an application for the contest
需要帮助?
加入InterSystems' Discord server上的竞赛频道,或者在这篇帖子下面跟帖留言。
期待您的精彩提交 - 加入竞赛,来赢得胜利!👍
❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
问题
huang YG · 二月 27, 2024
02/21/24-18:32:48:515 (7568) 3 InterSystems IRIS Internal Failure
Access Violation (0xC0000005) occurred at 00007FFF3DE9C4E8
Process = 00001D90 Thread = 0000203C
Exception Count=1 b_msyslog=0 b_DumpVar=0 b_DumpVar2=0
b_GRelease=0 b_GRelease2=0 b_DeqRes=0 b_DeqRes2=0
Job Type = CSP server
ContextFlags = 0010005F Registers:
RAX=00007FFF3DE9C4E8 RBX=000000C2E5554800 RCX=000000C2E7AFFC00
RDX=000000C2E7B00000 RSI=00000000FFFFFFC0 RDI=00000000000003FF
RSP=000000C25CEBD2F8 RBP=0000000000000000 R8 =0000000000000001
R9 =00007FFF3DE60000 R10=000000C2E7AFFC00 R11=000000C2E7AFFC00
R12=0000000000005C9D R13=000000C2E46040E6 R14=00000000FFFFFFC0
R15=0000000000000000 RIP=00007FFF3DE9C4E8 EFL=10206
Stack: Base = 000000C25CEC0000, Limit = 000000C25CEA7000, Size = 00019000
00007FF74206EB9B 0000147B00000000 000000C2E55B7380 0000000000000000
00000000FFFFFFC0 0000000000000000 00000000000003FF 0000000000000000
00000000FFFFFFFE 000000C2E5554800 00007FF74206E727 00000000000015E6
000000C2E5554CC0 000000C2E5554800 000000C2E46017F0 000000C25CEBD380
000000C200000000 00007FF70000147B 000000C2E4600020 000000C2E4600020
00007FF741DFA094 0000000000007D00 0000000000200042 0000000000000000
00007FF7421FB1A0 000000C2E4600020 00000000FFFFFFC0 000000C2E5554800
00007FF742071703 000000C200000001 0000000000007D00 00007FF7421ECDC0
00007FF700000000 000000C200000001 00007FF700007D00 000000C200000000
00007FF741C38D9F 0000000000007D00 000000C2DAEFD7EE 00000000FFFFFFC0
0000000000000000 0000000000000000 00007FF741DC38E2 00007FF7421FB198
00007FF7421FB1A0 0000000000007D00 000000C2E5554800 FFFFFFFFFFFFFFFF
00007FF741DC7102 0000000000000000 0000000000007D00 00007FF7421FB1A0
00000000FFFFFFC0 0000000000007D00 00007FF7420490A7 00007FF7421FB198
00007FF7421ECDC0 000000C2E4600020 00007FF7421FB198 0000000000000001
00007FF741BFA0B0 00000000000002BB 000000C2E4600020 00007FF7421FB198
0000000000000175 0000000000000013 000000C2E4600068 000000C2E555BEC2
0000000000000000 0000000000000004 0000000000000000 000000C25CF3CC10
0000000000000100 0000000000000000 0000000000000000 0000000000000008
0000000000000001 0000000000000000 00007FF741F9D179 0000000000000000
000000C25CF30068 0000000000000004 0000000000000001 000000C25CEBF630
000000000000FFFF 0000000000000000 000000C2D3F5807F 000000C25CEBD59A
0000027F00001FA0 000000C25CEBD570 0000000000000000 000000C25CEBD570
000000C25CF3CC10 0000000000000001 0000000000000000 0000000000000100
0000000000000000 0000000000000000 0000000000000008 00007FF741F9D0B9
0000027F00001FA0 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 00007FF7421F185A 00007FF741E0E8E4 00007FF7421F185A
000000C25CF3CC10 0000000000000001 000000C25CF5E150 0074006100500053
Version = IRIS for Windows (x86-64) 2019.1 (Build 510_4U) Thu Jun 13 2019 15:29:51 EDT
Current Routine = zRead+13^%Stream.FileBinary.1, Principal Device = |TCP|51773|7568
Please contact InterSystems Technical Support with this information.
Tel: +1 (617) 621-0700 Fax: +1 (617) 494-1631 Email: support@intersystems.com
有人知道这是什么错误,怎么产生的,怎么处理 从截图来看估计要售后的团队来看,如果您是生产环境,请发给support@intersystems.com, 会有同事尽快处理
文章
Jeff Liu · 四月 17, 2024
Hey Community,
Play the new video on InterSystems Developers Bilibili官方频道:
⏯ 与 InterSystems 一起释放机器学习的力量
探索如何使用 InterSystems 的所有最新和最先进技术进行机器学习,包括
使用 SQL 和我们的 InterSystems Cloud SQL 服务进行特征工程。
使用 InterSystems IntegratedML 服务训练 ML 模型。
使用与 InterSystems IRIS 中的数据相连的 Jupyter Notebook 和 Python 训练 ML 模型。
使用 ObjectScript 和嵌入式 Python 将 ML 模型集成到应用程序中。
主讲人: 🗣 Marta Manzin, Senior Developer, InterSystems🗣 @Donald.Woodlock, Vice President of Healthcare, InterSystems🗣 @Alex.MacLeod, Director of HealthShare Commercial Initiatives, InterSystems
祝您观看愉快,并探索更多视频!👍
公告
Michael Lei · 一月 9
2024 年 12 月 4 日,系统警报和监视 (SAM) 已从 InterSystems 下载网站、容器注册表和文档网站移除。
InterSystems 去年宣布停止进一步开发 SAM,并同时将其标记为已弃用。InterSystems 将继续按照与超出最低支持版本窗口的产品版本相同的方式为使用此技术的现有客户提供支持。
Intersystems 发现,大多数对 SAM 提供的可观察性类型感兴趣的客户已选择将 InterSystems IRIS 指标 API 和结构化日志记录连接到其组织现有的可观察性平台,以便更全面地了解其运行平台。
如果您对 SAM 当前的使用方式或今后的使用计划有任何疑问,请联系您的客户团队或 dbpprodmgrs@intersystems.com。
文章
Michael Lei · 五月 12, 2021
本贴提供了在 VMware ESXi 5.5 及更高版本的环境中部署 Caché 2015 及更高版本时,关于配置、系统规模调整和容量规划等方面的指南。
我假定您已经了解 VMware vSphere 虚拟化平台,所以直接给出推荐。 本指南中的推荐不特定于任何具体硬件或站点特定的实现,也不应作为规划和配置 vSphere 部署的全面指南,而是一份您可以做出选择的最佳实践配置清单。 我希望您的 VMware 专家实施团队能针对具体站点对这些推荐进行评估。
[这里是 InterSystems 数据平台和性能系列的其他帖子的列表。](https://cn.community.intersystems.com/post/intersystems-数据平台的容量规划和性能系列文章)
_注:_本帖更新于 2017 年 1 月 3 日,强调必须为生产数据库实例设置虚拟机内存预留,以保证 Caché 有足够内存可用,并且不会出现内存交换或膨胀而对数据库性能产生负面影响。 更多详细信息,请参见下面的*内存*部分。
### 参考
本文中的信息基于经验和对公开的 VMware 知识库文章及 VMware 文档(例如 [VMware vSphere 性能最佳实践](https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/performance/vsphere-esxi-vcenter-server-67-performance-best-practices.pdf))的研究以及对 Caché 数据库部署要求的反映。
## ESXi 支持 InterSystems 的产品吗?
针对处理器类型和操作系统(包括虚拟化操作系统)验证和发布 InterSystems 产品是 InterSystems 的策略和程序。 有关详情,请参见 [InterSystems 支持策略](http://www.intersystems.com/services-support/product-support/virtualization/)和[版本信息](http://www.intersystems.com/services-support/product-support/latest-platform/)。
> 例如,在 x86 主机上的 ESXi 中,支持在 Red Hat 7.2 操作系统上运行 Caché 2016.1。
注:如果您不编写自己的应用程序,还必须检查应用程序供应商支持策略。
### 支持的硬件
在配合使用当前服务器和存储组件的情况下,VMware 虚拟化很适合 Caché。 使用 VMware 虚拟化的 Caché 已在客户站点成功部署,并且性能和可伸缩性已在基准测试中得到验证。 在配置正确的存储、网络和搭载较新型号的英特尔至强处理器(具体为英特尔至强 5500、5600、7500、E7 系列和 E5 系列,包括最新的 E5 v4)的服务器上使用 VMware 虚拟化不会对性能产生明显影响。
通常,Caché 和应用程序在客户机操作系统上的安装和配置方式与裸机操作系统上的安装和配置方式相同。
客户有责任查看 [VMware 兼容性指南](http://www.vmware.com/resources/compatibility/search.php),以了解所使用的特定服务器和存储。
# 虚拟化架构
VMware 常用于 Caché 应用程序的两种标准配置:
- 主生产数据库操作系统实例在“裸机”集群上,而 VMware 只用于其他生产和非生产实例,如 Web 服务器、打印、测试、训练等。
- 所有操作系统实例(包括主生产实例)均已虚拟化。
本帖可用作任一方案的指南,不过重点是第二个方案,即包括生产实例在内的所有操作系统实例均已虚拟化。 下图显示了该配置的典型物理服务器设置。
_图 1. 简单的虚拟化 Caché 架构_
图 1 显示了一个常见的包含至少三台物理主机服务器的部署,可通过 VMware HA 集群中的主机服务器提供 N+1 容量和可用性。 要扩展资源,可能要向集群添加额外的物理服务器。 备份/还原媒体管理和灾难恢复也可能需要额外的物理服务器。
有关特定于 _VMware vSAN_、VMware 的超融合基础架构解决方案的推荐,请参见以下帖子:[第 8 部分 超融合基础架构容量和性能规划](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-8-hyper-converged-infrastructure-capacity)。 本贴中的大部分推荐可以应用于 vSAN,除了下面的“存储”部分有一些明显差异。
# VMWare 版本
下表给出了针对 Caché 2015 及更高版本的主要推荐:
vSphere 是包括 vCenter Server 在内的产品套件,允许通过 vSphere 客户端对主机和虚拟机进行集中系统管理。
> 本帖假定将使用 vSphere,而不是“免费的”ESXi Hypervisor 单独版本。
VMware 有多种授权模式;最终选择取决于哪个模式最适合您当前和将来的基础架构规划。
我通常推荐“企业版”,因为它增加了功能,例如让硬件得到更有效利用的动态资源调度 (DRS),以及用于存储阵列整合(快照备份)的存储 API。 VMware 网站给出了版本比较。
还有高级套件,允许捆绑 vSphere 的 vCenter Server 和 CPU 许可证。 套件有升级限制,因此通常只推荐给不期望增长的小型站点。
# ESXi 主机 BIOS 设置
ESXi 主机是物理服务器。 在配置 BIOS 前,您应该:
- 向硬件供应商核实服务器是否正在运行最新的 BIOS
- 检查是否有服务器/CPU 型号特定的 BIOS 设置专门用于 VMware。
服务器 BIOS 的默认设置对于 VMware 可能不是最佳设置。 以下设置可以用来优化物理主机服务器以获得最佳性能。 并非下表中的所有设置在所有供应商的服务器上都可用。
# 内存
内存分配应考虑以下关键规则:
在单台物理主机上运行多个 Caché 实例或其他应用程序时,VMware 有多种技术可以实现高效的内存管理,如透明页共享 (TPS)、膨胀、交换和内存压缩。 例如,当多个操作系统实例在同一主机上运行时,TPS 可去除内存页的冗余副本,从而允许内存过载而不会降低性能,这使得虚拟机运行所占用的内存少于物理机所需内存。
> 注:必须在操作系统中安装 VMware Tools,才能利用 VMware 的这些功能和许多其他功能。
虽然这些功能的存在是为了允许内存过载,但建议务必先调整所有虚拟机的 vRAM 大小,以适应可用的物理内存。 在生产环境中,尤其重要的是要仔细考虑内存过载的影响,只有在收集数据以确定可能的过载量后,才能进行内存过载。 要确定给定 Caché 实例的内存共享有效性和可接受的过载程度,请运行工作负载并使用 Vmware 命令 `resxtop` 或 `esxtop` 来观察实际的内存节省情况。
在规划 Caché 实例内存要求时,建议回顾一下[本系列中关于内存的第四个帖子](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-part-4-looking-memory)。 尤其是“VMware 虚拟化注意事项”部分,其中的重点是:
> 在生产系统上设置 VMware 内存预留。
您想要*必须*避免任何共享内存交换,所以将生产数据库虚拟机内存预留设置为至少是 Caché 共享内存的大小加上 Caché 进程和操作系统及内核服务的内存。 如果有疑虑,则**预留整个生产数据库虚拟机内存(100% 预留)**,以保证 Caché 实例有足够内存可用,这样就不会出现内存交换或膨胀而对数据库性能产生负面影响。
注:较大的内存预留将影响 vMotion 运行,因此在设计 vMotion/管理网络时必须考虑到这一点。 只有目标主机的可用物理内存大于或等于预留内存的大小时,才能使用 Vmware HA 实时迁移虚拟机或在另一台主机上启动虚拟机。 这对于 Caché 生产虚拟机特别重要。 例如,要特别注意 HA 准入控制策略。
> 确保容量规划允许在 HA 发生故障转移时分配虚拟机。
对于非生产环境(测试、训练等),可以应用更积极的内存过载,但不要让 Caché 共享内存过载,而是通过减少全局缓冲区来限制 Caché 实例的共享内存。
当前的英特尔处理器架构具有 NUMA 拓扑。 处理器有自己的本地内存,并且可以访问同一主机中其他处理器上的内存。 毫无疑问,访问本地内存的延迟要低于远程内存。 有关 CPU 的讨论,请查看[本系列的第三个帖子](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-3-focus-cpu),_评论部分_中包括了关于 NUMA 的讨论。
如上面的 BIOS 部分所述,实现最佳性能的策略是,在理想情况下,将虚拟机规模调整为只达到单个处理器支持的最大核心数和内存量。 例如,如果容量规划显示最大的生产 Caché 数据库虚拟机将具有 14 个 vCPU 和 112 GB 内存,则考虑具有 2 个 E5-2680 v4(14 核处理器)和 256 GB 内存的服务器集群是否合适。
> **理想情况下**,调整虚拟机规模以使内存在 NUMA 节点本地。 但不要太过执着于此。
如果需要一个比 NUMA 节点大的“怪兽虚拟机”,那也没问题,VMware 将管理 NUMA 以获得最佳性能。 合理调整虚拟机的规模并且分配的资源不超过所需资源也很重要(参见下文)。
## CPU
虚拟 CPU 分配应考虑以下关键规则:
Caché 生产系统的规模应根据实际客户站点的基准测试和测量结果来确定。 对于生产系统,使用一开始就将系统规模调整为与裸机 CPU 核心数相同的策略,并根据最佳实践进行监测,看是否可以减少虚拟 CPU (vCPU)。
### 超线程和容量规划
根据物理服务器的规则调整__生产数据库__虚拟机规模的一个良好起点是,针对启用了超线程功能的目标处理器计算物理服务器 CPU 要求,然后简单地进行转换:
> 一个物理 CPU(包括超线程)= 一个 vCPU(包括超线程)。
一个常见的误解是,超线程以某种方式使 vCPU 容量增加了一倍。 这对于物理服务器或逻辑 vCPU 来说并不正确。 裸机服务器上的超线程可能会比没有超线程的相同服务器提升 30% 的性能,但这也会根据应用情况的不同而有所不同。
对于初始规模调整,假定 vCPU 具有完整的内核专用资源。 例如,如果您有一台 32 核(2 个 16 核)E5-2683 V4 服务器 – 总共多达 32 个 vCPU 的容量规模,且可能还有余量。 此配置假定在主机级别启用了超线程。 VMware 将管理主机上所有应用程序和虚拟机之间的调度。 在您花时间监测应用程序、操作系统和 VMware 在峰值处理期间的性能后,您可以决定是否进行更高度的整合。
### 授权
在 vSphere 中,可以为虚拟机配置一定数量的插槽或核心。 例如,如果有一个双处理器虚拟机(2 个 vCPU),则可以将其配置为两个 CPU 插槽,或一个具有两个 CPU 核心的插槽。 从执行的角度看,并没有多大区别,因为虚拟机监控程序将最终决定虚拟机是在一个还是两个物理插槽上执行。 但是,指定双 CPU 虚拟机实际有两个核心而不是两个插槽,会对软件许可证产生影响。 注:Caché 许可证以核心数为准(而非线程数)。
# 存储
> 本部分适用于更为传统的使用共享存储阵列的存储模型。 有关 _vSAN_ 的建议,另请参见以下帖子:[第 8 部分 超融合基础架构容量和性能规划](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-8-hyper-converged-infrastructure-capacity)
对于存储,应考虑以下关键规则:
## 针对性能调整存储大小
存储瓶颈是影响 Caché 系统性能的最常见问题之一,对于 VMware vSphere 配置也是如此。 最常见的问题是简单地按 GB 容量来调整存储大小,而不是分配足够多的磁盘主轴来支持预期的 IOPS。 在 VMware 中,存储问题可能更加严重,因为可能有更多主机通过相同的物理连接访问同一存储。
## VMware 存储概述
VMware 存储虚拟化可以分为三层,例如:
- 存储阵列是底层,由物理磁盘组成,以逻辑磁盘(存储阵列卷或 LUN)的形式呈现给上面的层。
- 下一层是 vSphere 占用的虚拟环境。 存储阵列 LUN 以数据存储的形式呈现给 ESXi 主机,并格式化为 VMFS 卷。
- 虚拟机由数据存储中的文件组成,所包含的虚拟磁盘以磁盘的形式呈现给客户机操作系统,可以对这些磁盘进行分区并在文件系统中使用。
VMware 为管理虚拟机中的磁盘访问提供了两种选择 — VMware 虚拟机文件系统 (VMFS) 和原始设备映射 (RDM),两者的性能相似。 为了简化管理,VMware 通常推荐 VMFS,但在某些情况下可能需要 RDM。 作为一般建议 – 除非有特别的理由使用 RDM,否则请选择 VMFS,_VMware 的新开发针对 VMFS 而非 RDM_。
### 虚拟机文件系统 (VMFS)
VMFS 是 VMware 开发的一种文件系统,专门针对集群虚拟环境(允许从多个主机进行读/写访问)和大型文件存储进行优化。 VMFS 的结构使虚拟机文件可以存储在一个文件夹中,从而简化了虚拟机管理。 VMFS 还支持 vMotion、DRS 和 VMware HA 等 VMware 基础架构服务。
操作系统、应用程序和数据存储在虚拟磁盘文件(.vmdk 文件)中。 vmdk 文件存储在数据存储中。 一个虚拟机可以由分布在几个数据存储上的多个 vmdk 文件组成。 如下图中的生产虚拟机所示,一个虚拟机可以包括分布在多个数据存储上的存储。 对于生产系统,每个 LUN 使用一个 vmdk 文件可实现最佳性能,对于非生产系统(测试、训练等),多个虚拟机 vmdk 文件可以共享一个数据存储和一个 LUN。
虽然 vSphere 5.5 支持的最大 VMFS 卷大小为 64TB,VMDK 大小为 62TB,但在部署 Caché 时,通常使用映射到不同磁盘组上的 LUN 的多个 VMFS 卷来分离 IO 模式并提高性能。 例如,随机或顺序 IO 磁盘组,或者将生产 IO 与其他环境的 IO 分开。
下图显示了与 Caché 一起使用的 VMware VMFS 存储示例的概览:
_图 2. VMFS 上的 Caché 存储示例_
### RDM
RDM 允许将原始 SCSI 磁盘或 LUN 作为 VMFS 文件来进行管理和访问。 RDM 是 VMFS 卷上的特殊文件,用作原始设备的代理。 对于大多数虚拟磁盘存储,推荐使用 VMFS,但在某些情况下可能需要使用原始磁盘。 RDM 仅适用于光纤通道或 iSCSI 存储。
### 用于阵列集成的 VMware vStorage API (VAAI)
为获得最佳存储性能,客户应考虑使用支持 VAAI 的存储硬件。 VAAI 可以在几个方面(包括虚拟机置备和精简置备的虚拟磁盘)提高性能。 对于较旧的阵列,可以向阵列供应商索取固件更新来支持 VAAI。
### 虚拟磁盘类型
ESXi 支持多种虚拟磁盘类型:
**厚置备** – 在创建时分配空间。 进一步分为:
- 快速置零 – 将 0 写入整个驱动器。 这会增加创建磁盘所需的时间,但可获得最佳性能,即使是第一次写入每个块。
- 延迟置零 – 首次写入每个块时写入 0。 延迟置零缩短了创建时间,但第一次写入块时会使性能降低。 不过,后续写入的性能与快速置零的厚磁盘相同。
**精简置备** – 在写入时分配空间并置零。 对未写入的文件块进行第一次写入时,会有较高的 I/O 成本(类似于延迟置零的厚磁盘),但在随后写入精简置备的磁盘时,性能与快速置零的厚磁盘相同。
_在所有磁盘类型中,VAAI 都可以通过将操作卸载到存储阵列来提高性能。_某些阵列还在阵列级别支持精简置备,请勿在精简置备的阵列存储上精简置备 ESXi 磁盘,因为置备和管理可能存在冲突。
### 其他备注
如上文所述,为了符合最佳实践,请使用与裸机配置相同的策略;生产存储可以在阵列级别分成多个磁盘组:
- 随机访问 Caché 生产数据库
- 顺序访问备份和日志,但也可以放置其他非生产存储,如测试、训练等
请记住,数据存储是存储层的抽象表示,因此,它是存储的逻辑表示而不是物理表示。 创建专门的数据存储以隔离特定的 I/O工作负载(无论是日志还是数据库文件),并且不隔离物理存储层,并不会对性能产生预期的影响。
虽然性能是关键,但共享存储的选择更多取决于站点现有或计划的基础架构,其次才是 VMware 的影响。 与裸机实现一样,FC SAN 的性能最好,推荐使用。 对于 FC,建议至少使用 8Gbps 的适配器。 只有在适当的网络基础架构到位的情况下,才能支持 iSCSI 存储,这包括:服务器和存储之间的网络中的所有组件上都必须支持至少 10Gb 的以太网和巨型帧 (MTU 9000),并且与其他流量分开。
对于数据库虚拟机或具有高 I/O 负载的虚拟机,使用多个 VMware 准虚拟 SCSI (PVSCSI) 控制器。 PVSCSI 可以提高整体存储吞吐量,同时降低 CPU 利用率,从而带来显著效益。 通过使用多个 PVSCSI 控制器,可以在客户机操作系统内执行多个并行 I/O 操作。 此外,建议通过单独的虚拟 SCSI 控制器将日志 I/O 流量与数据库 I/O 流量分开。 作为最佳实践,您可以将一个控制器用于操作系统和交换,另一个控制器用于日志,另外一个或多个控制器用于数据库数据文件(取决于数据库数据文件的数量和大小)。
众所周知,对齐文件系统分区是针对数据库工作负载的存储最佳实践。 物理机和 VMware VMFS 分区上均对齐分区可以防止因 I/O 跨越磁道边界而导致的 I/O 性能下降。 VMware 测试结果显示,将 VMFS 分区与 64KB 磁道边界对齐,可降低延迟并提高吞吐量。 按照存储和操作系统供应商的建议,使用 vCenter 创建的 VMFS 分区应与 64KB 边界对齐。
# 网络
对于网络,应考虑以下关键规则:
如上文所述,VMXNET 适配器比默认的 E1000 适配器具有更好的性能。 VMXNET3 允许 10Gb,并且使用更少的 CPU,而 E1000 只支持 1Gb。 如果各主机之间只有 1 Gb 的网络连接,那么客户端与虚拟机的通信不会有太大变化。 但是,VMXNET3 将允许同一主机上的虚拟机之间建立 10Gb 网络连接,这确实会带来改变,特别是在多层部署或者实例之间有高网络 IO 要求的情况下。 在计划关联性和反关联性 DRS 规则以将虚拟机保持在相同或不同的虚拟交换机上时,也应考虑此功能。
E1000 使用可用于 Windows 或 Linux 的通用驱动程序。 在客户机操作系统上安装 VMware Tools 之后,即可安装 VMXNET 虚拟适配器。
下图显示了一个典型的具有四个物理网卡端口的小型服务器配置,在 VMware 中配置了两个端口用于基础架构流量:用于管理和 vMotion 的 dvSwitch0,两个端口用于 VM 使用的应用程序。 使用网卡绑定和负载平衡来实现最佳吞吐量和 HA。
_图 3. 典型的具有四个物理网卡端口的小型服务器配置。_
# 客户机操作系统
推荐如下:
> 将 VMware Tools 加载到所有虚拟机操作系统中并保持该工具为最新是非常重要的。
VMware Tools 是一套实用工具,可增强虚拟机的客户机操作系统的性能,并改进对虚拟机的管理。 如果客户机操作系统中未安装 VMware Tools,则客户机性能会缺乏重要功能。
在所有 ESXi 主机上正确设置时间至关重要 - 这最终会影响客户机虚拟机。 虚拟机的默认设置是不将客户机的时间与主机同步 - 但在某些时候,客户机还是会与主机同步时间,并且如果超时,则已知会导致重大问题。 VMware 建议使用 NTP 而不是 VMware Tools 定期进行时间同步。 NTP 是行业标准,可确保客户机的计时准确。 可能需要开放防火墙 (UDP 123) 才能允许 NTP 流量。
# DNS 配置
如果 DNS 服务器托管在虚拟化基础架构上并且不可用,它会阻止 vCenter 解析主机名,使虚拟环境无法管理 - 然而虚拟机本身保持运行,没有问题。
# 高可用性
高可用性由 VMware vMotion、VMware Distributed Resource Scheduler (DRS) 和 VMware High Availability (HA) 等功能提供。 Caché 数据库镜像也可以用于增加正常运行时间。
为 Caché 生产系统设计 n+1 个物理主机是非常重要的。 在单个主机发生故障时,必须有足够的资源(例如 CPU 和内存)让其余主机上的所有虚拟机都能运行。 在服务器发生故障时,如果 VMware 无法在其余服务器上分配足够的 CPU 和内存资源,VMware HA 将不会在其余服务器上重新启动虚拟机。
## vMotion
vMotion 可以与 Caché 一起使用。 vMotion 允许以完全透明的方式将一个正常运行的虚拟机从一台 ESXi 主机服务器迁移到另一台。 虚拟机中运行的操作系统和 Caché 等应用程序没有服务中断。
使用 vMotion 进行迁移时,只有虚拟机的状态和内存(及其配置)会移动。 虚拟磁盘不需要移动;它保留在相同的共享存储位置。 虚拟机迁移后,它将在新的物理主机上运行。
vMotion 只能在共享存储架构(如共享 SAS 阵列、FC SAN 或 iSCSI)下工作。 由于 Caché 通常配置为使用大量共享内存,因此为 vMotion 提供充足的网络容量是非常重要的,1Gb 网络可能还可以,但也可能需要更高带宽,或者可以配置多网卡 vMotion。
## DRS
分布式资源调度器 (DRS) 是一种通过在集群中的不同主机服务器之间共享工作负载来在生产环境中自动使用 vMotion 的方法。 DRS 还具有对虚拟机实例实施 QoS 的能力,通过阻止非生产虚拟机过度使用资源来保护生产虚拟机的资源。 DRS 会收集有关集群主机服务器使用情况的信息,并通过在集群的不同服务器之间分配虚拟机工作负载来优化资源。 这种迁移可以自动或手动进行。
## Caché 数据库镜像
对于要求最高可用性的任务关键型一级 Caché 数据库应用实例,还应考虑使用 [InterSystems 同步数据库镜像](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GHA_mirror#GHA_mirror_set_bp_vm)。同时使用镜像的其他优势包括:
- 最新数据的单独副本。
- 故障转移在数秒内完成(比先重启虚拟机再重启操作系统再恢复 Caché 要快)。
- 在应用程序/Caché 发生故障(VMware 未检测到)时进行故障转移。
# vCenter Appliance
vCenter Server Appliance 是基于 Linux 的预配置虚拟机,针对 vCenter Server 和相关服务的运行进行了优化。 我一直建议拥有小型集群的站点使用 VMware vCenter Server Appliance 作为在 Windows 虚拟机上安装 vCenter Server 的替代方案。 在 vSphere 6.5 中,建议将该设备用于所有部署。
# 总结
本帖是在 VMware 上部署 Caché 时应考虑的关键最佳实践的综述。 这些最佳实践大多不是 Caché 独有的,而是可以应用于 VMware 上的其他一级业务关键型部署。
如果您有任何问题,请通过下面的评论告诉我。
公告
Michael Lei · 一月 5
2024.3 版 InterSystems IRIS® 数据平台、InterSystems IRIS® for Health 和 HealthShare® Health Connect 现已正式发布 (GA)。
版本亮点
在此版本中,您可以期待一系列激动人心的更新,包括:
数据库和 WIJ 文件的扩展速度大大提高
能够通过 Visual Trace 重新发送消息
增强的规则管理器功能
向量搜索增强功能
等等。
请通过开发者社区分享您的反馈,与我们共同打造更好的产品。
文档
请访问以下链接了解所有亮点功能的详细信息:
InterSystems IRIS 2024.3 文档、版本说明和升级检查核对清单。
InterSystems IRIS for Health 2024.3 文档、版本说明和升级检查核对清单。
Health Connect 2024.3 文档、版本说明和升级检查核对清单。
此外,请查看此版本的升级信息。
抢先体验计划 (EAP)
目前提供多个 EAP。 请查看此页面并注册您感兴趣的计划。
如何获取软件?
像往常一样,持续交付 (CD) 版本包含适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。
经典安装包
安装包可从 WRC 的 InterSystems IRIS、InterSystems IRIS for Health 和 Health Connect持续交付版本页面获取。此外,还可以在评估服务网站获取套件。
可用性和软件包信息
此版本提供适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅“支持的平台”文档。
安装包和预览版密钥可从 WRC 的预览版下载网站或通过评估服务网站获取。
此持续交付版本的版本号为:2024.3.0.217.0。
容器镜像可通过 InterSystems 容器注册表获取。 容器带有 2024.3 或 latest-cd 标签。