#InterSystems IRIS

0 关注者 · 929 帖子

InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。

文章 Jeff Liu · 九月 22, 2021 11m read

 

技术概要:ObjectScript

 

技术概要:ObjectScript

本文档将向您介绍 ObjectScript 编程语言,并提供了几个示例,说明如何使用它来存储和检索来自 InterSystems IRIS®数据平台的数据。本技术概要(First Look)并不试图提供对该语言或其功能的全面概述。您可以使用本文件末尾列出的参考资料,继续您的探索。

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

什么是 ObjectScript?

ObjectScript 是一种编程语言,用于在 InterSystems IRIS 数据平台上快速开发复杂的业务应用。ObjectScript 源代码被编译成 object 代码,该代码可针对业务应用程序中的典型操作(包括字符串操作和数据库访问)进行高度优化。

ObjectScript 的独特之处之一是它的底层存储结构,即所谓的 globals。Globals 可以被认为是持久的多维稀疏数组。ObjectScript 允许您直接从 globals 访问数据,但也允许您通过其本机 object 和 SQL 支持来访问这些数据。

0
0 568
文章 Nicky Zhu · 九月 22, 2021 7m read

1 安装基础知识:目的

本指南可帮助您成功在桌面或虚拟机上运行一个经授权许可的 InterSystems IRIS®。适用于我们在技术概要

(First Look)操作指南里所提及的技术。
我们提供的说明包括64位 Windows 10, Red Hat 企业版Linux7,以及Apple macOS10.13.

注: InterSystems 云管理器(ICM)提供了一种简单、直观的方法来配置云或虚拟基础架构,用户可在该基 础架构上部署所需的 InterSystems IRIS架构以及其他服务。

请勿使用本指南安装生产实例或任何自定义安装配置;如需帮助,请参阅InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)或Installation Guide(《安装指南》)。

 

2 用前须知

在开始安装 InterSystems IRIS之前,请确保:
• 计算机上的完整管理员权限或sudo权限。
• 访问InterSystems IRIS的单文件的可执行安装文件(Windows)或工具包(Linux和macOS)。 • 在IRIS可访问的文件夹下存放有效的许可证密钥文件,通常命名为iris.key。

您正在使用的技术概要(First Look)中对安装有特定要求;例如,可能需要“正常”安全性。

0
0 739
文章 Jingwei Wang · 九月 21, 2021 1m read

Object Script(三)

面向脚本

 


  • Routine

可将routine看做全局可调用的函数,一个函数是一个执行程序(Roution),它执行一个操作(例如,将一个字符串转换为其对应的ASCII码值)并且可以返回一个值。

 

语法结构:

Routine可以有一个标签,ObjectScript代码,以及结尾的注释,所有这些元素都是可选的。可以使用";"或"//"来表示注释。对于多行注释,用"/*"标记注释的开头,用 "*/"标记注释的结尾。

 

结构示例:

标签

      ObjectScript代码

end

 


  • 创建Routine示例

Studio创建:

打开Studio,点击左上角新建文件。选择General->ObjectScript Routine

 

将下段代码填写入建好的Routine。

        hello ; hello world routine
            write !, "hello world"
          write !, "bye"
      end quit  ; end

 

Terminal调用:

打开Terminal,执行下段代码,即可检查结果。

    do ^hello
0
1 313
公告 Claire Zheng · 九月 15, 2021

亲爱的社区开发者们,大家好!

我们诚挚地邀请您参加与InterSystems开发者竞赛(InterSystems IRIS Analytics)竞赛优胜者交流 online meetup!

日期 & 时间: 美国东部时间2021年9月17日(周五)12:00;北京时间2021年9月18日(周六)0:00-1:00

在此次线上交流会上,您将了解到: 

  • 优胜者简介
  • 优胜者提交项目的简短demo
  • 关于项目中使用到的技术的开放探讨、问答,以及下一场开发者竞赛的安排。

0
0 200
文章 Heng Zhang · 九月 11, 2021 1m read

