搜索​​​​

清除过滤器
公告
Claire Zheng · 一月 28, 2022

InterSystems 开发者竞赛:Python

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 这次我们聚集Python! 🏆 InterSystems Python竞赛🏆 竞赛时间: 2022年2月7日 - 27日 奖金总额: $10000 - 更多获奖机会! 奖品 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 🌟 第四名-第十五名 - $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $750 🥉 第三名 - $500 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 参赛时间安排 🛠 2月7日 - 20日: 应用开发、提交阶段。 ✅ 2月21日 - 27日: 投票阶段。 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用 主题 最新 发布 的 InterSystems IRIS 2021.2版本提供了 Embedded Python 功能,而且将 PEX 扩展到 Python. 我们邀请您在一个新的编程竞赛中使用嵌入式Python ! 也欢迎使用Python原生API或Python PEX的应用程序。 提交一个开源的应用程序,通过InterSystems IRIS或InterSystems IRIS for Health(医疗版)使用嵌入式Python或原生Python API或Python PEX。 一般要求 有效应用程序: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开发Python应用: Learning Path Writing Python Application with InterSystems Embedded Python Documentation Native API for Python Documentation PEX Documentation 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提交给大赛: How to publish an application on Open Exchange How to submit an application for the contest 4. 项目示例 interoperability-python pex-demo python-examples WebSocket AOC2021 Python Faker 5. 视频 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 参赛评比 投票规则即将发布,敬请期待! So! 期待您的精彩提交– 加入我们的编程马拉松,赢取大奖! ❗️ Please check out the Official Contest Terms here.❗️
文章
Nicky Zhu · 八月 10, 2022

InterSystems 数据平台互操作功能运行维护管理基础 - 互操作消息管理

InterSystems 数据平台的互操作功能与久经考验的Ensemble和HealthConnect集成引擎产品一脉相承。事实上,使用IRIS的典型客户不但应用了IRIS提供的多模型数据存储、分布式存储等数据存储特性,也广泛地应用如可视化数据转换,可视化数据流程编辑和可视化规则引擎等一系列互操作能力构建异构系统间或组织机构间的数据流程。 那么,在生产环境上,如何监控与评估数据流程的运行状况,在发生问题时如何快速定位并解决故障,就是用户的运维团队需要考虑的问题。 本系列文章将围绕IRIS互操作功能中核心的互操作消息管理,Production管理与优化及互操作告警与通知三个方面介绍互操作功能的运维基础知识和常用技巧,希望能够帮助客户平稳、高效地运用数据平台。 注:本文提到的InterSystems数据平台,包括Caché数据库、Ensemble集成平台、HealthConnect医疗版集成平台和InterSystems IRIS数据平台。 互操作消息管理 消息是互操作功能中各组件间通信的基本方法,在互操作Production业务服务、业务流程和业务操作之间广泛使用。 除承担信息传递的基本功能外,由于常常需要在生产环境中查看消息内容或重发消息以解决问题,消息检索就是大家最常用到的功能,而IRIS特有的结构化消息存储也为开发和运维团队使用和管理消息创造了便利。用户能够通过消息的内容,某项具体属性,来源/目标和发生时间等条件检索和过滤消息,迅速找到自己感兴趣的信息。 我们先回顾下消息的结构与关联的上下文。 消息结构 如图所示,消息分为消息头与消息体两部分。其中消息头(标头)主要用于记录消息发生的来源、趣向、时间和消息类型等上下文信息,而消息体(正文)则为消息的具体内容。 而在消息的上下文中,会话是一个比较重要的概念,它用于表达一次交互过程中,从初始的输入所触发的所有消息。在使用时,需要注意: Message Trace将显示一个会话的所有信息 消息查看器默认只列出会话开始的信息(绿色消息) 消息检索 下图即为平台自带的消息查看器,可通过Ensemble > 查看 > 消息导航访问(Ensemble菜单项在IRIS和HealthConnect产品中的名称为Interoperability,位置,含义均相同,下文中将不再赘述)。 可见其中包含若干预制条件及可灵活扩展的查询条件以应对不同场景的需求。 需要注意的是,对检索所需的消息体或头属性建立索引很重要。因为在生产环境中,production中的消息存量可以轻易达到百万、千万甚至亿级,对于海量数据不经过索引进行检索就性能而言不可行。 应用SQL检索消息 如果需要,也可以使用SQL语句进行搜索 系统资源管理器SQL执行查询。 在运行前切换到正确的命名空间。 可以参考消息查看器使用的SQL语句来修改 在Terminal中,在执行搜索的命名空间中运行以下代码。 Set ^Ens.Debug("UtilEnsMessages", "sql")=1 在消息查看器中执行搜索 根据需要从消息查看器复制、修改和执行SQL。 需要SQL知识 用户可直接运用平台提供的SQL示例检索消息,这样的SQL也为用户学习和掌握IRIS持久话消息的结构和辅助函数等概念提供了基础。 用户在熟悉消息结构,并了解SQL的条件下,配合Search Table、索引等特性,可以实现更复杂的基于消息内容的查询。 其中,关于Search Table的应用,用户也可参考我们的另一篇文章《互操作消息统一管理系列:SearchTable加速检索》。此处不再赘述。 异常消息的处理 重发消息 借助消息的持久化,当通信异常导致消息传递失败时,用户也可通过重发消息重新触发业务 挂起消息 如果业务组件运行错误,可能会挂起消息 手动停止消息 队列查看页 > 选择业务组件 > 挂起按钮 组件配置页 > 作业 > 挂起按钮 挂起后消息保持静止,等待手工处理 用户也可有针对性地查看和处理被挂起的消息。 查看挂起消息 Ensemble > 查看 > 已挂起的消息 重发已挂起消息 从已挂起消息页重发将发送被挂起的这条消息 从消息查看器重发将复制并发送一条新的消息 中断消息 IRIS的业务组件有自动重发消息的能力。但但运维团队明确远端故障已发生,短期内重发消息没有意义时,也可下达指令丢弃消息,不再进行后续处理。 业务组件处于重试状态时 组件配置页 > 作业 > 放弃按钮 Ensemble > 监视器 > 队列 > 点击业务组件 > 选择活动的消息 > Abort 或 Abort All 按钮 中断被堆积的消息 Ensemble > 监视器 > 队列 > 点击业务组件 > 选择排队的消息 > Abort 或 Abort All 按钮
文章
Nicky Zhu · 八月 10, 2022

