搜索​​​​

清除过滤器
公告
Michael Lei · 五月 11, 2022

InterSystems Kubernetes Operator 3.3 发布!

InterSystems Kubernetes Operation(IKO)3.3版现已通过WRC下载页面和InterSystems容器注册中心提供。IKO通过提供一个易于使用的irisCluster资源定义,简化了在Kubernetes中使用InterSystems IRIS或InterSystems IRIS for Health的工作。完整的功能清单见IKO文档,包括轻松的分片、镜像和ECP的配置。 IKO 3.3 亮点: 支持InterSystems IRIS和InterSystems IRIS for Health 2021.2 以及 2022.1版本 支持 Kuberentes 1.21 将常见的系统警报和监控(SAM)配置作为irisCluster的一部分进行部署 InterSystems API Manager(IAM)现在也可以作为 irisCluster的一部分进行部署和管理 自动标记Mirror对的活跃端,因此服务可以始终指向激活的镜像成员
公告
Michael Lei · 五月 16, 2022

DBeaver 官方支持 InterSystems IRIS

我们很高兴地宣布,从7.2.4版本开始,DBeaver已经支持开箱即用InterSystems IRIS的。 你不需要再手动配置它,只要在连接列表中找到IRIS的图标即可。 所有必要的字段都已填写。但是,请不要忘记输入你的用户名和密码。 默认情况下,InterSystems的IRIS驱动程序不包括在DBeaver中。对于第一次连接,DBeaver建议从InterSystems的官方GitHub仓库下载驱动程序。这个驱动程序将被用于所有进一步的连接。 目前的版本不包含IRIS的具体功能,但所有主要的DBeaver功能都将适用于你的数据库。 如果你认为可以添加其他重要的东西,请让我们知道。
文章
Johnny Wang · 十二月 19, 2021

洞察新的 InterSystems 速度测试

我经常发现自己与现存客户和潜在客户就他们在访问数据方面的挫败感进行对话。他们最常见的话题是围绕对“速度的需求”展开的——可以理解,这是非常正确的。 随着数据继续以指数速度增长,企业——无论是专注于医疗健康、金融服务、零售、物联网还是制造——不仅需要快速接收数据,还需要在同一实例中对其进行分析,以便能够执行程序化、标准化的行动进而做出关键的业务决策。 那好消息是什么呢?为并发数据提取和查询提供几乎瞬时的性能已成为现实,这也是我们多年来一直在 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 · 十一月 11, 2021

InterSystems开发者竞赛:安全

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 🏆 InterSystems开发者竞赛:安全 🏆 竞赛时间: 2021年11月15日-12月5日 奖金总额: $9,450! 奖项设置 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 🌟 第四名-第十名 - $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $500 🥉 第三名 - $250 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 参赛时间安排 🛠 11月15日 - 28日: 应用开发、提交阶段 ✅ 11月29日 - 12月05日: 投票阶段 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用 主题 在这次安全竞赛中,我们鼓励开发人员分享展示如何执行与InterSystems IRIS和InterSystems医疗版相关的安全任务的解决方案。我们邀请您贡献一些应用程序,这些应用程序将揭示与InterSystems安全模型(Security Model)的认证和授权部分相关的任务。 这些任务可以是: OAuth与OpenID SAML / LDAP身份验证实现。​ PKI 的实现 REST API某些部分的访问管理:应用程序级安全、角色/用户级安全。 对数据的访问管理:对数据库、表、列或行级别的访问。 对互操作性组件的访问 访问IRIS BI组件:cubes,枢轴,仪表板等。 授权(用户、角色、资源)和认证(OAuth)设置的DevOps问题。 与身份验证和授权相关的开发人员和支持工具。 你的奇思妙想! 要求: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition 上运行。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 资源助力 1. InterSystems IRIS初学者: Build a Server-Side Application with InterSystems IRIS Learning Path for beginners 2. 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 3. 如何将您的APP提交给大赛 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 4. 文档、课程和视频: Security Documentation Course: InterSystems Security Basics Video: Active Directory Integration with LDAP Video: Configuring a Web Server for IIS for Better Performance and Security Video: Webinar: Securing the Management Portal Video: Advances in Security Article: Building an FHIR Repository + OAuth2 Authorization Server/Resource Server Configuration on IRIS for Health Part 1 Article: InterSystems IRIS Open Authorization Framework (OAuth 2.0) implementation - part 1 Article: Protect your REST API applying OWASP Top Ten 参赛评比 投票规则即将发布,敬请期待! So! 期待您的精彩提交!加入我们的编程马拉松,赢取大奖。 ❗️ 点击此处,查看 官方竞赛条款解读.❗️
文章
Lilian Huang · 九月 1, 2022

InterSystems IRIS 中的数据模型

