文章 Michael Lei · 七月 7, 2024 2m read

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.
0
0 151
文章 Louis Lu · 七月 1, 2024 2m read

在 OEX 最近一次编程竞赛之后,我有一些令人惊讶的发现。
几乎所有的应用程序都是基于人工智能与预制 Python 模块的结合。
但深入研究后发现,所有示例都使用了 IRIS 的相同技术组件。

从 IRIS 的角度来看,无论是搜索文本还是搜索图像或其他模式都是一样的。 其底层基本都是一样的。

          这让我想起了我家里的情况。我的妻子和女儿对家里的大量裙子、衬衫和其他衣服的信息进行了整理。
          但无论如何进行整理、分类、归档,我依然通过和我的妻子和女儿说话,来确定我的穿着。
           无论怎样包装,其结果都是如此。

回到这次竞赛比赛:
同样的 IRIS 技术内容,却有很多花哨的包装。
每个人都在同一条高速公路上奔跑。没有人提到它有什么限制。

于是我试着深入挖掘,找出新数据类型 VECTOR 的使用限制。
所有向量都有两个基本参数
  - 静态 DATATYPE:"整型integer"(或 "int")、"double"、"十进制decimal"、"字符串 "和 "时间戳"。
  - 半动态 LEN(gth): > 0 通常也称为 POSITION;纯整数。

这个 LEN/POSITION 参数就相当于vector的数学维度。
当然,在爱因斯坦的宇宙中,根据他的相对论,你可能只需要 4 个维度或更少。
即使是 60 年代提出的宇宙弦理论也没有超过 11.

0
0 127
文章 Louis Lu · 七月 1, 2024 4m read

迄今为止,我看到的大多数使用向量vector的示例,将它只作为 SQL 中的一种功能,尤其是围绕 VECTOR_Search 的 3 个函数。
* TO_VECTOR()
* vector_dot_product ()
* vector_cosine ()

iris-vector-search 演示包中隐藏着一个非常有用的摘要。
从那里,你可以通过多个链接找到所需的一切。

我还缺少更多的 VECTOR 方法,于是在 Idea Portal 上提出了相关请求。

接着,我想起每个 SQL 方法或存储过程都有一堆 ObjectScript 代码。
于是我开始搜索,下面就是我的研究的一些总结:

%Library.Vector 是对新数据类型的核心描述
      这是一种复杂的结构,就像对象或 %DynamicObjects 或 $Bit Expressions 一样,需要特定的方式去访问。
我们还可以看到 2 个必备参数: 
      * DATATTYPE - 一旦设置就不能更改。 可接受的类型:  "整数integer"(或 "int")、"双精度浮点double"、"十进制decimal"、"字符串 "和 "时间戳"。
      * LEN >0 时,可以增长,但绝对不能缩小