InterSystems 数据平台互操作功能运行维护管理基础 - Production管理与优化

Production是开发者基于InterSystems IRIS产品家族实现互操作功能的主要技术架构。而每个Production的运行依赖于三类主要的业务组件: 业务服务(Business Service) 业务流程(Business Process) 业务操作(Business Operation) 三类组件间以消息作为信息交换的主要媒介。因此,要保障互操作业务的稳定运行,除保障软件平台有充足的软硬件资源运行外,保障Production中消息的高效传输以及三类组件的平稳、高效运行则是运维团队面临的主要目标。下面列举的若干项任务则有助于运维团队实现这些目标: 优化业务组件运行效率 Production中的业务组件都有运行池的概念,允许业务组件运行在多个进程上并发工作以提高整体性能。运行池又可以分为私有池和参与者池两类。 私有运行池 业务组件的CPU作业的数量 默认为1即可工作 通过性能测试确定最佳的池大小 拥有私有池的业务组件从私有队列中处理消息 无适配器业务服务的池大小需设置为0 需要多进程时,池大小设为1可以保证信息以先进先出(FIFO)顺序处理 整个消息流中的所有业务组件的池大小都不应大于1 参与者池 Production级的参与者池设置 用于处理公共队列中的请求的CPU作业的数量 由使用公共队列的所有业务流程共享。 业务流程和业务操作的池大小设置。 0 - 使用参与者池和公共队列 非0--使用私人队列,有指定的CPU作业数 对于FIFO,设置池大小=1 参与者池与业务流程的启停 任何一个池大小为0(仅使用公有池)的业务流程被禁用时,所有的参与者都不会启动 防止任何池大小为0的业务组件从公共队列中处理消息 要保障其他参与者正常工作 将要被禁用的组件的Pool Size改为大于0并应用 如果已经禁用,要启动其他参与者 保持组件禁用,但将其Pool Size为大于0并应用 Production的运行维护 Production本身具备一系列的运行状态管理功能,帮助运维团队在生产环境上处理Production运行的一系列任务,包括 Production运行维护 – 自动启动 Ensemble > 管理 自动启动Production > 选择要自动启动的Production 在Ensemble启动时自动启动Production 如果需要的话,会自动调用RecoverProduction()方法,恢复Production状态 系统级启用开关 系统管理 > 配置 > 其他设置 > 启动 > EnsembleAutoStart 默认情况下为 "真"。 在排除故障时,可能需要禁用。 Production运行维护 – 强制关闭 如果Production关闭得太慢 等待关闭超时 显示强制关闭按钮 Production运行维护 – 更新 运行的组件与它的底层类代码不同步,需要Production来更新 业务组件进程因错误而意外关闭,需要重新启动 设置的改变需要业务组件重新启动 更新按钮出现在Production配置页面。 Production运行维护 – 恢复 在非正常关机和一些错误之后出现 如果需要,自动启动Production将在启动前自动恢复 Production运行维护 – 中断 在配置页面上显示 Production被关闭时如果满足如下条件之一: 有同步消息在等待响应。 或者,队列非空,意味着Production还没处理完消息 或者,消息仍在被组件处理 或者,有级别较高的告警请求 Production中断后的选项 重新启动Production以完成消息的处理 如果启动后消息仍然被组件不断重试(提示故障未排除) 修复导致重试的问题 挂起消息 中断消息 在测试系统中(决不能是生产系统),如果你决定必须完全清除所有队列,请调用Ens.Director类的CleanProduction()方法 do ##class(Ens.Director).CleanProduction() Production的配置 Production本身是基于InterSystems的大量预制组件经开发或直接部署产生的软件包,因此将包含大量不需要在代码中固定写好的配置项,例如远程连接的地址,扫描数据表使用的SQL等。运维团队的工作之一,就是在外部环境发生变化,例如第三方系统部署地址发生变化时,通过调整Production的设置来应对变化,而无需更改已部署的代码。 凭据 用于登录远程系统。 在出站适配器的凭据设置中指定 在Ensemble > 配置 > 凭据中设置 Production配置数据的来源 导出Production 配置页 > Production设置 > 操作选项卡 > 导出 创建与类/部件相关的XML文件 验证是否需要额外的类 可用于 部署到另一个实例中 部署到另一个命名空间 保存Production 部署Production Ensemble à 管理 à 部署变化 à 部署 会创建回滚文件及部署日志 导出与部署的当前限制 除业务组件外,组件配置、规则、DT等组件运行依赖的部件不会自动被识别,需要人工选取并导出 DSN, 凭据等含安全信息的配置不会被导出(实例级配置,非Production级配置),需要手动在部署端配置。产品化研发中需要考虑通过自定义任务定期同步到备机或其他实例。 清除Production数据 当Production在生产中运行较长时间后,往往会累积大量的告警,事件日志和互操作消息等运行数据。用户可选择定期删除一部分不再需要的数据,保证磁盘空间的充裕。 直接执行 Ensemble > 管理 > 清除管理数据 直接执行清除任务受限于浏览器进程超时设置,如在清除过程中触发超时,将导致清除进程失效退出,中断消息清除过程。 对于大量消息累积的场景,请使用后台任务周期性执行确保清除效果。由于删除数据时也将产生大量的journal,删除前应在journal所在存储上保留充裕的空间。 后台任务 系统操作 > 任务管理器 > 新任务 空闲超时设置 组件被标记为不活动,如果 组件在给定的#秒内没有活动 黄色表示不活动的组件 Production监控 配置页面 Production运行监控 IRIS平台为用户提供了一系列工具展现组件的运行状态。运维团队需要频繁地使用这些工具用于定位和诊断故障,识别性能瓶颈等。 Production监视器 一页式监控业务服务、业务操作、队列和错误。 点击单个组件了解详情 提供对队列和事件日志的访问 事件日志 检索、过滤和清除日志 联合使用事件日志和可视化追踪 错误、警报和警告事件日志条目显示在可视化追踪中 点击图标可以查看事件日志详情 业务规则日志 Ensemble > 查看 > 业务规则日志 每次尝试匹配规则时的条目 空原因表示没有匹配的规则 日志内容 I/O 记录 组件配置 除了Production信息外,还对输入和输出数据进行存档 TCP输入输出 文件输入输出 输入和输出数据显示在可视化跟踪窗口中 组件状态指示器 状态指示器提供业务组件健康状况的可视化 绿色 – 正常 黄色 – 不活动(项目空闲时间超过其空闲超时设置) 红色 - 错误。 灰色 - 禁用。 暗绿色或暗灰色 -- Production目前没有运行 紫色 - 遇到失败但在重试的信息 消息队列 要查看队列 Ensemble > 监视器 > 队列 > 在队列中点击消息查看详情 Production配置页 > 选择组件 > 队列Tab 组件在给定的#秒内没有活动 可以查看、挂起和中断整个队列的消息处理 消息队列与性能调优 消息队列的变化常常可以用于评估组件性能及识别性能瓶颈,运维团队可以根据瓶颈所在位置和上下游组件队列的变化情况调整Pool Size获得优化性能。 忽然暴增的队列 如果发生在业务操作 通常由外部系统导致 连接中断 暴增的业务高峰 如果发生在业务流程 业务流程可能出现错误,导致它以某种方式 "卡住” 长期堆积的队列 如果发生在业务操作 可能是在向外部应用程序发送消息时出现持续延迟 看看外部系统的性能问题是否能得到解决。 如果不能,考虑增加池子的大小设置(除非需要FIFO) 如果发生在业务流程 考虑增加池(私有池或参与者池)大小的设置(除非需要FIFO) 可能有算法缺陷,考虑优化 多个队列长期堆积 潜在的原因 主机容量不够(内存/CPU/IO) Ensemble需要更多的资源(内存、CPU) 底层的Caché实例可能需要调整(内存、IO) 永远不要低估低速存储的影响 作业 提供关于CPU作业运行配置项的信息 Job # = 操作系统进程ID 状态 Dequeuing - 等待信息被处理(最常看到的) Running - 工作,重试或无限循环 Quiescent - 生产关闭期间的状态 Error 能够按照日程周期运行的作业非常适合用于执行系统运维任务 周期性清除过期Production数据 按照备份策略周期性执行全量、累积和增量备份 定期清除过期的数据库journal 定期对数据库进行一执行检查 定期对数据库执行压缩截断释放空间(慎用) 定期将无法通过mirror同步的配置推送到备机(例如DSN、凭据等) 活动量监控 活动量和持续时间监视器显示每个接口的统计数据 Ensemble > 监视器 > 活动量和持续时间。 按时间段过滤(分钟、小时、天、周、月、年) 可以根据需要建立自己的仪表盘来显示所需数据 也可通过SQL查询 启用活动量收集 将Ens.Activity.Operation.Local Business Operation添加到Production中 为统计数据指定存储命名空间 为Production启用统计数据收集 do ##class(Ens.Util.Statistics).EnableStatsForProduction() 为命名空间的Web应用程序启用DeepSee 系统管理 > 安全 > 应用程序 > Web应用程序 使用PurgeActivityData任务进行清理。 使用作业控制周期任务
文章
Nicky Zhu · 八月 10, 2022

