Find

Article
· 18 min ago 18m read

Sharding and Scalability in InterSystems IRIS: A Beginner's Guide

As applications grow, every database eventually hits scaling limits. Whether it's storage capacity, concurrent users, query throughput, or I/O bandwidth, single-server architectures have inherent constraints. This guide explains fundamental approaches to database scalability and shows how InterSystems IRIS implements these patterns to support enterprise-scale workloads.

We'll explore two complementary scaling strategies: horizontal scaling for user volume (distributing computational load) and sharding for data volume (partitioning datasets). Understanding the general principles behind these approaches will help you make informed decisions about when and how to scale your IRIS applications.

The examples in this guide use InterSystems IRIS in Docker containers.

Discussion (0)1
Log in or sign up to continue
Article
· 4 hr ago 3m read

将遗留代码迁移到新版本:技巧与窍门

不可避免的是,您最终需要将您的代码从一个版本的 IRIS 或 Cache 升级到最新版本的 IRIS。在这一过程中,您可以采取一些好的步骤来为自己的成功做好准备。

仔细阅读文档

 

在迁移任何代码之前,你应该先查看IRIS 文档页面,其中包含许多关于IRIS不同版本变更的有用资源。如果你需要跨多个版本升级,请查阅所有相关版本的文档,而不仅仅是目标升级版本。对于每个版本,点击“维护版本变更”(Maintenance Release Changes)链接,你将看到一份开发人员升级清单,对指导你需要进行的修改非常有帮助。你还应查看“发布说明”(Release Notes),其中列出了可能对你有用的新功能,以及已被弃用的功能。此外,建议访问“产品新闻与警报”(Product News and Alerts)页面,以获取最新的紧急事项。事实上,即使不进行升级,定期查看该页面或订阅警报通知也是个好主意,以便及时了解变更。

了解你的替代方案

根据你在文档中阅读到的内容,你可能会看到一堆问题。不过,在开始处理这些问题之前,您应该花些时间了解一下有哪些替代方案。如果您喜欢使用的特定 ObjectScript 类已被弃用或移除,那么如果您打算使用集成的 Python,就不要只寻找 ObjectScript 的替代品。如果您是 Zen 报表的用户,InterSystems Reports 就是该工具的替代品。$ZF -100 已经取代了 $ZF-1。许多其他被移除的组件都有了更新的替代品,在重新发明轮子之前,你应该先找找它们。

扫描、弃用、再扫描

熟悉 %SYSTEM.CodeScanner 类。该类包括类查询(或早期版本中的类方法),可检测已废弃项的使用和其他一些常见问题,如使用 $ZF -1 或 $ZF -2、使用 %this 引用当前对象、使用旧类关键字等。

扫描代码后,您将面临如何解决这些问题的选择。其中有些问题很容易解决,只需修改代码,使用新的工具和方法即可。而其他问题则需要付出更多的努力。在决策过程中,请记住您可以废弃自己的代码!弃用的关键词可以应用于参数、属性、方法,甚至整个类。这一点经常被程序员忽视。如果你决定弃用某些东西,那么你可以再次使用代码扫描类 ,找出所有这些东西的使用位置,然后解决 这些 问题,以此类推。根据你对这个兔子洞的深入程度,可能需要几次才能理清所有这些问题。现在可能要做很多工作,但以后可以省去很多麻烦。

重新调整表参数

表调整(Table Tuning) 已经存在了一段时间,并且经历了一些变化。即使是最近的 2025.2 版,也对该流程进行了重大改进 。如果您正在使用旧版本的代码,却没有重新调整表,那么您可能会错过该工具的一些重大改进。如果您利用了这一点,也许就能在不触及任何代码的情况下获得相当高的效率!

彻底测试

再多的准备工作或工具也无法完全取代老式的测试。无论您偏爱的测试机制是 单元测试、Postman,还是客户支持部门的 Teresa(她清楚地知道您的用户倾向于如何破坏东西),都要确保他们参与并积极地在新版本上彻底测试您的代码。不要想当然。

参与到社区中来

我们中的很多人都经历过几次失败。我不会指名道姓,也 绝对 不会列出年龄,但在这个过程中的任何时候,您现在所在的社区网站都是一个很好的资源。如果您需要替换旧代码,您可以询问是否有人有旧代码,以及他们是如何从一个代码跳转到另一个代码的。这里对任何情况都很有帮助。

如果您对将来如何改进升级流程有想法,请在 " Ideas Portal "上发布 。InterSystems 和社区用户会定期检查这个门户,了解如何改进工作,您可能会因此而省去很多工作。

如果您遇到自己无法解决或社区帮助无法解决的问题,也可以通过 全球响应中心 直接从 InterSystems 获得更深入的帮助。