背景:在实际场景中,处理历史数据问题会出现数据暴增的情况,在此情景下journal文件会暴增从而出现磁盘被沾满的风险,因此需要对journal进行删除。 步骤: 1.点击【系统操作】->【任务管理器】->【新任务】创建定时任务。 2.按下图输入参数 image 重要参数: 任务运行所在的 命名空间:%SYS 任务类型:运行传统任务 执行代码:do ##Class(%SYS.Journal.File).PurgeAll()

  1. 点击【下一步】设定时间 按业务需要设定

4.点击【完成】

备注:此任务在数据暴增情况结束后应挂起。

0
0 434
文章 Qiao Peng · 三月 29, 2021 4m read

 

InterSystems IRIS/Caché的CDC

InterSystems IRIS/Caché未提供开箱即用的变更数据捕获(CDC)工具,而且由于其多模型建模能力和底层的多维存储模型,相对于关系型数据库的单一模型,针对于SQL的CDC在InterSystems IRIS/Caché上会更复杂一些。例如通过Journal日志记录的是底层持久化多维数组的数据变更,而不是SQL table的变更。

通常,在应用层面实现变更数据捕获是更灵活和简单的方式,例如通过设置触发器、类的DSTIME参数。但如果无法在应用层做CDC,可以考虑使用InterSystems IRIS/Caché的Journal和强大的开发能力获取数据变更。

这里介绍使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更。

2
1 1346
文章 Nicky Zhu · 九月 9, 2021 13m read

本文档将您介绍InterSystems IRIS®数据平台的分片(sharding)功能,以及它在分片集群中的使用,以水平扩展 InterSystems IRIS 的数据量。

作为本指南的一部分,您将使用 ICM 在公共云中提供的分片集群,并了解分片表(sharding a table)如何在集群中的分片之间分布其行。

 

分片(Sharding)如何帮助您?

您感受到大数据(Big Data)的热度了吗?

无论是否准备好了,我们都在管理比以往任何时候都多的数据,并被要求用这些数据做更多的事情——所需的响应时间也越来越短。无论您是照顾一千万名患者、每天处理数十亿的金融订单,追踪一个星系的恒星,还是监控一千个工厂的引擎,数据平台不仅要支持您目前的数据工作量,而且还必须在保持性能的同时进行扩展(Scale),以满足不断增长的需求,避免业务中断。每个特定业务的工作量对其运行的数据平台提出了不同的挑战 而随着工作量的增加,这些挑战将变得更加严峻。

InterSystems IRIS 包含一套全面的功能来扩展(Scale)您的应用程序,这些功能可以单独或组合应用,这取决于您的工作量的性质和它所面临的特定性能挑战。其中之一是分片(sharding),它在多个服务器上对数据及其相关缓存进行分区,为查询和数据摄取提供灵活、价优的性能扩展,同时通过高效的资源利用使基础设施价值最大化。

0
0 246
文章 Nicky Zhu · 九月 7, 2021 9m read

本文档介绍了 XEP API,它在 InterSystems IRIS®数据平台上极其快速的 .NET 对象存储和检索支持。它向您提供了一个关于 .NET 对象持久化的 XEP 方法的进阶概述,并引导您通过一个简单的场景来演示 API 的主要功能。

这些活动被设计成只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节。有关 XEP 的完整文档,请参见 Persisting .NET Objects with InterSystems XEP (《使用 InterSystems XEP 持久化 .NET 对象》)。

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

快速的对象存储和检索