InterSystems 数据平台互操作功能运行维护管理基础 - 互操作告警与通知

在互操作功能运行过程中,IRIS可以识别异常情况的发生,自动生成告警事件并通过预制的互操作组件将告警转发给干系人;另外,IRIS也内建了告警工作台,可供运维团队基于工作流实现对告警的管理。 告警设置与转发 Production告警设置 在Production级别可以设置对连接异常的告警设置,及告警组件设置 组件告警设置 控制何时触发警报。 队列计数警报。 队列中的信息数量 队列等待警报。 消息在队列中停留的秒数 不活动超时。 业务组件不活动的秒数 在v2012.1之前,不会触发告警 警报宽限期 与外部连接有关的错误可以有宽限期设置 设置重新建立连接的时间,超时且连接不成功才会发出告警 业务服务 警报宽限期 业务操作 再次发出警报宽限期 转发告警 EnsLib.EMail.AlertOperation 内置告警转发组件 通过Email转发 路由到其他接口转发 REST - 短信 REST - 钉钉 用户需要执行的规划 什么样的告警需要即时通知 告警的通知是否应该成为一个应用 包含告警组件的Production 包含告警组件与业务组件的Production形态如下 其中,用于告警的业务组件包括 告警托管 在互操作功能中产生的告警可以选择转发到第三方系统触发告警运维工作流,也可以在IRIS中进行托管,通过IRIS提供的较为简单的工作流定义实现对告警的统一存储及管理。 工作原理 告警管理BP 决定是否产生新的托管告警 可以设置告警的所有者 通知管理BP 决定如何发送告警 决定谁将收到通知 将告警通知发送到指定组件 告警监视BS(可选组件) 可以将过期告警升级 决定是否发出提醒 典型的告警数据流如下 其中,告警数据产生后经过平台自动丰富,最终形成可供运维人员操作的托管告警 托管告警流程 告警处理流程可能的选择: 告警仅写入日志文件,没有自动通知。 一个简单的告警通知系统,所有告警都通过Email发给用户 根据告警类型和生成告警的组件,将选定告警通过路由发送给不同的用户 实现告警管理框架,用于发送告警通知、升级未解决的告警,并记录当前状态和为解决告警而采取的操作的历史记录 告警路由规则 在告警管理器中可以应用规则,通过路由规则来定义告警的流向。 来源 允许根据不同的故障组件采取不同的行动 消息类 Ens.AlertRequest或无 目标 其他消息路由,用于进一步的路由 业务操作作为最终目标 可以通过数据转换根据传递目标定制告警 托管告警管理 通过Ensemble > 监视器 > 我的托管警报可进入告警管理页 该功能基于IRIS自身的用户设置。告警责任人的分配、告警级别管理、后续操作时限等,都可以在该页上进行操作。 也可通过SQL查询和操作已产生的告警 对于需要自定义工作流的用户,也可以考虑在此基础上实现流程。 祝老师您好,请问系统级别的告警如何推送,就像系统日志中告警级别为2的日志。 Hi, 有两个办法: 1. 自己写代码扫描messages.log获得这些告警 2. 扩展平台内置的告警通知类,可以自定义传感器、消息订阅器和通知分发器,参见 https://docs.intersystems.com/irisforhealth20223/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_healthmon#GCM_healthmon_sysmon_userdefined 感谢祝老师的答复,第一种方法已经实现,我研究下第二种方法。
公告
Claire Zheng · 六月 20, 2021