在我们开始谈论数据库和现有的不同数据模型之前,我们最好先谈谈什么是数据库以及如何使用它。 一个数据库是以电子方式存储和访问的有组织的数据集合。 它用于存储和检索通常与主题或活动相关的结构化、半结构化或原始数据。每个数据库的核心至少存在一个用于描述其数据的模型。 并且根据它所基于的模型,一个数据库可能具有略微不同的特征并存储不同数据类型。 要写入、检索、修改、排序、转换或打印数据库中的信息,需要使用称为数据库管理系统 (DBMS) 的软件。 数据库及其各自的数据库管理系统的大小、容量和性能增加了几个数量级。 各个领域的技术进步使之成为可能,例如处理器、计算机内存、计算机存储和计算机网络。 一般来说,数据库技术的发展根据数据模型或结构分为四代:导航型、关系型、对象型和后关系型。 与以特定数据模型为特征的前三代不同,第四代包括许多基于不同模型的不同数据库。 它们包括列、图、文档、组件、多维、键值、内存等。所有这些数据库都由一个单一的名称 NoSQL 联合起来(没有 SQL,或者现在更准确地说不仅仅是 SQL)。 而且,现在出现了一个新的类,叫做NewSQL。 这些是现代关系数据库,旨在为在线事务处理工作负载(读写)提供与 NoSQL 系统相同的可扩展性能,同时使用 SQL 和维护 ACID。 顺便说一下,在这些第四代数据库中,有那些支持上述提及的多种数据模型的数据库。 它们被称为多模型数据库。 这种类型的数据库的一个很好的例子是 InterSystems IRIS。 这就是为什么我将使用它来给出不同类型模型的示例。 第一代数据库使用分层或网络模型。 前者的核心是一个树形结构,即每条记录只有一个所有者。 您可以在 InterSystems IRIS 的示例中看到其工作原理,因为它的主要模型是分层的,并且所有数据都存储在globals(即 B*-trees)中。 您可以在此处here.阅读有关globals的更多信息。 我们可以在 IRIS 中创建这棵树: Set ^a("+7926X", "city") = "Moscow" Set ^a("+7926X", "city", "street") = "Req Square" Set ^a("+7926X", "age") = 25 Set ^a("+7916Y", "city") = "London" Set ^a("+7916Y", "city", "street") = "Baker Street" Set ^a("+7916Y", "age") = 36 在数据库中查看: 在 Edgar F. Codd 于 1969 年提出他的关系代数和他的数据存储理论之后,使用关系原理。之后,关系型数据库产生了。 关系(表)、属性(列)、元组(行)以及最重要的事务和 ACID 要求的使用使这些数据库非常流行,并且现在仍然如此。 例如,我们有架构: 我们可以创建和填充表: 如果我们编写查询: select p.ID, p.Name, a.Country, A.City from My.Person p left join My.Address a on p.Address = a.ID 我们将收到答案: 尽管关系数据库具有显着优势,但随着对象语言的普及,将面向对象的数据存储在数据库中变得很有必要。 这就是为什么 1990 年第一个面向对象(object-oriented )和对象关系数据库产生原因。 后者是在关系数据库的基础上通过添加附加组件来模拟对象工作而创建的。 前者是在 OMG(对象管理组)联盟的建议和 ODMG(对象数据管理组)之后从头开始开发的。 这些面向对象数据库的主要思想如下: 可以使用以下方式访问单个数据仓库: • 对象定义语言——模式定义,允许类定义、它们的属性、关系和方法, • 对象查询语言——声明性的,几乎类似于 SQL 的语言,允许从数据库中获取对象, • 对象操作语言——允许修改和保存数据库中的数据,支持事务和方法调用。 该模型允许使用面向对象的语言从数据库中获取数据。 如果我们采用与前面示例相同的结构但采用面向对象的形式,我们将拥有以下类: Class My.Person Extends %Persistent { Property Name As %Name; Property Address As My.Address; } Class My.Address Extends %Persistent { Property Country; Property City; } 我们可以使用面向对象的语言创建对象: set address = ##class(My.Address).%New() set address.Country = "France" set address.City = "Marseille" do address.%Save() set person = ##class(My.Person).%New() set person.Address = address set person.Name = "Quouinaut, Martin" do person.%Save() 不幸的是,对象数据库并没有成功地从其主导地位与关系数据库竞争,结果出现了许多对象关系映射技术。 无论如何,随着 2000 年代 互联网的普及和对数据存储的新要求的出现,其他数据模型和 数据库管理系统开始出现, 其中,IRIS 中使用了这些模型中的两个,即是文档模型和列模型。 面向文档的数据库用于管理半结构化数据。 这是不遵循固定结构并在其中携带结构的数据。 这种数据库中的每个信息单元都是一个简单的对:一个密钥和一个特定的文档。 该文档通常采用 JSON 格式并包含信息。 由于数据库不需要一定的模式,所以也可以在同一个仓库中集成不同类型的文档。 如果我们再看前面的例子,我们可以有这样的文档: { "Name":"Quouinaut, Martin", "Address":{ "Country":"France", "City":"Paris" } } { "Name":"Merlingue, Luke", "Address":{ "Country":"France", "City":"Nancy" }, "Age":26 } 这两个字段数不同的文档存储在 IRIS 数据库中没有任何问题。 2022.2 版中将提供的模型的最后一个示例是列模型。 在这种情况下,数据库管理系统是按列而不是按行存储数据表。 列方向允许更有效地访问数据以查询列的子集(无需读取不相关的列),并提供更多数据压缩选项。 当列中的数据相似时,按列压缩也更有效。 但是,它们在插入新数据时通常效率较低。 您可以这样创建此表: Create Table My.Address ( city varchar(50), zip varchar(5), country varchar(15) ) WITH STORAGETYPE = COLUMNAR 在这种情况下,类是这样的: Spoiler 然后我们插入数据: insert into My.Address values ('London', '47000', 'UK') insert into My.Address values ('Paris', '54000', 'France') insert into My.Address values ('Kyiv', '03000', 'Ukraine') 在globals里我们看到: 如果我们用city names打开globals,我们将看到 : 如果我们写一个查询: select City from My.Address 我们收到数据: 在这种情况下,数据库管理系统 只需读取一个全局变量即可获得整个结果。 并且在阅读时节省时间和资源。 因此,我们讨论了 InterSystems IRIS 数据库支持的 5 种不同的数据模型。 这些是层次模型、关系模型、对象模型、文档模型和列模型。 希望您在尝试找出可用的模型时会发现这篇文章很有用。 如果您有任何问题,请随时在评论中提出。
文章
jieliang liu · 一月 7, 2021

InterSystems 容器注册表介绍

