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

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

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

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






0
0 230
问题 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 125
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 184
公告 Claire Zheng · 五月 30, 2024

嗨,开发者们!

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

💡 第三届InterSystems创意大赛 💡

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

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

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

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

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

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

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

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

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

0
0 138
公告 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 391
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 146
文章 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 178
问题 water huang · 五月 10, 2024

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

2
0 166
文章 Qiao Peng · 五月 25, 2022 1m read

%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:

ClassMethod SearchGlobal(pSearchGlobal = "^QP(1,2)", pFilePath = "C:\InterSystems\IRISHealth\mgr\journal\20220525.003")
{
	Set tRS = ##class(%ResultSet).%New("%SYS.Journal.Record:List")
	Set tSC = tRS.Execute(pFilePath)

	While (tRS.Next()) 
	{
		Set address = tRS.Data("Address")
		Set globalNode = tRS.Data("GlobalNode")
		Set newValue = tRS.Data("NewValue")
		Set type = tRS.Data("TypeName")
		Set processid = tRS.
1
2 426
问题 deng hang · 三月 26, 2024

大家好:我编写一个简单的连接rabbitmq的测试代码;代码如下:

/// w ##class(Quality.TestMQTT).TestRabbitmq()
ClassMethod TestRabbitmq() As %Status [ Language = objectscript ]
{
Set jgw=$system.external.getJavaGateway()
;write jgw.new("java.util.Date").toString() ,!
set settings = ##class(%External.Messaging.RabbitMQSettings).%New()
set settings.host = "10.32.25.141"
set settings.port = 5672
set settings.virtualHost = "/"
set settings.username = "1892"
set settings.keyPassword = "123456"
set settingString = settings.ToJSON()
#dim client As %External.Messaging.RabbitMQClient
set client = ##class(%External.Messaging.Client).

1
0 155
InterSystems 官方 Claire Zheng · 四月 24, 2024

InterSystems IRIS、IRIS for Health和HealthShare HealthConnect的维护版本2022.1.5 & 2023.1.4现已发布

InterSystems IRISInterSystems IRIS for Health 和 HealthShare Health Connect 的两个扩展维护版本现已发布。

2022.1.5

2022.1.5 版提供此前发布的任一 2022.1.x 版中的Bug修复。

您可以在以下页面找到详细的变更列表和升级清单:

2023.1.4

2023.1.4 版提供此前发布的任一2023.1.x 版中的Bug修复。

您可以在以下页面找到详细的变更列表和升级清单:

如何获得该软件

该软件以经典安装包和容器映像两种形式提供。有关可用安装程序和容器映像的完整列表,请参阅 Supported Platforms webpage.

0
0 163
公告 Claire Zheng · 四月 23, 2024

在InterSystems,我们致力于为您提供最优质的服务,包括我们的Global Master项目

Global Master项目平台的供应商已经被另一家公司收购,不幸的是,我们无法继续在这个平台上托管我们Global Master项目。我们目前正在评估新的平台供应商,以推动Global Masters Advocate Hub的平稳过渡。

自2024年4月26日起,我们将暂停Global Master项目,以期平稳过度到新平台上。

FAQ:

0
0 156
文章 Louis Lu · 四月 23, 2024 2m read

当我们在设计一个需要重复使用的BP时候,往往需要开发一个可配置<call>的对象的组件,我们将call的target 设置为

@process.TargetConfigName

即可实现。

下面是完整代码:

Property TargetConfigName As Ens.DataType.ConfigName;Parameter
SETTINGS = "TargetConfigName:Basic";
/// BPL Definition
XData BPL [ XMLNamespace = "http://www.intersystems.com/bpl" ]
{
<process language='objectscript' request='Ens.Request' response='Ens.Response' height='2000' width='2000' >
<sequence xend='200' yend='450' >
<call name='Call configurable target' target='@process.TargetConfigName' async='1' xpos='200' ypos='250' >
<request type='Ens.
0
0 135
公告 Claire Zheng · 四月 22, 2024

Hi 开发者们,

我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,此次编程大赛关注生成式AI(GenAI), 向量搜索(Vector Search )与机器学习(Machine Learning)!

🏆 InterSystems 编程大赛:Vector Search, GenAI 与 ML 🏆

时间:2024年4月22日 - 5月19日 (美国东部时间)

奖金池: $14,000


0
0 312
文章 Hao Ma · 四月 12, 2024 3m read

SQL性能监控是DBA最重要的日常工作。经常被问起:"Caché/IRIS怎么发现慢SQL"? 答案很简单: 到管理门户的SQL页面,点开如下的“SQL语句“子页, 您能看到这个命名空间的所有执行过的SQL语句,知道每个SQL语句执行了多少次,平均执行时间是多少, 被那个客户端编译的,第一次执行是那一天等等。

请看下面的截图

图中的各个栏目基本都不需要解释,有个别的内容在这里总结一些:

  • 表/视图/存储过程名称:列出这个查询使用的所有的表/视图/存储过程的名字。如果你想看某个表有关的查询,可以使用上面的过滤器

  • 位置(Location) : 对于动态查询, 列出所使用的缓存的查询的类名,对于嵌入SQL(Embedded SQL)查询,列出使用的routine名字。

  • 每个字段的标题栏可以用于排序,比如上图是按执行次数倒序显示的,所以前几位都是执行了很多的INSERT。 如果是日常维护查找慢SQL, 您可以按平均时间倒序显示。

  • 计划状态: 通常是"Unfrozn"或者“Unfrozen/Parallel"。除非您需要升级或者有“Frozen Qeury Plan“的需要,您可以不关心这个栏目。

  • 用鼠标单击上图的最左列或者最右列“SQL声明文本”, 会显示这个SQL语句的详细执行数据。 注意这个页面上的两个按钮: “导出” 和**”查询测试“**, 您可以试试它们。

2
0 274
文章 Hao Ma · 四月 16, 2024 3m read

索引分析器工具用来分析索引的使用情况,对DBA和开发者非常有用。 他们需要知道那些查询进行了全表扫描,那些查询缺失了索引, 而那些索引从来又从来没有被用过。多余的索引降低系统性能,浪费了磁盘空间。

索引使用情况

到“管理门户”的" 系统 > SQL 性能工具 > SQL 索引分析器", 点击**“索引使用情况”**, 您将看到这样的图

执行SQL语句查询会带来更多的灵活性。上面的查询可以写成下面这个SQL,

SELECT TableName, indexname, UsageCount
FROM %SYS_PTools.UtilSQLAnalysisDB order by usagecount desc

2016年以后的Caché版本就已经有了'索引使用情况'的查询。使用管理门户没有区别, 但SQL语句不同,使用的是比较老的类和表名,各位请参考文档。

注意上图中另外几个按钮,它们的介绍在文档的这个链接, 简单的做个翻译:

全表扫描的查询:

可识别当前命名空间中进行全表扫描的所有查询。应尽可能避免全表扫描。全表扫描并非总能避免,但如果某个表有大量全表扫描,则应检查为该表定义的索引。通常情况下,表扫描列表和临时索引列表会重叠;修复一个会移除另一个。结果集列出了从最大块计数到最小块计数的表。显示计划链接可显示语句文本和查询计划。

0
0 317
文章 Hao Ma · 四月 15, 2024 3m read

SQL Performance Analysis Toolkit,或者叫SQL性能分析工具,并不是给维护人员使用的。

在RIS文档里是这么说的: 这个工具包里的工具收集SQL执行的详细信息,用来找出一个查询计划的特殊问题。 使用这些信息,开发人员改善这个查询的效率。 它可以非常大的增加服务器的开销。..., 它不应该被持续执行。

要做分析,首先您需要打开一个采集“SQL runtime Statistics"的开关来收集详细信息,这个开关默认的状态是OFF。 文档里说: The SQL Performance Analysis Toolkit offers support specialists the ability to profile specific SQL statements or groups of statements.

这里的"support specialists"指的是厂家的技术支持人员。

因此,总结如下:

  • **如果您是个生产环境的维护人员,除非有厂商的支持要求您执行,否则最好不要在生产系统使用这个工具。除非您有兴趣,想知道这个Toolkit是干什么的, 以便在有厂商人员需要您使用这个工具采集数据的时候,知道工作的大概, 否则不用往下看了。 **
0
0 230
文章 Hao Ma · 四月 10, 2024 7m read

为什么要读Query Plan, 在线文档中有句话是这么说的:

While the SQL compiler tries to make the most efficient use of data as specified by the query, sometimes the author of the query knows more about some aspect of the stored data than is evident to the compiler. In this case, the author can make use of the query plan to modify the original query to provide more information or more guidance to the query compiler.

翻译一下是这样:系统给你的查询计划并不总是最好的,如果您能对查询计划,可以人工做更精细的优化。

我们先看看读Query Plan的几个基本知识:

MAP

An SQL table is stored as a set of maps. 您有看到3种map: Master map, index map, bitmap.

# 回表读主数据,
- Read master map DWBC.CT_Dept.
0
0 195