InterSystems 开发者竞赛:人工智能与机器学习

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 🏆 InterSystems 编程大赛:人工智能与机器学习 🏆 竞赛时间: 2021年6月28日 - 7月25日 奖金总额: $8,750 奖项设置 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名- $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $500 🥉 第三名 - $250 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金。 谁可以参加 任何开发者社区的成员均可参加,InterSystems内部员工除外。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 参赛时间安排 🛠 6月 28日 - 7月18日: 应用开发、提交阶段 ✅ 7月19日 - 7月 25日: 投票阶段 🎉 7月26日: 宣布优胜者! 注意:在整个参赛期间(开发与投票期间,即6月28日-7月25日),开发者可持续编辑、提升其应用 主题 🤖 人工智能与机器学习 🤖 利用InterSystems IRIS开发一个AI/ML解决方案。您的应用程序可以是一个库(library)、包(package)、工具(tool)或任何使用InterSystems IRIS的AI/ML解决方案。 以下是参赛须知: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 利用InterSystems IRIS构建使用AI/ML功能的应用程序。 该应用应该在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition 上工作。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 (如果有),那么InterSystems ObjectScript部分的源代码应该以UDL(而非XML)格式提交, 举例说明。 上述要求可能会按需修订 资源助力 1. 我们建议从以下模板开始: InterSystems IntegragedML template IRIS R Gateway template 2. 数据导入工具 Data Import Wizard CSVGEN - CSV import util CSVGEN-UI - the web UI for CSVGEN 3. 文档 Using IntegratedML 4. 在线资源 Learn IntegratedML in InterSystems IRIS Preparing Your Data for Machine Learning Predictive Modeling with the Machine Learning Toolkit 5. 如何将您的APP提交给大赛:: 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 参赛评比 投票规则即将发布,敬请期待! 期待您的精彩提交!加入我们的编程马拉松,赢取大奖! ❗️点击此处,查看 官方竞赛条款解读❗️ 成为社区活跃客户后即可参与投票:https://cn.community.intersystems.com/post/%E5%A6%82%E4%BD%95%E6%9B%B4%E5%A5%BD%E5%9C%B0%E6%88%90%E4%B8%BA%E7%A4%BE%E5%8C%BA%E8%B4%A1%E7%8C%AE%E8%80%85%E6%B4%BB%E8%B7%83%E7%94%A8%E6%88%B7%EF%BC%9F
文章
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 · 十一月 15, 2023