我非常高兴地宣布,InterSystems 容器注册表现在可以使用了。 这为客户访问基于容器的版本及预览提供了新的渠道。 所有的社区版镜像都可在公共存储库中找到,且无需登录。 所有完整发布的镜像(IRIS、IRIS for Health、Health Connect、System Alerting and Monitoring、InterSystems Cloud Manager)和实用程序镜像(例如,仲裁器、Web 网关和 PasswordHash)都需要登录令牌,该令牌从 WRC 帐户生成。 WRC 发布网站暂时将继续以 tarball 方式提供已发布镜像。 不过,您现在可以配置 CI/CD 管道以直接从 InterSystems 容器注册表“docker pull”镜像。 可通过 https://containers.intersystems.com 访问该注册表。 有关完整的使用说明,请参阅下文或参阅文档(使用 InterSystems 容器注册表)。如果您遇到任何问题或有任何反馈要分享,请在下面的评论中告知我们,或联系 support@intersystems.com。-------------------------------------------------------------- 使用 InterSystems 容器注册表 本文档列出了 InterSystems 容器注册表 (ICR) 中可用的镜像,并提供了使用说明。该注册表位于 containers.intersystems.com 上。 可以使用 docker pull 命令下载 ICR 中的镜像,例如: docker pull containers.intersystems.com/intersystems/iris-community:2020.3.0.221.0 本文档包含以下部分: 公共像 受限访问镜像 对 ICR 进行身份验证 列出 ICR 清单 公共镜像 以下 ICR 镜像是公开可用的,无需身份验证即可拉取: InterSystems IRIS IntegratedML 2020.3 containers.intersystems.com/intersystems/iris-ml-community:2020.3.0.302.0 Community Edition 2020.3 containers.intersystems.com/intersystems/iris-community:2020.3.0.221.0 2020.3 ARM64 containers.intersystems.com/intersystems/iris-community-arm64:2020.3.0.221.0 InterSystems IRIS for Health IntegratedML 2020.3 containers.intersystems.com/intersystems/irishealth-ml-community:2020.3.0.302.0 Community Edition 2020.3 containers.intersystems.com/intersystems/irishealth-community:2020.3.0.221.0 2020.3 ARM64 containers.intersystems.com/intersystems/irishealth-community-arm64:2020.3.0.221.0 System Alerting and Monitoring 1.0 containers.intersystems.com/intersystems/sam:1.0.0.115 以下 ICR 镜像仅对经过身份验证的用户可用:受限访问镜像 以下 ICR 镜像是公开可用的,无需身份验证即可拉取: Arbiter 2020.1 containers.intersystems.com/intersystems/arbiter:2020.1.0.215.0 2020.2 containers.intersystems.com/intersystems/arbiter:2020.2.0.211.0 2020.3 containers.intersystems.com/intersystems/arbiter:2020.3.0.210.0 Health Connect 2020.1 containers.intersystems.com/intersystems/healthconnect:2020.1.0.215.0 InterSystems Cloud Manager (ICM) 2020.1 containers.intersystems.com/intersystems/icm:2020.1.0.215.0 2020.2 containers.intersystems.com/intersystems/icm:2020.2.0.211.0 2020.3 containers.intersystems.com/intersystems/icm:2020.3.0.221 InterSystems IRIS 2020.1 containers.intersystems.com/intersystems/iris:2020.1.0.215.0 2020.2 containers.intersystems.com/intersystems/iris:2020.2.0.211.0 2020.3 containers.intersystems.com/intersystems/iris:2020.3.0.221.0 2020.1 ARM64 containers.intersystems.com/intersystems/iris-arm64:2020.1.0.215.0 2020.2 ARM64 containers.intersystems.com/intersystems/iris-arm64:2020.2.0.211.0 2020.3 ARM64 containers.intersystems.com/intersystems/iris-arm64:2020.3.0.221.0 2020.3 IntegratedML containers.intersystems.com/intersystems/iris-ml:2020.3.0.302.0 InterSystems IRIS for Health 2020.1 containers.intersystems.com/intersystems/irishealth:2020.1.0.217.1 2020.2 containers.intersystems.com/intersystems/irishealth:2020.2.0.211.0 2020.3 containers.intersystems.com/intersystems/irishealth:2020.3.0.221.0 2020.1 ARM64 containers.intersystems.com/intersystems/irishealth-arm64:2020.1.0.217.1 2020.2 ARM64 containers.intersystems.com/intersystems/irishealth-arm64:2020.2.0.211.0 2020.3 ARM64 containers.intersystems.com/intersystems/irishealth-arm64:2020.3.0.221.0 2020.3 IntegratedML containers.intersystems.com/intersystems/irishealth-ml:2020.3.0.302.0 PasswordHash 1.0 containers.intersystems.com/intersystems/passwordhash:1.0 Web Gateway 2020.2 containers.intersystems.com/intersystems/webgateway:2020.2.0.211.0 2020.3 containers.intersystems.com/intersystems/webgateway:2020.3.0.221.0 要登录至 ICR,请执行以下步骤:对 ICR 进行身份验证 在您的浏览器中加载 https://containers.intersystems.com/,然后使用您的 InterSystems/WRC 凭据登录。 检索您的 Docker 登录令牌或完整的登录命令。 在 Docker 界面(例如,PowerShell 窗口或 Linux 命令行)中,使用提供的凭据对 ICR 进行身份验证。 您可以通过复制并粘贴显示的完整 docker login 命令来执行此操作,例如: docker login -u="bbinstoc" -p="provided_password" containers.intersystems.com 但是,出于安全原因,您可能想要输入命令 docker login container.intersystems.com,然后在 Username 提示符下输入用户名并将密码粘贴到 Password: 提示符下。 注意:如果您登录到另一个 Docker 注册表,则 docker login 命令可能会导致错误;登录到 container.intersystems.com 之前,请先注销其他注册表。 现在,您可以从 ICR 中拉取镜像,例如: docker pull containers.intersystems.com/intersystems/iris:2020.3.0.221.0 列出 ICR 清单 API 可用于列出 Docker 注册表中的镜像和标签。 可用于列出注册表清单的开源第三方实用程序的一个示例是 docker-ls ,其可从 https://github.com/mayflower/docker-ls 获取。 获取此实用程序的方法有几种。 你可以: 下载用于各种平台的预编译 docker-ls 二进制文件。 直接在某些平台上安装该实用程序,例如,在 Linux 系统上使用以下命令进行安装: sudo snap install docker-ls 在 Linux 平台上拉取并运行镜像 carinadigital/docker-ls:latest 以安装该实用程序,例如: docker run --rm carinadigital/docker-ls:latest 安装 docker-ls 后,您可以使用以下命令列出 ICR 中的存储库: docker-ls repositories --registry https://containers.intersystems.com --user username --password password 注意:使用 --interactive-password 选项提示输入密码,不要在命令行中输入密码。 要仅列出公开可用的镜像,请为 -user 和 --password 选项提供空字符串 ("") 作为参数, 例如,以下仅列出了公共 InterSystems IRIS for Health 镜像的标签: docker-ls tags --registry https://containers.intersystems.com --user "" --password "" intersystems/irishealth-community 如果希望看到非公共镜像的完整列表,则无论是否登录 container.intersystems.com,都需要向该实用程序提供用户名和密码。 可访问 https://github.com/mayflower/docker-ls 了解其他示例。
文章
Claire Zheng · 一月 20, 2021

InterSystems API 管理器简介