面向对象编程是 .NET 框架的核心,因此 .NET 应用程序将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会导致问题。如果您使用 ADO.NET 来存储和检索对象,您就面临着将对象数据转换为一组关系表、然后再将查询结果集转换为对象的问题。这个问题的通常解决方案是使用对象-关系映射(ORM)框架,如实体框架(Entity Framework 来自动化这个过程。

2
0 292
公告 Johnny Wang · 九月 2, 2021

2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以:

  • 先睹为快:2021 年虚拟峰会体验实验室
  • 使用自适应分析(Adaptive Analytics)解决方案来组建你的第一个数据模型
  • 免费试用 InterSystems IRIS 社区版
  • 查看 InterSystems 文档中的分析
  • 申请即将举行的线上技术课程

立刻报名!

 注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。

0
0 119
文章 Michael Lei · 八月 31, 2021 1m read

InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分


转载自Forester 报告:

InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。" 

Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report

0
0 177
问题 xing chen · 八月 27, 2021

请教一下,我使用两个iris实例搭建了镜像,再将数据库同步后,备机出现了数据库无法激活的问题,报错:Database could not be activated because Write Daemon could not update mirror block。该如何解决

1
0 172
文章 Jingwei Wang · 八月 25, 2021 4m read

Object Script(二)

ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。

 






示例

含义

abc^def

调用routine中的一个标签:

def是一个routine,abc是该routine中的一个标签。

i%abcdef

 

i%<PropertyName>

用于从实例变量自身的Get或Set访问器方法中引用该变量,或者绕过其Get或Set方法

abc->def

 

这种语法只在InterSystems的SQL语句中可以使用。它指定了一个隐含的左外连接。abc是你正在查询的类中的一个对象值字段,def是子类中的一个字段。

abc?def

 

一个问号是模式匹配操作符,测试变量abc中的值是否与def中指定的模式相匹配

abc[def

 

左括号([)是二进制包含运算符。

0
0 461
文章 Jingwei Wang · 八月 25, 2021 3m read

Object Script(一)


  • 概况

ObjectScript是一种用于在InterSystems IRIS数据平台上快速开发编程语言,它是面向对象的弱类型脚本语言,非常适用于各种应用,包括业务逻辑、应用集成和数据处理。

在这里,我将主要介绍ObjectScript的命令脚本,类,方法和Routine等使用方式和语法规范。如有任何疑问,可在InterSystems开发者社区进行深入讨论。

 

  • IDE选择

可以使用InterSystems IRIS内置的StudioVisual Studio Code(需要安装Object  Script扩展)来查看和编辑代码。这里我们使用InterSystems IRIS内置Studio来做示例。

如果你已安装InterSystems IRIS或者InterSystems HS 等任何InterSystems产品,找到右下角的图标  ,单击鼠标右键,点击Studio,如下图所示:

输入用户名和密码(用户名:superuser 密码:安装时自己设置的密码),即可进入到Studio开发环境,如下图所示:

   

 


  • Terminal

可以直接打开InterSystems IRIS的终端尝试执行ObjectScript的简单指令。

0
1 792
文章 Michael Lei · 八月 20, 2021 4m read
这是一个IRIS 2020.2上的代码示例,并非InterSystems 官方支持!

本demo基于原始类描述 is based on the raw class descriptions.
使用的数据类是Address, Person, Employee, Company
如果要做更有吸引力的 demo, 可以添加 JSONtoString by ID的方法

用ZPM安装后从终端启动:After installation with ZPM just run from Terminal

USER>do ##class(rcc.ONAPI.demo).Run()
Adjust Parameters
host[127.0.0.1]:
port[51773]:
namespace[USER]:
user[_SYSTEM]:
pwd[SYS]:
timeout[5]:
****** connected ********

下一步, 你会得到一系列可能的Demo动作。you get a list of possible demo actions.
没有输入就意味着没有动作No input means no action.
菜单会一直循环直到退出The menu loops until you exit.

0
0 187
文章 TZ Zhuang · 八月 6, 2021 2m read

可以使用%SYS.Journal.File类中的ByTimeReverseOrder查询,以及%SYS.Journal.Record类中的List查询来实现。

下面是这两个查询的具体作用:

A) %SYS.Journal.File类中的ByTimeReverseOrder查询
这个查询会获取journal日志文件名并按降序排列

USER>set rs=##class(%ResultSet).%New("%SYS.Journal.File:ByTimeReverseOrder")
 
USER>do rs.Execute()
 
USER>while rs.Next() { write rs.Name,! }
c:\intersystems\cache\mgr\journal\20190620.003
c:\intersystems\cache\mgr\journal\20190620.002
c:\intersystems\cache\mgr\journal\20190620.001
c:\intersystems\cache\mgr\journal\20190610.001

B) %SYS.Journal.Record类中的List查询
这个查询可以从指定journal日志文件中获取日志记录

USER>set rs2=##class(%ResultSet).
0
1 341
公告 Claire Zheng · 七月 30, 2021

亲爱的社区开发者们,大家好!

我们真诚邀请您参加 Online Meetup:InterSystems 开发者竞赛(人工智能与机器学习)!

时间: 2021年7月30日(周五) 11:00 AM (美东时间)23:00 (北京时间)

在这场在线Meetup,您将了解到:

  • 此次优胜者的个人履历;
  • 获奖Application的简短Demo;
  • 有关应用技术的开放探讨、问答,以及下次竞赛的一些计划。

0
0 163
文章 Michael Lei · 七月 27, 2021 8m read

以下步骤展示如何显示 /api/monitor 服务提供的指标列表示例。

在上个帖子中,我概述了以 Prometheus 格式显示 IRIS 指标的服务。 该贴介绍了如何在容器中设置和运行 IRIS 预览版 2019.4,然后列出了指标。


本帖假定您已安装 Docker。 如果未安装,现在就为您的平台安装吧 :)