InterSystems Java 编程大赛

Hi 开发者们, 我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,重点关注 Java 及其衍生产品! 🏆 InterSystems Java 编程大赛🏆 时间: 2023年11月13日至12月3日(美国东部时间) 奖金池: 14,000 美元 话题 我们邀请您在新的编程竞赛中使用 Java!使用 Kotlin、Clojure 和 Scala 的应用程序也很受欢迎。 提交使用 Java、Kotlin、Clojure 或 Scala 以及 InterSystems IRIS 或 InterSystems IRIS for Health 的开源应用程序。 一般要求: 应用程序或库必须功能齐全。它不应该是另一种语言中已有库的导入或直接接口(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文件中标注您的团队成员——社区用户profile。 重要截止日期: 🛠 应用程序开发和注册阶段: 2023 年 11 月 13 日(美国东部时间 00:00):比赛开始。 2023 年 11 月26 日(美国东部时间 23:59):提交截止日期。 ✅ 投票时间: 2023 年 11 月 27 日(美国东部时间 00:00):投票开始。 2023 年 12 月3 日(美国东部时间 23:59):投票结束。 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用。 资源助力 1. 使用 InterSystems IRIS 开发 Java 应用程序: InterSystems Java Connectivity Options Learning Path Connecting Java Applications to InterSystems Products JDBC Driver Documentation XEP Java Documentation Native API for Java Documentation iris JDBC driver distribution 2. ObjectScript Package Manager (IPM)初学者: 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提交给大赛: 如何在 Open Exchange 上发布应用程序 如何提交比赛申请 4. 应用示例: native-api template workshop-pex fhir-client-java pex-demo iris-hibernate iris-liquibase 5. 视频: Using Java to Connect to InterSystems Connecting to InterSystems Cloud Services with Java What is PEX? InterSystems Connectivity with Java and other languages Deploying Java project + InterSystems IRIS in Docker 需要帮忙? 加入 InterSystems Discord 服务器上的竞赛频道或在本文评论中与我们交谈。 期待您的精彩提交 - 加入我们的编程大赛吧!来赢得胜利! ❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
文章
Weiwei Gu · 九月 14, 2023

容器中的 InterSystems IRIS

InterSystems 还发布了容器化部署的IRIS。这篇文章旨在演示 InterSystems IRIS 和依赖 IRIS 后端的应用程序如何打包到镜像中并在容器中的其他计算机中运行,以及这样做有多么简单。 容器运行包含所有必需的可执行文件、二进制代码、库和配置文件的镜像。镜像可以从一台机器移动到另一台机器,像 Docker Hub 这样的镜像存储库可以简化这个过程。 我在本演示中使用了 Open Exchange 的应用程序。 演示视频: https://www.loom.com/share/93f9a760b5f54c0a8811b7a212387b9d IRIS 数据平台社区版的镜像(image)可以在 InterSystems 容器注册表中找到: https: //containers.intersystems.com/contents 为了在主机中使用 IRIS 的容器化实例,应在运行时拉取它。 为此,Dockerfile 需要具有以下命令,如下所示: Dockerfile: Dockerfile ARG IMAGE=intersystemsdc/iris-community:preview FROM $IMAGE RUN iris start IRIS \ && iris merge IRIS /tmp/merge.cpf \ && iris stop IRIS quietly 这些是编写 Dockerfile 来构建镜像的基本命令,该镜像包含容器化 IRIS 的说明。 还可以添加用于安装与 IRIS 容器化实例一起运行的应用程序所需的其他依赖项的命令。 给出的 Docker 命令标记并推送带有 IRIS 实例的镜像到 Docker Hub,然后在另一台主机中拉取并运行该镜像。 命令 commands docker build -t image_name filepath docker tag image_name dockerhub_username/repository_name:tag_name docker push dockerhub_username/repository_name:tag_name 命令 commands docker pull dockerhub_username/repository_name:tag_name docker run --name test -p host_8080:52773 padhikar/irisincontainer:main 演示中使用的应用程序: https://openexchange.intersystems.com/package/iris-geo-map 创建 InterSystems IRIS 镜像: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls ?KEY=ADOCK#ADOCK_iris_creating
公告
Michael Lei · 九月 14, 2023

InterSystems IRIS 小数点版本发布说明

有时,InterSystems 必须重新发布版本以纠正 1-2 个问题。此过程会生成称为“小数点版本”的新套件。 小数点版本与维护或功能版本不同。其目标是快速、像做外科手术地纠正该领域的紧急问题。 如何识别小数点发布 InterSystems 数据平台产品遵循以下发布约定: <系统间产品> <年份>.<专业>.<维护>.<构建号>.<点> 例如:InterSystems IRIS 2022.1.4.204.1 识别小数点版本很简单:如果产品套件的最后一位数字非零,则您正在使用小数点版本。 我如何知道是否应该更换当前的软件? 每次推出小数点版本时,InterSystems 都会向我们的客户宣布并解释其解决的问题。公告是通过我们的开发者社区 ( https://community.intersystems.com/tags/intersystems-official ) 和产品警报发布的。 每个公告都会解释该版本解决的问题和相应的修复,并提供有关是否更换套件和容器的说明。因此,请阅读公告,如果您有任何疑问,请联系我们! 注意:如果您没有收到产品警报电子邮件,请访问我们的页面并注册: https: //www.intersystems.com/support/product-alerts-advisories/
文章
Michael Lei · 十一月 2, 2022

InterSystems IRIS医疗版的“专精特新”

门为医疗行业打造,深度整合国内外医疗行业标准,专有技术服务医疗行业44年,可能是全球最早从事医疗信息化的公司; 耕细做打磨数十年的稳定、可靠、易用、可扩展的数据平台; 色鲜明,不唯技术、终生负责、以解决客户问题为核心的特色企业文化; 一代混合一体化架构,一个平台同时支持混合事务处理、传统架构、容器化、云原生等多种应用场景;
文章
Michael Lei · 四月 4, 2023

InterSystems SQL 小妙招

嗨开发者们! 如您所知,InterSystems IRIS 除了Global、对象、文档和 XML 数据模型还支持关系,其中 SQL 语言也被用来处理数据。 与其他关系型 DBMS 一样,InterSystems IRIS 有自己的特点。 我开始这篇文章是为了抛砖引玉,并邀请您分享您的小诀窍 - 我会根据收到的评论更新内容。 开始了! 列出数据库中的所有表: SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE= 'BASE TABLE' 感谢@Dmitry.Maslennikov 使用当前日期和当前时间作为默认值创建表: CREATE TABLE CUSTOMER ( ID INTEGER PRIMARY KEY NOT NULL , NAME VARCHAR ( 100 ) NOT NULL , PASSWORD VARCHAR ( 20 ) NOT NULL , LAST_UPDATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL , REGISTRATION_DATE DATE DEFAULT CURRENT_DATE NOT NULL ); 注意不带括号的函数 CURRENT_TIMESTAMP 和 CURRENT_DATE。 创建在内部使用 ObjectScript 的存储过程/函数: CREATE OR REPLACE FUNCTION IRIS_VERSION() RETURNS VARCHAR LANGUAGE OBJECTSCRIPT { Return $ZV } 调用存储过程/函数: select IRIS_VERSION() as "Version" 调用内部函数。 返回 IRIS 版本: Select $ version 返回当前命名空间: Select $namespace 欢迎大家在评论区留下你的小妙招! 分页查询: select top :row * from PatientInfo where id not in (select top 10(:page-1) id from PatientInfo order by id asc) order by id
文章
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 种不同的数据模型。 这些是层次模型、关系模型、对象模型、文档模型和列模型。 希望您在尝试找出可用的模型时会发现这篇文章很有用。 如果您有任何问题,请随时在评论中提出。
文章
Claire Zheng · 六月 12, 2023

InterSystems 开发者社区发帖时如何嵌入视频?

大家好! 这是一篇关于如何将视频嵌入您的帖子的简短文章。 其实很简单。您只需要按照以下步骤操作。 1. 打开您希望嵌入的B站视频,在视频右下角找到分享按钮; 2. 选择“嵌入代码”并复制代码 3.在社区帖子中切换到Source视图,并将您在步骤2中复制的代码粘贴在您希望嵌入视频的地方(如嵌在<p>后); 4.再次点击“Source”,回到编辑页面,您会看到如下“IFRAME”框; 5.双击红色的“IFRAME”,并如图所示填写视频尺寸(请务必按下图数值填写),点击“确定”,即可完成视频嵌入。 希望这个帖子能帮助到您:) 在评论部分留下您对这个主题的想法,或者告诉我们您还希望了解哪些社区玩儿法。
文章
Weiwei Gu · 六月 28, 2023

InterSystems IRIS 数据平台的以太坊适配器

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 以太坊适配器解决实际问题的示例。
公告
Michael Lei · 九月 17, 2022

InterSystems Docker 桌面扩展正式发布

好消息, InterSystems 容器镜像仓库Docker桌面扩展已正式发布供大家 下载 . 大家可以在Docker桌面版的marketplace 下载.下载后需要重启 Docker Desktop to 欢迎在github repository中给我们反馈, 点击这里