大家可能已经听说过,我们近期推出了InterSystems API管理器 (以下简称IAM)。InterSystems IRIS数据平台™新增了一项功能,支持用户监视、控制和管理IT基础架构中基于Web的API间通信。 在本文中,我将向大家展示如何设置IAM,并重点介绍IAM中可用的一些功能。InterSystems API管理器可提供你所需的一切功能。 监视基于HTTP的API通信,并了解谁在使用你的API、你最受欢迎的API是什么,哪些可能需要重新实现。 使用多种方式对API用户进行控制及限制。从简单的访问限制、API流量限制,到请求有效负载微调,你可以进行细粒度控制并快速做出反应。 使用集中式安全机制(如OAuth2.0或密钥和令牌身份验证)保护API。 招募第三方开发人员,为第三方开发人员提供一个专门的开发门户来满足他们的需求,并从一开始就为他们提供良好的开发体验。 扩展API需求并实现低延迟响应。 我很高兴为大家介绍IAM,让您一睹为快。 入门 从WRC Software Distribution站点下载IAM,并将其部署为自身的docker容器。 请确保满足以下最低要求: Docker引擎可用。最低支持版本是17.04.0+。 Docker-compose CLI工具可用。最低支持版本是1.12.0+。 第一步需要加载docker镜像,通过如下: docker load -i iam_image.tar 这样一来,IAM镜像可在你的计算机进行后续使用。IAM作为一个独立运行的容器,可以单独从InterSystems IRIS后端对其进行扩展。 启动IAM前,需要访问IRIS实例来加载所需的许可证信息。须进行以下配置更改: 启用/api/IAM web应用程序 启用IAM用户 更改IAM用户密码 现在,我们可以开始配置IAM容器了。在distribution tarball里可以找到一个名为“iam-setup”的Windows和Unix系统脚本。该脚本可帮助你正确地设置环境变量,使IAM容器能够与InterSystems IRIS实例建立连接。这是我在Mac终端会话中的运行示例: source ./iam-setup.sh Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx Enter the web server port for your InterSystems IRIS instance: 52773Enter the password for the IAM user for your InterSystems IRIS instance: Re-enter your password: Your inputs are:Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxxWeb server port for your InterSystems IRIS instance: 52773Would you like to continue with these inputs (y/n)? yGetting IAM license using your inputs...Successfully got IAM license!The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/licenseWARNING: The environment variable is set for this shell only!To start the services, run the following command in the top level directory: docker-compose up -dTo stop the services, run the following command in the top level directory: docker-compose downURL for the IAM Manager portal: http://localhost:8002 我隐藏了IP地址和密码,但这足以让大家了解配置是多么简单。现在我们得到了开始下一步前所需的全部内容:InterSystems IRIS实例的完整镜像名称、IP地址和端口,以及IAM用户密码。 现在可以通过执行以下命令启动IAM容器: docker-compose up -d 该命令将开始协调IAM容器,并确保以正确的顺序启动所有内容。 你可以使用以下命令检查容器的状态: docker ps 在浏览器中输入localhost:8002会出现基于web的用户界面: 因为这是一个全新的节点,所以全局报告中未显示任何吞吐量。但我们很快就会改变这个情况。我们可以看到,IAM支持“Workspace(工作区)”概念,将工作划分为“module”和/或“team”。向下滚动并选择“default”工作区会将我们带到“Dashboard”界面。我们将在“default”工作区开始首次实验。 同样,这个工作区的请求数量也是零,但是你可以先在左侧的菜单中了解一下API网关的重要概念。前两个元素——即服务和路由——是最重要的。服务是指向用户公开的API。因此,IRIS实例中的REST API被视为一种服务,就像你所使用的Google API一样。路由决定应将传入请求路由到哪些服务。每个路由都有一组特定的条件,如果满足这些条件,就会将请求路由到相关的服务。大家需要了解的是,路由可以匹配发送者的IP或域、HTTP方法、部分URI,或者其中的几种。 现在让我们创建一个IRIS实例的服务,其值如下: 保留其他所有内容的默认设置。现在让我们创建一个路由: 同样,对其他所有内容保留默认设置。默认情况下,IAM正在监听端口8000上的传入请求。从现在开始,发送到http://localhost:8000并以/api/atelier路径开头的请求将被路由到IRIS实例。 让我们在REST客户端尝试一下(我使用的是Postman)。 向http://localhost:8000/api/atelier/发送一个GET请求会从IRIS实例返回一个响应。每个请求都经过IAM,并监视HTTP状态码、延迟和用户(如果已配置)等指标。我接着发出了另外几个请求(包含对不存在的端点的两个请求,如/api/atelier/test/),可以在Dashboard中看到汇总: 使用插件 既然已经有了一个基本的路由,那么可以开始管理API流量了。现在我们可以开始添加补充服务的行为。现在可以创造奇迹了。 执行某种行为最常见的方法就是添加插件。插件可提供一些功能,并且通常可以附加到IAM的某个部分。它们可能会对全局运行产生影响,也可能只对单个用户(组)、服务或路由等产生影响。首先,我们在路由中添加限速插件。此时需要确保插件和路由之间建立的链接是路由的唯一ID。这些可以从路由的详细信息里找到。 如果按照本文的步骤进行,那么你的路由ID是不一样的。复制ID继续下一步。 单击左侧工具栏菜单上的“Plugins”。通常可以在此界面上看到所有的活动插件,但由于这个节点相对较新,所以未显示任何活动插件。选择“Add New Plugin”继续下一步。 我们要选择的插件在“Traffic Control”类中,名为“Rate Limiting”。选中该插件。由于插件非常灵活,所以我们可以在这里定义非常多的字段,但现在我们只关心两个字段: 如上所示,插件已配置并处于活动状态。你可能已经发现有多种时间间隔可以选择,比如分钟、小时或天。我特意选择了分钟,因为这样可以让我们很容易理解这个插件产生的效果。 如果在Postman中再次发送相同的请求,会发现响应返回了两个附加的头信息:XRateLimit-Limit-minute (value 5) 和XRateLimit-Remaining-minute(value 4)。这是在告诉客户端,每分钟最多可以调用5次,并且在当前时间间隔内还有4个请求可用。 如果不断地发出相同的请求,最终会用完可用配额,得到一个带有以下负载的HTTP状态码429: 等这一分钟结束后,就可以再次调用。这是一个非常方便的机制,可以完成以下工作: 1. 确保后端避免高峰值 2. 为客户端设置一个期望值,即允许以透明的方式为服务进行多少次调用 3. 引入分级制有望从API流量中获利(例如,青铜级别每小时调用100次,而黄金级别则不受限制) 你可以为不同的时间间隔设置值,从而在一定时期内平滑API流量。假设允许某条路由每小时进行600次调用,平均每分钟调用10次。但是,你没有阻止客户端在一小时的第一分钟就用光600次调用(也许这就是你想要的)。也行你想让负载在一个小时内分配得更均匀。将config_minute字段设置为20,这样就可以确保用户每分钟调用的次数不超过20次,每小时不超过600次。这将使分钟级别的间隔出现一些峰值,因为它们平均每分钟只能调用10次,但用户不能在一分钟内用完一小时配额。现在,至少需要30分钟,系统才会达到满负荷运行。客户端将在每个配置的时间间隔内收到附加标头,例如: header value X-RateLimit-Limit-hour 600 X-RateLimit-Remaining-hour 595 X-RateLimit-Limit-minute 20 X-RateLimit-Remaining-minute 16 当然,可以采用多种不同的方法配置rate-limits,这取决于你想要实现的目标。 对此我不再做过多介绍,因为作为一篇介绍InterSystems API Manager的文章,上述介绍已经足够了。IAM还可以用来实现更多的事情。我们刚刚只用了40多个插件中的一个,甚至还没有使用到所有的核心概念,你还可以实现以下任务: 为所有服务添加集中式身份验证机制 通过负载均衡请求扩展到支持同一组API的多个目标 向更小的受众介绍新特性或bugfixes,并在向大家发布之前监视的进展情况 为内部和外部开发人员提供一个专用的、可自定义的开发人员门户,记录他们有权访问的所有API 缓存常见的请求响应,以减少响应延迟和服务系统上的负载 所以,请大家试一试IAM,并在下面评论区留下建议。我们努力推出这一功能,希望了解大家可以使用这项技术克服哪些挑战。 更多资源 官方新闻稿:InterSystems IRIS Data Platform 2019.2 introduces API Management capabilities 短动画视频概述:什么是InterSystems API Manager?(英文) What is InterSystems API Manager 8分钟小视频带你了解主要亮点:InterSystems API管理器简介(英文) Introducing InterSystems API Manager 选自IRIS文档部分内容:InterSystems API管理器文档(英文) InterSystems API Manager Documentation 注:本文为译文,欢迎点击查看原文,原文由Stefan Wittmann撰写 IAM 是只能在docker 里运行吗? 对,目前IAM提供的是容器版本。如果有对IAM的需求,可以联系InterSystems的销售和销售工程师。 欢迎联系Intersystems 中国服务热线:400-601-9890,谢谢!
文章
Qiao Peng · 三月 5, 2021