现在让我们听听社区其他成员的意见。让大家知道你以前是如何管理此类升级的。哪些地方成功了,哪些地方失败了,下次会采取哪些不同的方法?

Discussion (0)1
Log in or sign up to continue
Article
· 4 hr ago 13m read

もっと賢く使えるテーブル統計

この記事では、2025.2リリースで導入された、IRIS SQL処理の重要な要素、InterSystems IRISのテーブル統計処理の大きな改善について紹介します。 まず最初に、テーブル統計とは何か、どのように利用されるのか、そしてなぜ今回の改善が必要だったのかを簡単におさらいします。 その後、テーブル統計を収集・保存するための新しいインフラの詳細を掘り下げてから、この変更が実際にアプリケーションにどのような影響を与えるのかを詳しく見ていきます。 最後に、新しいモデルで可能になったパターンに関する追加の注意点をいくつか紹介し、今回の初期リリースに続く次のフェーズに期待をつなげます。

Discussion (0)1
Log in or sign up to continue
Announcement
· 9 hr ago

2025.3 实现互操作性用户体验现代化

互操作性用户界面项目从 2025.1 版继续 进行,并纳入了许多我们的客户和合作伙伴建议和观察到的项目。 我们将继续投资于反馈和更新这一重要的用户体验。在最新发布的 2025.3 版(适用于 IRISIRIS for HealthHealthConnect 和 Health Connect Cloud) DTL 编辑器生产配置 应用程序可选择
NOTE

  • 您可以在现代化和标准体验之间切换。
  • 所有其他互操作性屏幕仍保留在标准用户界面中。
  • 由于新的用户界面将提供新的工作流程,我们希望在这项工作继续进行的同时提供两种体验。

 

生产配置——配置任务介绍
  • 现在每个生产配置主机上都会显示池大小 数量。
  • 现在可以在主机的类别字段中直接输入命名约定来创建新类别
  • 生产配置中现在支持浏览器级控制查找
  • 生产配置主机项目现在具有测试主机功能
  • 在新的 "设置面板 "中,出现了 X 取消图标以取消操作。
  • 较长的类工具提示 说明根据类文档格式化。
      • 增强了配置项描述的显示,以尊重较长结构化描述的标记。
  • 如果不在主机项目或生产的上下文中,操作项目会显示为灰色
  • 创建主机时可自动创建路由器和角色。
  • 在支持的情况下,现在可以选择更新和恢复生产
  • 现在可以 通过新的用户界面创建产品
  • 编辑主机类别时,允许查看连接
  • 所有规则集上的视图图标 可打开规则编辑器分割面板中的特定规则集
  • 在主机的信息图标中添加了主机 状态图例
  • 现在可搜索"主机属性",并添加了 "展开全部 "部分
  • 现在可 在生产配置过滤栏中搜索 IP 地址和端口号
  • 还有更多
DTL 编辑器——DTL 工具介绍
  • 数据转换功能下拉菜单现在可搜索,并仅限于子类中定义的功能。
  • DTL 图形编辑器现在包含一个按钮,可在将鼠标悬停在段上时复制 HL7 字段路径
  • 在设置 DTL 语句目标字段和源字段时,设置序号或路径表达式或同时设置这两种表达式 输入相同的表达式设置
  • 用于复制或添加映射的 "悬停 "段图标更易于访问
  • 添加映射时,将鼠标悬停在段上现在会显示复制图标
  • 滚动时,DTL 编辑器分屏标题和工具栏都保持不变
  • 还有更多
规则编辑器——业务规则介绍
  • 不再可以重命名规则。以前,这种行为会导致活动规则的更改出现混乱。要创建新规则,请使用 "另存为(Save As)"
  • 规则编辑器现在支持浏览器级控制查找
📣 行动呼吁 📣

Discussion (0)1
Log in or sign up to continue
Article
· 11 hr ago 1m read

Importando CSV no CACHÉ

Aqui está um exemplo prático de como importar dados de um arquivo CSV para o Intersystems CACHÉ usando ObjectScript. Supondo que seu arquivo CSV seja simples (por exemplo, separado por vírgulas e com cabeçalhos), você pode usar %Stream.FileCharacter para lê-lo linha por linha e analisar os dados.


 

ClassMethod ImportCSV(filePath As %String) As %Status {
    Set stream = ##class(%Stream.FileCharacter).%New()
    Set sc = stream.LinkToFile(filePath)
    If 'sc Quit sc

    While 'stream.AtEnd {
        Set line = stream.ReadLine()
        Set fields = $ListFromString(line, ",")
        // Example: Save to a persistent class
        Set obj = ##class(MyApp.Data).%New()
        Set obj.Name = $List(fields,1)
        Set obj.Age = $List(fields,2)
        Set obj.Email = $List(fields,3)
        Do obj.%Save()
    }
    Quit $$$OK
}

Discussion (0)1
Log in or sign up to continue