$vector() / $ve() 是矢量访问的基本方法
      * 设置矢量数据 >>> SET $VE(. . .

0
0 138
文章 Louis Lu · 六月 30, 2024 1m read

你可以使用List query 对 %SYS.Audit 查询审计日志,代码如下:

 Set statement=##class(%SQL.Statement).%New()  
 Set status=statement.%PrepareClassQuery("%SYS.Audit","List")
 Set rs=statement.%Execute()  
 Set tab = $char(9)
 While rs.%Next() {    
   Write rs.%Get("TimeStamp")_tab_rs.%Get("Event")_tab_rs.%Get("Username"),!      
 }
0
0 99
文章 Jeff Liu · 六月 30, 2024 7m read
Purpose of this article

有两篇很棒的有关删除消息关联的孤儿记录的内容以及如何处理孤儿的问题的WRC议最佳实践文章Ensemble Orphaned Messages | InterSystems Developer Community | Best DeleteHelper - A Class to Help with Deleting Referenced Persistent Classes (intersystems.com)
本文并不是要取代 Intersystems 专业人员撰写的这些文章,而是要在此基础上介绍我们如何利用这些信息和其他讨论(包括我们实际清理这些数据的方法)来帮助我们的数据库变得更加紧凑。

情况说明:

我们的备份越来越多。年初的时候,我们遇到过一台服务器被强制故障的情况,需要进行还原。由于数据库庞大,即使复制这个数据库也需要很长时间,更不用说还原重建shadow服务器了。因此,我们不得不决定最终解决这一增长问题。最初的原因已经确定 

  1. 开箱即用的任务或者在某些时候假定已运行,但没有勾选信息体。这是因为在查询其中一个消息体时,我们得到了来自 10 多年前的 ID 1。该任务是最佳实践中提到的默认 Ens.Util.Tasks.Purge。这就引出了流程中的提示 1 

理解你的数据

您在数据库中存储了哪些数据?您是否有必须保存在记录表中的数据?

0
0 244
文章 Nicky Zhu · 六月 29, 2024 8m read

通过 REST API 将前端 React 应用程序与 IRIS 数据库等后端服务集成,是构建健壮网络应用程序的强大方法。但是,开发人员经常遇到的一个障碍是跨源资源共享(CORS)问题,由于网络浏览器强制执行的安全限制,该问题可能会阻止前端访问后端的资源。在本文中,我们将探讨在将 React Web 应用程序与 IRIS 后端服务集成时如何解决 CORS 问题。

创建Schema

我们首先定义一个名为 Patients 的简单Schema:

Class Prototype.DB.Patients Extends %Persistent [ DdlAllowed ]
{

Property Name As %String;

Property Title As %String;

Property Gender As %String;

Property DOB As %String;

Property Ethnicity As %String;
}

您可以在表中插入一些虚假数据进行测试。我个人认为 Mockaroo 在创建假数据时非常方便。它可以让你把虚拟数据下载为 .csv 文件,直接导入管理门户。

定义 REST 服务

然后,我们定义几个 REST 服务

Class Prototype.DB.RESTServices Extends %CSP.
0
0 270
文章 Jingwei Wang · 六月 23, 2024 8m read

低代码挑战

想象一下那个场景。您正在 Widgets Direct 愉快地工作,这是互联网上首屈一指的小部件和小部件配件零售商。您的老板有一些毁灭性的消息,一些客户可能对他们的小部件不太满意,我们需要一个帮助台应用程序来跟踪这些投诉。为了让事情变得有趣,他希望代码占用非常小,并挑战您使用 InterSystems IRIS 以少于 150 行代码交付应用程序。这可能吗?

免责声明:本文记录了一个非常基本的应用程序的构建,为了简洁起见,省略了安全性和错误处理等细节。该应用程序仅供参考,不得用于任何生产应用。本文使用IRIS 2023.1作为数据平台,并非所描述的所有功能在早期版本中都可用

第 1 步 - 定义数据模型

我们首先定义一个新的干净的命名空间 - 带有代码和数据数据库。虽然所有内容都可以位于 1 个数据库中,但将它们拆分以便于数据刷新。

我们的帮助台系统需要 3 个基本类:一个 Ticket 对象,它可以包含用于记录员工顾问 UserAccount 和客户联系人 UserAccount 之间交互的操作。让我们用一些基本属性来定义它们:

19 行代码,我们就有了完整的数据模型!我们将 2 个类设置为 Persistent,以便将它们保存到数据库中,并且还继承自 %JSON.Adapter,这使我们能够非常轻松地以 JSON 格式导入和导出对象。

0
0 192
文章 Louis Lu · 六月 11, 2024 8m read

这篇文章介绍了使用由支持 langchain 框架的IRIS来实现问答聊天机器人,其重点介绍了检索增强生成(RAG)。

文章探讨了IRIS中的向量搜索如何在langchain-iris中完成数据的存储、检索和语义搜索,从而实现对用户查询的精确、快速的响应。通过无缝集成以及索引和检索/生成等流程,由IRIS驱动的RAG应用程序使InterSystems开发者能够利用GenAI系统的能力。

为了帮助读者巩固这些概念,文章提供了Jupyter notebook一个完整的问答聊天机器人应用程序,以供参考。

什么是RAG以及它在问答聊天机器人中的角色

RAG,即检索增强生成,是一种通过整合超出初始训练集的补充数据来丰富语言模型(LLM)知识库的技术。尽管LLM在跨不同主题进行推理方面具有能力,但它们仅限于在特定截止日期之前训练的公共数据。为了使AI应用程序能够有效处理私有或更近期的数据,RAG通过按需补充特定信息来增强模型的知识。这是一种替代微调LLM的方法,微调可能会很昂贵。

在问答聊天机器人领域,RAG在处理非结构化数据查询中发挥着关键作用,包括两个主要组成部分:索引和检索/生成。

索引从数据源摄取数据开始,然后将其分割成更小、更易于管理的块以进行高效处理。这些分割的块随后被存储和索引,通常使用嵌入模型和向量数据库,确保在运行时能够快速准确地检索。

0
0 440
文章 Louis Lu · 六月 10, 2024 2m read

列式存储是 InterSystems IRIS 提供的一项较新的技术。与传统的基于行的存储不同,它通过将数据存储在列而不是行中来优化查询处理,从而实现更快的访问和检索相关信息。

 

下面是使用SQL创建此类表的例子

CREATE TABLE table (column1 type1, column2 type2, column3 type3) WITH STORAGETYPE = COLUMNAR  -- ex 1
CREATE TABLE table (column1 type1, column2 type2, column3 type3 WITH STORAGETYPE = COLUMNAR)  -- ex 2

我们知道InterSystems IRIS 是支持多模型的DMBS, 它可以无缝的通过关系型或对象的方式访问通一数据,

我们使用下面的方式在使用Object Script类定义的时候定义列存储:

1. 如果你想对类中的所有属性都定义为列存储,则直接通过在类中添加parameter 的方式实现:

Parameter STORAGEDEFAULT = "columnar" 

如前面的例子,我们使用object script定义就会是这样:

Class Post.
0
0 201
公告 Claire Zheng · 六月 3, 2024
SUTA培训作为专业的InterSystems技术学习平台之一,汇聚了权威技术专家与值得探讨的技术主题,内容涵盖了InterSystems数据平台基础管理运维的技能和知识。通过SUTA培训,新客户能够系统学习管理运维工作的整体架构和基础概念,老客户可以更深入、全面地加强对管理运维工作的理解和提升。

InterSystems 2024 SUTA培训现已启动,欢迎参加!

  • 如果您是首次参加SUTA培训,请点击此处 或 扫描下图左侧的二维码注册报名。报名信息需经过审核,请您耐心等待。审核通过的用户,点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。
  • 如果您曾报名参加过2022年、2023年的SUTA培训,无需重复注册报名。点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。

建议通过电脑端参加培训,点击进入直播间

 

 

 

 


0
0 225
问题 Tom Ming · 五月 14, 2024

VIP:192.168.30.111,故障转移节点一(192.168.30.10),故障转移节点二(192.168.30.11),ECP地址192.168.30.100

在配置时ECP里增加数据服务器IP为【主】故障转移节点一(192.168.30.10)【文档说不能使用VIP地址】后,

如果主从切换。ECP里的数据服务器IP,会自动变换成故障转移节点二(192.168.30.11)【此时为主】吗?

如果不能,需要手动变更吗?还是不需要?

2
0 124
InterSystems 官方 Claire Zheng · 五月 30, 2024

从发布InterSystems IRIS®数据平台2022.3开始,InterSystems修改了许可证强制执行机制,以包括REST和SOAP请求。由于这种变化,在升级后,使用REST或SOAP的非处理器核数的许可证环境下,用户可能会遇到更高的许可证消耗。要确定此警报是否适用于您的InterSystems许可证,请按照下面链接的FAQ中的说明进行操作。

下表总结了强制执行变更情况:







产品

许可证强制执行中是否包含REST & SOAP 请求?

InterSystems Caché®

InterSystems Ensemble®

InterSystems IRIS, InterSystems IRIS® for Health, and Health Connect prior to 2022.3

InterSystems IRIS, InterSystems IRIS for Health, and Health Connect 2022.3 and later

 

客户要求在Caché和IRIS之间实现许可证强制执行的一致性。

1
0 183
公告 Claire Zheng · 五月 30, 2024

嗨,开发者们!

我们非常高兴地邀请开发者社区的所有成员(包括InterSystems员工)我们的最新竞赛!

💡 第三届InterSystems创意大赛 💡

我们正在寻求您的创新想法,以增强InterSystems的产品和服务。我们鼓励基于现实生活用例的建议,凸显您的创意将给其他用户带来的切实好处,以及它将如何增强开发人员使用InterSystems技术的体验。

📅 参赛时间:2024年6月10日-7月7日

🏆 我们为最佳创意准备了丰富的奖品!

🎁 我们也为每一位参赛者准备了礼物:只要您的创意被大赛接受,就会收到一份特别的礼品。

 

>> 从6月10日起,即可提交您的创意! <<

0
0 263
公告 Claire Zheng · 五月 20, 2024

为推动《“十四五”全民健康信息化规划》全面实施,充分发挥国家医疗健康信息互联互通标准化成熟度评测工作对区域医疗信息交换促进作用,为医疗数据合规高效流通使用奠定坚实基础。《中国卫生信息管理杂志》社主办、深圳市卫生健康信息协会协办、InterSystems中国承办的区域信息互联互通新发展研讨会于5月11日在深圳举办。

国家卫生健康委统计信息中心胡建平副主任线上参会并致辞、广东省卫生健康委员会事务中心傅承主副主任、深圳市卫生健康信息协会林德南会长参加会议并致辞。胡建平副主任在视频致辞中强调了医疗健康信息互联互通标准化成熟度测评对区域全民健康信息化和智慧医院建设起到的重要作用,总结了互联互通标准化成熟度测评主要开展的四方面工作,指出下一步工作要从网络通、应用通、数据通等三个维度持续发力,通过叠加区块链等信息技术,实现互联互通从1.0阶段向2.0阶段跃迁,赋能卫生健康事业高质量发展。

查看精彩内容回放:欢迎扫描下图中的二维码或点击此处如果您已报名过此次会议,使用报名时的手机号码即可登录查看,如首次登录,需填写报名信息后查看

 

 

0
0 137
公告 Claire Zheng · 五月 20, 2024

Hi 开发者们,

近期我们举办的有奖调研得到了大家的踊跃支持,现将结果分享如下——

 

调研奖励

以下参与者获得此次调研奖励,请于5月31日前通过后台与我联系,或将您的快递地址发送到邮箱claire.zheng@intersystems.com,我们将于近期陆续寄出奖品。

AirTag

@liu bo (https://cn.community.intersystems.com/user/liu-bo)

充气颈枕

@water huang (https://community.intersystems.com/user/water-huang)

@he hf  (https://cn.community.intersystems.com/user/he-hf)

桌面吸尘器

@YuHao Wan (https://cn.community.intersystems.com/user/yuhao-wan)

@Yongfeng Hou (https://cn.community.intersystems.com/user/yongfeng-hou)

@zhu liang (https://cn.community.intersystems.com/user/zhu-liang)

@qing he (https://community.intersystems.com/user/qing-he)

@Qi.

0
0 121
文章 Hao Ma · 五月 17, 2024 3m read

最近有某国内三甲医院为满足评级和飞行检查要求,希望提升HIS和IRIS的SQL查询效率,客户和实施工程师整理了一个慢查询的SQL列表, 有一些查询比较慢, 查询时间在甚至大于60分钟。

在我们和厂商共同努力下,对整个库的SQL查询做了优化。 下表是记录了我们在进行了大部分优化工作后的结果,您可以看到大多查询从几十分钟减少到了几十秒甚至1秒以内。其中有几个慢到几分钟的查询,最后经过细调, 也把查询耗时减少到了一分钟以内。 优化的效果还是很明显的。

这里我分享一下操作的要点,以便给其他有同样问题的客户一个思路。

其实如果您看过我前面的帖子,应该已经有了基本的概念。我就把工作流程总结一下,其实就这么几个步骤:

步骤一:

检查硬件配置。 配置中和SQL性能相关的有这么几个: 1. 数据缓存大小,应该至少为物理内存的一半以上。 2. BBSIZE, 也就是单个进程最大的内存占用,对应不同的Caché/IRIS版本和不同的应用,这个配置有区别,但当然是越大越好,询问您的实施工程师配置是否正确。 3. 是否使用了大页内存,这个能从messages.log里看到。

步骤二

执行Tunetable。 在上面说的这个客户的系统上从来没人执行过Tunetable, 因此SQL引擎其实是没法正确工作的。执行后基本可以解决80%的慢SQL问题。时间短风险小见效快, 找个半夜业务小的时候直接在生产环境执行。

0
0 389
InterSystems 官方 Claire Zheng · 五月 15, 2024

InterSystems 很高兴地宣布现已推出:

  • InterSystems IRIS Data Platform 2024.1.0.267.2
  • InterSystems IRIS for Health 2024.1.0.267.2
  • HealthShare Health Connect 2024.1.0.267.2

该版本新增了对 Ubuntu 24.04 操作系统的支持。Ubuntu 24.04 包括 Linux 内核 6.8、安全性改进以及安装程序和用户界面改进。 InterSystems IRIS IntegratedML 在 Ubuntu 24.04 上尚不可用。

此外,该版本还解决了所有平台的两个缺陷:

  • 修复了某些使用 "NOT %INLIST "的 SQL 查询返回错误结果的问题。我们以前曾就此错误发出过警告
  • 修正了某些特定情况下堆栈跟踪不完整的问题。

如何获取软件

与往常一样,Extended Maintenance (EM) 版本附带适用于所有支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅 "受支持的平台 "页面。

经典安装包

安装包可从 WRC 的 "Extended Maintenance Releases"页面获取。此外,还可在Evaluation Services上找到安装包。

0
0 145
文章 Hao Ma · 五月 15, 2024 4m read

SQL查询优化器一般情况下能给出最好的查询计划,但不是所有情况都这样,所以InterSystems SQL还提供了一个方式, 也就是在查询语句里加入optimize-option keyword(优化关键字), 用来人工的修改查询计划。

比如下面的查询:

SELECT AVG(SaleAmt) FROM %PARALLEL User.AllSales GROUP BY Region

其中的%PARALLEL, 就是最常用的优化关键字, 它强制SQL优化器使用多进程并行处理这个SQL。

您可以这样理解: 如果查询优化器足够聪明,那么绝大多数情况下,根本就不需要优化关键字来人工干预。因此,您也一定不奇怪在不同的IRIS/Caché版本中, 关键字的表现可能不一样。越新的版本,应该是越少用到。比如上面的%PARALLEL, 在Caché的大多数版本中, 在查询中加上它一般都能提高查询速度,而在IRIS中,尤其是2023版本以后, 同样的SQL查询语句,很大的可能查询优化器已经自动使用多进程并行查询了,不再需要用户人工干预了。

因此,先总结有关优化关键字的要点:

  1. 优化关键字主要是FROM语句中使用。 UPDATE, INSERT语句也有可以使用的关键字,比如%NOJOURAL等等, 这里我不介绍了,请各位自己查询文档。

0
0 174
问题 water huang · 五月 10, 2024

我新建了命名空间,然后新加了用户,新加了角色,给角色授权了%DB_%DEFAULT资源和%Ens_Portal(因为新加的命名空间默认应用就是这个必要资源),然后访问这个空间下的webservice,报错为权限不足,如果再加上%EnsRole_WebDeveloper就可以成功访问,但是加上它后,用户就能登录portal里面的,我不想让它访问这个 ensemble,请问我应该怎么配置权限资源

2
0 161