InterSystems IRIS 元素周期表

InterSystems IRIS 元素周期表 PDF 版本: GIT 源: InterSystems IRIS 是一个具有许多功能的数据平台。 这些功能和相关的 IRIS 主题都体现在元素周期表中。

#InterSystems API管理器(IAM)

14 帖子0 关注者
文章
Michael Lei · 十二月 13, 2022

InterSystems IRIS 嵌入式 Python 模板

嵌入式 Python 模板 今天你们分享一个简单的[嵌入式 Python 模板](https://openexchange.intersystems.com/package/iris-embedded-python-template),我建议将其作为任何使用 InterSystems IRIS 并将使用嵌入式 Python 的通用项目的起点。 功能: * 随时可用的嵌入式 Python; * 3 种嵌入式 Python 开发方式示例; * 随时可用的 VSCode 开发; * 支持 Docker; * 支持在线演示; * 随时可用的 ZPM 优先开发。 下面讨论一下这些功能! 我们先来谈谈嵌入式 Python。 此功能在 InterSystems IRIS 2021.2 中提供,它允许使用 InterSystems IRIS 通过 Python 开发解决方案。 IRIS 2021.2 及以上版本允许使用 InterSystems IRIS 在共享内存环境中执行 Python 脚本,这为 Python 开发者在使用代码与数据相近的数据库时提供了独特的选项。  ### 3 种使用嵌入式 Python 进行开发的模式 ### **从 ObjectScript 调用 Python 库** 此操作因 [%SYS.Python](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&CLASSNAME=%25SYS.Python) 类而变为可能,该类允许导入 Python 库并通过 ObjectScirpt 调用 Python。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_callpython_library)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/be578226b7a0c583df1f7b693b1bdae074efb1bd/src/dc/python/PersistentClass.cls#L17)。 请查看以下代码: <span class="hljs-keyword">ClassMethod</span> Today() <span class="hljs-keyword">As</span> <span class="hljs-built_in">%Status</span> { <span class="hljs-keyword">Set</span> sc = <span class="hljs-built_in">$$$OK</span> <span class="hljs-keyword">Set</span> dt = <span class="hljs-keyword">##class</span>(<span class="hljs-built_in">%SYS.Python</span>).Import(<span class="hljs-string">"datetime"</span>) <span class="hljs-keyword">write</span> dt.date.today().isoformat() <span class="hljs-keyword">Return</span> sc } ### 使用 Python 编写 ObjectScript 类方法 事实上,现在开发者可以使用纯 Python 在方法签名和代码中添加 [Language=python] 标签。 还有一个辅助 Python 库“iris”,可以用于引用 ObjectScript 类和全局变量。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_runpython_method)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/src/dc/python/PersistentClass.cls#L17)、示例代码: ClassMethod CreateRecordPython(propValue As %VarString, ByRef id As %Integer) [ Language = python ] { <span class="hljs-keyword">import</span> iris obj=iris.cls(__name__)._New() obj.Test=propValue sc=obj._Save() id=obj._Id() <span class="hljs-keyword">return</span> sc } ### 使用纯 Python 编写 InterSystems IRIS 解决方案代码 这是开发者可以选择的第三种处理 IRIS 的方式。  这里,Python 脚本需要连接到 IRIS,此操作可以通过环境变量和设为“On”的 CallIn 服务来完成,请参见下面的详细信息。 设置完后,使用 IRIS 在共享内存中执行 Python 脚本。 在这里,“iris”库也非常有用。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_runpython_script)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/python/irisapp.py)。  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create_rec</span><span class="hljs-params">(var)</span>:</span> obj=iris.cls(<span class="hljs-string">'dc.python.PersistentClass'</span>)._New() obj.Test=var obj._Save() id=obj._Id() <span class="hljs-keyword">return</span> id <span class="hljs-comment"># test record creation</span> <span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime now=str(datetime.now()) print(<span class="hljs-string">"Creating new record in dc.python.PersistentClass"</span>) print(create_rec(now)) <span class="hljs-comment">## run SQL and print data</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">run_sql</span><span class="hljs-params">(query)</span>:</span> rs=iris.sql.exec(query) <span class="hljs-keyword">for</span> idx, row <span class="hljs-keyword">in</span> enumerate(rs): print(<span class="hljs-string">f"[<span class="hljs-subst">{idx}</span>]: <span class="hljs-subst">{row}</span>"</span>) query=<span class="hljs-string">"Select * from dc_python.PersistentClass"</span> print(<span class="hljs-string">"Running SQL query "</span>+query) run_sql(query) ### 支持 Docker 模板仓库在容器中运行 IRIS,并设置嵌入式 Python 调整所需的所有内容。  环境变量。 嵌入式 Python 需要设置特定的环境变量来连接到 IRIS 并运行 Python 脚本。 下面是 [dockerfile](https://github.com/intersystems-community/iris-embedded-python-template/blob/be578226b7a0c583df1f7b693b1bdae074efb1bd/Dockerfile#L13-L17) 中有帮助的设置: # init Python env ENV PYTHON_PATH=/usr/irissys/bin/irispython ENV SRC_PATH=/irisrun/repo ENV IRISUSERNAME "SuperUser" ENV IRISPASSWORD "SYS" ENV IRISNAMESPACE "USER" 此外,嵌入式 Python 需要将 CallIn 服务设为“on”,此操作在构建 docker 的阶段在 [iris.script](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/iris.script#L7) 中完成: <span class="hljs-comment">; enabling callin for Embedded Python</span> <span class="hljs-keyword">do</span> <span class="hljs-keyword">##class</span>(Security.Services).Get(<span class="hljs-string">"%Service_CallIn"</span>,.prop) <span class="hljs-keyword">set</span> prop(<span class="hljs-string">"Enabled"</span>)=<span class="hljs-number">1</span> <span class="hljs-keyword">set</span> prop(<span class="hljs-string">"AutheEnabled"</span>)=<span class="hljs-number">48</span> <span class="hljs-keyword">do</span> <span class="hljs-keyword">##class</span>(Security.Services).Modify(<span class="hljs-string">"%Service_CallIn"</span>,.prop) 另外,您的解决方案可能需要安装一些 Python 库。 这通过仓库根目录中的 [requirements.txt](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/requirements.txt) 和 [dockerfile](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/Dockerfile#L22) 中的 pip3 调用来实现: pip3 install -r requirements.txt && \ ### 随时可用的 VSCode 开发 使用 docker 在 VSCode 中开发非常方便。 如果想要在 docker IRIS 解决方案中使用嵌入式 Python 进行开发,VSCode 需要切换到 [Devcontainer 模式](https://code.visualstudio.com/docs/remote/containers)。 为此,将 [devcontainer.json 文件](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/.devcontainer/devcontainer.json)添加到 .devcontainer 文件夹中。 该文件描述了需要使用的 docker 服务(本例中为 iris),这可以帮助在 VSCode 中运行 Python 脚本,这些脚本将由在容器中运行的 IRIS 使用的 Python 引擎提供服务。 devcontainer.json 文件还有一个部分,其中说明了需要在容器模式下使用哪些[扩展](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/.devcontainer/devcontainer.json#L43): "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "intersystems-community.vscode-objectscript", "intersystems.language-server", "intersystems-community.servermanager", "ms-vscode.docker" ], ### 通过 ZPM 安装嵌入式 Python 解决方案 此模板被设置为“ZPM 优先”开发仓库。 这意味着所有开发代码都已在 module.xml 中介绍,并且每次构建 docker 镜像时都作为 ZPM 模块安装,开发者每次编码时都在 iris.script 中使用[以下行](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/iris.script#L13)开头: zpm "load /home/irisowner/irisbuild/ -v":1:1 ZPM 模块中还介绍了嵌入式 Python 代码,它通过 [FILECOPY](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/module.xml#L11) 进行安装: <FileCopy Name="python/" Target="${libdir}python/"/> 此表达式表示,我们想要将所有 Python 脚本打包在仓库中的 /python 文件夹下,并将其安装在目标 IRIS 安装程序的 libdir 的 python/ 文件夹中。 如果将 Python 脚本复制到 ${libdir}python/ 文件夹下,则可以在目标 IRIS 机器中通过 ObjectScirpt 或 Python 对其进行导入调用。 _**注意: 确保您的文件夹名称唯一,以免意外替换其他 Python 代码。**_ 希望该模板对您有用。 欢迎提供反馈,尤其是拉取请求!
文章
Lilian Huang · 四月 28, 2023

InterSystems 嵌入式 Python 概览

嗨社区,在本文中,我将演示 InterSystems Embedded Python 的用法,我们将涵盖以下主题: 1-嵌入式Python概述 2-嵌入式Python的使用 2.1- 从 ObjectScript 使用 Python 库 2.2- 从 Python 调用 InterSystems API 2.3- 一起使用 ObjectScript 和 Python 3-使用python内置函数 4-Python 模块/库 5 个嵌入式 Python 用例 5.1- 使用 python Reportlab 库打印 PDF 5.2-使用Python二维码库生成二维码 5.3- 使用 Python Folium 库获取 GEO 位置 5.4- 通过使用在交互式地图上生成和标记位置 Python Folium 库 5.5- 使用 Python Pandas 库进行数据分析 6-总结 我们从概述开始 1-嵌入式Python概述 嵌入式 Python 是 InterSystems IRIS 数据平台的一项功能,它允许 Python 开发人员完全直接地访问 InterSystems IRIS 中的数据和功能。 InterSystems IRIS 带有一种名为 ObjectScript 的强大内置编程语言,可在数据平台内部进行解释、编译和运行。 因为 ObjectScript 在 InterSystems IRIS 的上下文中执行,所以它可以直接访问数据平台的内存和过程调用。 嵌入式 Python 是 Python 编程语言的扩展,允许在 InterSystems IRIS 进程上下文中执行 Python 代码。 因为 ObjectScript 和 Python 都在同一个对象内存上操作,可以说 Python 对象不只是模拟 ObjectScript 对象,它们本身就是 ObjectScript 对象。 这些语言的这种共同平等意味着您可以选择最适合工作的语言,或者您最习惯用来编写应用程序的语言。 2-嵌入式Python的使用 使用嵌入式 Python 时,您可以用三种不同的方式编写代码。 2.1 - 从 ObjectScript 使用 Python 库 首先,您可以编写一个普通的 .py 文件并从 InterSystems IRIS 上下文中调用它。在这种情况下,数据平台将启动 Python 进程并允许您导入一个名为 IRIS 的模块,该模块会自动将 Python 进程附加到 IRIS 内核,并让您可以从 Python 代码的上下文中访问 ObjectScript 的所有功能。 2.2 - 从 Python 调用 InterSystems API 其次,您可以编写普通的 ObjectScript 代码并使用 %SYS.Python 包实例化 Python 对象。这个 ObjectScript 包允许您导入 Python 模块和库,然后使用 ObjectScript 语法处理该代码库。%SYS.Python 包使不了解 Python 的 ObjectScript 开发人员能够在其 ObjectScript 代码中使用丰富的 Python 库生态系统。 2.3 - 一起使用 ObjectScript 和 Python 第三,您可以创建一个 InterSystems 类定义并用 Python 编写方法。对该方法的任何调用都会启动 Python 解释器。此方法的好处是使用对包含类实例的引用填充该 Python 代码块的 self 关键字。此外,通过使用 Python 在 InterSystems 类中编写类方法,您可以轻松实现处理 SQL 中不同数据输入事件的方法,例如将新行添加到表中。它还允许在 Python 中快速开发自定义存储过程。 如您所见,嵌入式 Python 允许您在不牺牲性能的情况下选择最适合工作的编程语言。 3-使用Python内置函数 Python 解释器有许多内置的函数和类型,它们总是可用的。它们按字母顺序列在此处。 内置函数 A -----100----- -----101----- -----102----- -----103----- -----104----- -----105----- 乙 -----106----- -----107----- -----108----- -----109----- -----110----- C -----111----- -----112----- -----113----- -----114----- -----115----- 丁 -----116----- -----117----- -----118----- -----119----- 乙 -----120----- -----121----- -----122----- F -----123----- -----124----- -----125----- -----126----- G -----127----- -----128----- H -----129----- -----130----- -----131----- -----132----- 我 -----133----- -----134----- -----135----- -----136----- -----137----- -----138----- 大号 -----139----- -----140----- -----141----- 米 -----142----- -----143----- -----144----- -----145----- 否 -----146----- 欧 -----147----- -----148----- -----149----- -----150----- P -----151----- -----152----- -----153----- R -----154----- -----155----- -----156----- -----157----- 小号 -----158----- -----159----- -----160----- -----161----- -----162----- -----163----- -----164----- -----165----- 吨 -----166----- -----167----- V -----168----- Z -----169----- _ -----170----- 使用 python内置函数为了使用 python 内置函数,我们必须导入“builtins”,然后我们才能调用该函数 -----171----- Python print() 函数实际上是内置模块的一个方法,因此您现在可以从 ObjectScript 使用此函数: -----172----- -----173----- 同样,您可以使用 help() 方法获取有关列表对象的帮助。 -----174----- 4-Python 模块或库 一些 python 模块或库是默认安装的,并且已经可以使用。通过使用 help("module" 函数我们可以查看这些模块: 安装 python 模块或库 除了这些模块之外,python 还有数百个模块或库,可以在pypi.org查看( Python 包索引 (PyPI) 是 Python 编程语言的软件存储库) 如果我们需要一些其他的库,那么我们需要使用 intersystems irispip 命令安装这些库 比如 Pandas 就是 python 数据分析库。以下命令使用包安装程序 irispip 在 Windows 系统上安装 pandas: -----175----- 请注意 C:\InterSystems 将替换为 Intersystems 安装目录 5 个嵌入式 Python 用例 5.1-使用python Reportlab库打印PDF 我们需要使用 irispip 命令安装 Reportlab 库,然后创建 objectscript 函数。 给定一个文件位置,以下 ObjectScript 方法 CreateSamplePDF() 创建一个示例 PDF 文件并将其保存到该位置。 Class Demo.PDF { ClassMethod CreateSamplePDF(fileloc As %String ) As %Status { set canvaslib = ##class ( %SYS.Python ).Import( "reportlab.pdfgen.canvas" ) set canvas = canvaslib.Canvas(fileloc) do canvas.drawImage( "C:\Sample\isc.png" , 150 , 600 ) do canvas.drawImage( "C:\Sample\python.png" , 150 , 200 ) do canvas.setFont( "Helvetica-Bold" , 24 ) do canvas.drawString( 25 , 450 , "InterSystems IRIS & Python. Perfect Together." ) do canvas.save() } } 该方法的第一行从 ReportLab 的 pdfgen 子包中导入 canvas.py 文件。第二行代码实例化一个 Canvas 对象,然后继续调用它的方法,这与调用任何 InterSystems IRIS 对象的方法的方式非常相似。 然后您可以按照通常的方式调用该方法: do ##class(Demo.PDF).CreateSamplePDF("C:\Sample\hello.pdf") 生成以下PDF并保存在指定位置: 5.2-使用Python二维码库生成二维码 为了生成二维码,我们需要使用irispip命令安装Qrcode库,然后使用下面的代码我们可以生成二维码: 5.3-使用Python Folium库获取GEO位置 为了获取地理数据,我们需要使用 irispip 命令安装脚本库 Folium ,然后创建以下对象脚本函数: Class dc.IrisGeoMap.Folium Extends %SwizzleObject { // Function to print Latitude, Longitude and address details ClassMethod GetGeoDetails(addr As %String ) [ Language = python ] { from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent= "IrisGeoApp" ) try : location = geolocator.geocode(addr) print ( "Location:" ,location.point) print ( "Address:" ,location.address) point = location.point print ( "Latitude:" , point.latitude) print ( "Longitude:" , point.longitude) except: print ( "Not able to find location" ) } } 连接到 IRIS 终端并运行以下代码 do ##class(dc.IrisGeoMap.Folium).GetGeoDetails("Cambridge MA 02142") 下面将是输出: 5.4-通过使用Python Folium库在交互式地图上生成并标记位置 我们将使用同样的 Python Folium 库在交互式地图上生成和标记位置,下面的对象脚本函数将完成所需的操作: ClassMethod MarkGeoDetails(addr As %String , filepath As %String ) As %Status [ Language = python ] { import folium from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent= "IrisGeoMap" ) #split address in order to mark on the map locs = addr.split( "," ) if len(locs) == 0 : print ( "Please enter address" ) elif len(locs) == 1 : location = geolocator.geocode(locs[ 0 ]) point = location.point m = folium.Map(location=[point.latitude,point.longitude], tiles= "OpenStreetMap" , zoom_start= 10 ) else : m = folium.Map(location=[ 20 , 0 ], tiles= "OpenStreetMap" , zoom_start= 3 ) for loc in locs: try : location = geolocator.geocode(loc) point = location.point folium.Marker( location=[point.latitude,point.longitude], popup=addr, ).add_to(m) except: print ( "Not able to find location : " ,loc) map_html = m._repr_html_() iframe = m.get_root()._repr_html_() fullHtml = """ <!DOCTYPE html> <html> <head></head> <body> """ fullHtml = fullHtml + iframe fullHtml = fullHtml + """ </body> </html> """ try : f = open (filepath, "w" ) f. write (fullHtml) f. close () except: print ( "Not able to write to a file" ) } 连接到 IRIS 终端并调用 MarkGeoDetails 函数 我们将调用 dc.IrisGeoMap.Folium 类的 MarkGeoDetails() 函数。该函数需要两个参数: location/locations(我们可以通过在中间添加“,”来传递多个位置) HTML文件路径 让我们运行以下命令在地图上标记 Cambridge MA 02142、NY、London、UAE、Jeddah、Lahore 和 Glasgow,并将其保存为“irisgeomap_locations.html”文件 do ##class(dc.IrisGeoMap.Folium).MarkGeoDetails("Cambridge MA 02142,NY,London,UAE,Jeddah,Lahore,Glasgow","d:\irisgeomap_locations.html") 上面的代码将生成以下交互式 HTML 文件: 5.5-使用 Python Pandas 库进行数据分析 我们需要使用irispip命令安装Pandas库,然后我们可以使用下面的代码查看数据 6-总结 InterSystems嵌入式Python(IEP)是一个强大的功能,它允许你将Python代码与你的InterSystems应用程序无缝集成。有了IEP,你可以利用Python中的大量库和框架来增强你的InterSystems应用程序的功能。在这篇文章中,我们将探讨IEP的主要特点和好处。 IEP是作为一组库实现的,它使你能够在InterSystems应用程序中与Python对象交互并执行Python代码。这为将Python代码集成到你的InterSystems应用程序中提供了一个简单有效的方法,使你能够执行数据分析、机器学习、自然语言处理和其他在InterSystems ObjectScript中可能难以实现的任务。 使用IEP的主要优势之一是它提供了一种弥合Python和InterSystems世界之间差距的方法。这使得我们可以很容易地利用两种语言的优势来创建强大的应用程序,将两个世界的优点结合起来。 IEP还提供了一种方法,通过利用Python的功能来扩展你的InterSystems应用程序的功能。这意味着你可以利用Python中大量的库和框架来完成那些在InterSystems ObjectScript中可能难以实现的任务。 InterSystems Embedded Python提供了一个强大的方法,通过利用Python的能力来扩展你的InterSystems应用程序的功能。通过将Python代码集成到你的InterSystems应用程序中,你可以利用Python中大量的库和框架来执行在InterSystems ObjectScript中可能难以实现的复杂任务。 谢谢。
公告
Michael Lei · 二月 5, 2022

学技术,练听力,尽在Intersystems 系联在线培训广播电台

听IRIS 专家聊IRIS,学技术,练英语听力,尽在Intersystems 系联在线培训广播电台 https://datapoints.intersystems.com. 21. Embedded Python — Released February 3, 2022 20. The InterSystems Kubernetes Operator — Released July 27, 2021 [Transcript available] 19. What's New in Version 2021.1 of InterSystems IRIS? — Released June 3, 2021 18. The InterSystems IRIS® FHIR® Accelerator Service — Released May 5, 2021 17. The Analytics & AI Landscape — Released April 6, 2021 16. A Cloud DBMS Visionary — Released January 27, 2021 15. Writing ObjectScript in VS Code — Released November 17, 2020 14. Previewing Virtual Summit Experience Labs — Released September 25, 2020 13. What's New in Online Learning? — Released August 12, 2020 12. Empowering Users Through Chat — Released July 9, 2020 11. User Experience at InterSystems — Released June 15, 2020 10. All About SAM: System Alerting & Monitoring — Released May 28, 2020 9. Healthcare Interoperability: Part 2 — Released May 13, 2020 8. Healthcare Interoperability: Part 1 — Released April 24, 2020 7. Introducing InterSystems Reports — Released April 7, 2020 6. InterSystems Certification — Released March 24, 2020 5. Mirroring Databases for High Availability — Released March 9, 2020 4. Optimizing Your SQL Performance — Released February 24, 2020 3. IntegratedML in InterSystems IRIS — Released February 11, 2020 2. What is Kubernetes? — Released February 11, 2020 1. What is InterSystems IRIS? — Released February 11, 2020
文章
Claire Zheng · 四月 21, 2021

InterSystems Caché系统运维培训:InterSystems Caché架构、备份与恢复

近日,InterSystems极客俱乐部举办了线上直播“InterSystems Caché系统运维培训”,这是系列视频之一。InterSystems中国资深售前顾问吕正之讲解了“InterSystems Caché架构、备份与恢复”。
文章
Claire Zheng · 四月 3, 2023

InterSystems 技术征文大赛(InterSystems IRIS教程)获奖名单出炉!

亲爱的社区开发者们: 感谢第四届 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 · 六月 20

InterSystems IRIS、InterSystems IRIS for Health 和 HealthShare Health Connect 2025.1 正式发布

InterSystems 宣布 InterSystems IRIS、InterSystems IRIS for Health 和 HealthShare Health Connect 2025.1 正式发布 2025.1 版的 InterSystems IRIS® 数据平台、InterSystems IRIS® for HealthTM 和 HealthShare® Health Connect 现已正式发布 (GA)。 这是扩展维护 (EM) 版本。 版本亮点 在这个激动人心的版本中,用户可以期待一些新功能和增强,包括: 高级向量搜索功能 新的基于磁盘的近似最近邻 (ANN) 索引显著提高了向量搜索查询速度,在数百万个向量上产生亚秒级响应。 请访问以下练习,了解更多信息 - 使用 InterSystems SQL 对文本进行向量化和搜索。 增强的商业智能 IRIS BI 多维数据集构建和同步中的自动依赖项分析,确保复杂多维数据集依赖项中的一致性和完整性。 改进的 SQL 和数据管理 引入了标准 SQL 分页语法 (LIMIT... OFFSET..., OFFSET... FETCH...)。 新的 LOAD SQL 命令,可以简化 DDL 语句的批量导入。 增强的 ALTER TABLE 命令,可以在行布局和列布局之间无缝转换。 优化的数据库操作 日志记录大小更小,效率更高。 数据库压缩速度更快,尤其是对于具有大量大字符串内容的数据库。 将新数据库添加到镜像时的自动化程度更高。 用于 ECP 管理任务的新命令行实用工具。 更高的安全合规性 支持符合 FIPS 140-3 标准的加密库。 现代化的互操作性用户界面 选择参与经过改进的生产配置和 DTL 编辑器体验,其中包含源代码控制集成、VS Code 兼容性、增强的筛选功能、分屏视图等。请参阅此开发者社区文章,详细了解如何选择参与并提供反馈。 更多的医疗保健功能 高效的批量 FHIR 引入和调度,包括完整性检查和资源管理。 增强的 FHIR 批量访问和经过改进的 FHIR 搜索操作。 新的开发者体验功能 DTL 编辑器中支持嵌入式 Python,可以让精通 Python 的开发者更高效地利用 InterSystems 平台。 要了解详情,请观看以下视频 - 在 BPL 和 DTL 编辑器中使用嵌入式 Python。 通过 OpenTelemetry 提高可观测性 在 IRIS 中引入了跟踪功能,有助于详细观测 Web 请求和应用程序的性能。 请通过开发者社区分享您的反馈,以便我们可以共同打造更出色的产品。 文档 访问以下链接,可以详细了解所有着重介绍的功能: InterSystems IRIS 2025.1 文档和版本说明。 InterSystems IRIS for Health 2025.1 文档和版本说明。 Health Connect 2025.1 文档和版本说明。 此外,请查看升级影响核对清单,轻松了解升级到此版本时需要注意的所有变更。 尤其是,请注意 InterSystems IRIS 2025.1 引入了新的日志文件格式版本,该格式与早期版本不兼容,因而给混合版本的镜像设置带来了一定的限制。 请参阅相应的文档了解更多详细信息。 抢先体验计划 (EAP) 目前提供多个 EAP。 请查看此页面并注册您感兴趣的 EAP。 下载软件 一如既往,扩展维护 (EM) 版本提供了适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。 经典安装包 安装包可以从 WRC 的 InterSystems IRIS 页面(对于 InterSystems IRIS 和 InterSystems IRIS for Health)和 WRC 的 HealthShare 页面(对于 Health Connect)获取。 您也可以在评估服务网站中找到工具包。 可用性和软件包信息 此版本提供了适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅“支持的平台”文档。 此扩展维护版本的内部版本号为 2025.1.0.223.0。 容器镜像可以从 InterSystems 容器注册表中获取。 容器被标记为 2025.1 和 latest-em。