步骤 1. 下载并运行 docker 形式的 IRIS 预览版

按照预览发行版的下载说明下载预览版许可证密钥IRIS Docker 映像。 例如,我选择了 InterSystems IRIS for Health 2019.4

按照 Docker 容器中的 InterSystems 产品初见中的说明操作。 如果您熟悉容器,请跳转到标题为“下载 InterSystems IRIS Docker 映像”的部分。

以下终端输出说明了我用来加载 docker 映像的过程。 docker load 命令可能需要几分钟的时间才能运行;

$ pwd
/Users/myhome/Downloads/iris_2019.4

$ ls
InterSystems IRIS for Health (Container)_2019.4.0_Docker(Ubuntu)_12-31-2019.ISCkey  irishealth-2019.4.0.379.0-docker.
0
0 375
问题 Crys · 七月 14, 2021

刚才好像发了一遍没成功

 

试用IRIS,关闭了workspace之后;再打开、没有project. 只能从打开最近的workspace中找,怎么回事噢?哈哈哈哈哈

0
2 147
文章 Michael Lei · 七月 6, 2021 2m read

如果一张图片胜过千言万语,那么一段视频又价值几何? 当然胜过敲一个帖子。

请在 InterSystems Developers YouTube 观看我的“Coding talks”:

1. 使用 Yape 分析 InterSystems IRIS 系统性能。 第 1 部分:安装 Yape

 

在容器中运行 Yape。

2. Yape 容器 SQLite iostat InterSystems

提取和绘制 pButtons 数据,包括时间范围和 iostat。

0
0 219
文章 Michael Lei · 七月 6, 2021 16m read

供应商或内部团队要求说明如何为 VMware vSphere 上运行的_大型生产数据库_进行 CPU 容量规划。

总的来说,在调整大型生产数据库的 CPU 规模时,有几个简单的最佳做法可以遵循:

  • 为每个物理 CPU 核心规划一个 vCPU。
  • 考虑 NUMA 并按理想情况调整虚拟机规模,以使 CPU 和内存对于 NUMA 节点是本地的。
  • 合理调整虚拟机规模。 仅在需要时才添加 vCPU。

通常,这会引出几个常见问题:

  • 由于使用超线程技术,VMware 创建的虚拟机的 CPU 数量可以是物理 CPU 数量的两倍。 那不就是双倍容量吗? 创建的虚拟机不应该有尽可能多的 CPU 吗?
  • 什么是 NUMA 节点? 我应该在意 NUMA 吗?
  • 虚拟机应该合理调整规模,但我如何知道什么时候合理?

我以下面的示例回答这些问题。 但也要记住,最佳做法并不是一成不变的。 有时需要做出妥协。 例如,大型生产数据库虚拟机很可能不适合 NUMA 节点,但我们会看到,其实是没问题的。 最佳做法是指必须针对应用程序和环境进行评估和验证的准则。

0
0 1062
文章 Michael Lei · 七月 4, 2021 3m read

大家好, 在本文中,我比较了 Gartner 最新DBMS 魔力象限中的主要领先数据库产品的功能。 请见按现有功能数量排序的列表。 1. InterSystems IRIS 2020.3 - 60 个功能 (https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls) 2. Oracle Database 21c - 54 个功能 (https://docs.oracle.com/en/database/oracle/oracle-database/index.html) 3. Microsoft SQL Server - 45 个功能 (https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15) 4. AWS Aurora - PostgreSQL - 34 个功能 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Auror…) 我只比较了功能,未进行任何性能比较(关于此内容,请参见性能测试:https://cn.community.intersystems.

0
0 324
文章 Michael Lei · 七月 4, 2021 9m read

(ECP) Caché 出色的可用性和扩展特性之一是企业缓存协议 (ECP)。 在应用程序开发过程中,如对使用 ECP 的分布式处理加以考虑,可以横向扩展 Caché 应用程序的架构。 应用程序处理可以调整为非常高的速率,处理能力从单个应用程序服务器扩展到最多 255 个应用程序服务器,并且不需要任何应用程序更改。

在我参与的 TrakCare 部署中,ECP 已广泛使用多年。 十年前,主要供应商之一的一台“大型”x86 服务器可能总共只有八个核心。 对于大型部署来说,ECP 是横向扩展商业服务器处理能力的方式,不适合单台昂贵的大型企业服务器。 即使是高核心数的企业服务器也有限制,因此 ECP 也用于扩展这些服务器上的部署。

如今,大多数的新 TrakCare 部署或升级到当前硬件_不需要 ECP_ 即可扩展。 目前的双插槽 x86 生产服务器可以拥有数十个核心和巨大容量的内存。 我们看到,在最近的 Caché 版本中,TrakCare 以及许多其他 Caché 应用程序具有可预测的线性扩展能力,能够随着单台服务器中 CPU 核心数量和内存的增加而支持逐渐增多的用户和事务。 在现场,我看到大多数的新部署都是虚拟化的,即使如此,虚拟机也可以根据需要扩展到主机服务器的规模。 如果资源需求超过单个物理主机可以提供的资源,则使用 ECP 进行横向扩展。

0
0 320
文章 Michael Lei · 六月 27, 2021 1m read

下载网址:

https://hub.docker.com/r/yape/yape/

$ docker container run --rm -v "$(pwd)":/data yape/yape --version
yape 2.2.6
 

在以下网址查看自述文件:

https://github.com/murrayo/yape

更改包括:

  • 恢复配置文件,进行了更多更改使 x 和 y 轴更智能。
  • 更新了配置文件中的线条样式选择。
  • 解决了 yyyy 日期和 yy 日期或退出的问题。 使窗口标题的日期字符串一致(去掉小数位),在标题中添加短日期。 
  • 提高了 y 轴上小于 10 的值的小数精度,例如 Windows 每次读取时间为秒,而不是 linux 中的毫秒
  • 更新 Python 库后的一些小错误修复。

现在,GitHub 和容器保持同步。

0
0 147
文章 Michael Lei · 六月 23, 2021 3m read

注(2019 年 6 月):许多内容发生了变化,最新的详细信息请参见此处 注(2018 年 9 月):自本帖首次发布以来,内容已经有了很大改动,我建议使用 Docker 容器版本,以容器形式运行的项目以及详细信息仍然在 GitHub 的同一个地址发布,您可以下载、运行并根据需要进行修改。

与客户合作进行性能评估、容量规划和故障排除时,我经常解包和查看来自 pButtons 的 Caché 和操作系统指标。 我不久前发布了一个帖子,介绍了一个用来解包 pButtons 指标的实用工具(该实用工具使用 unix shell、perl 和 awk 脚本编写),而不是费力地浏览 html 文件,再将需要绘制的部分剪切并粘贴到 excel 中。 虽然这是一个有用的省时工具,但还不够完善... 我还使用脚本自动绘制指标图表,以便快速查看并包含在报告中。 但是,这些绘图脚本不容易维护,并且当需要站点特定的配置(例如 iostat 或 Windows perfmon 的磁盘列表)时会变得特别混乱,所以我从未公开发布过绘图实用工具。 不过我现在可以很高兴地说,已经有了简单得多的解决方案。

当我与 Fabian 一起在客户站点查看系统性能时,有了意外发现,他向我展示了使用实用的 Python 绘图模块所做的工作

0
0 295