2022年9月9日,我们将举办线上“InterSystems 2022全球峰会亮点解读”,点击此处参会。
InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。
InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。
2022年9月9日,我们将举办线上“InterSystems 2022全球峰会亮点解读”,点击此处参会。
在我们开始谈论数据库和现有的不同数据模型之前,我们最好先谈谈什么是数据库以及如何使用它。
一个数据库是以电子方式存储和访问的有组织的数据集合。 它用于存储和检索通常与主题或活动相关的结构化、半结构化或原始数据。
每个数据库的核心至少存在一个用于描述其数据的模型。 并且根据它所基于的模型,一个数据库可能具有略微不同的特征并存储不同数据类型。
要写入、检索、修改、排序、转换或打印数据库中的信息,需要使用称为数据库管理系统 (DBMS) 的软件。
数据库及其各自的数据库管理系统的大小、容量和性能增加了几个数量级。 各个领域的技术进步使之成为可能,例如处理器、计算机内存、计算机存储和计算机网络。 一般来说,数据库技术的发展根据数据模型或结构分为四代:导航型、关系型、对象型和后关系型。


与以特定数据模型为特征的前三代不同,第四代包括许多基于不同模型的不同数据库。 它们包括列、图、文档、组件、多维、键值、内存等。所有这些数据库都由一个单一的名称 NoSQL 联合起来(没有 SQL,或者现在更准确地说不仅仅是 SQL)。
而且,现在出现了一个新的类,叫做NewSQL。 这些是现代关系数据库,旨在为在线事务处理工作负载(读写)提供与 NoSQL 系统相同的可扩展性能,同时使用 SQL 和维护 ACID。
顺便说一下,在这些第四代数据库中,有那些支持上述提及的多种数据模型的数据库。 它们被称为多模型数据库。
我很高兴与大家分享我第一次使用docker容器版本的IRIS for Health的经验,以探索你对使用或试用的兴趣,利用docker容器的优势,它是轻量级的,易于部署。本文将通过使用Renan Lourenco编写的名为ENSDEMO的GitHub仓库的实施步骤。
设置IRIS for Health社区版docker容器环境的步骤:
docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.304.0
git clone https://github.com/OneLastTry/irishealth-ensdemo
docker-compose build
docker-compose up -d
在我最初的尝试中,我无法下载irishealth community:2022.2.0.304.0的确切版本,因为它在ENSDEMO的最初发布中已经发生了变化。修复方法是,当试图从InterSystems容器注册表拉出docker镜像时,在注册表中拉出最新的可用标签。
各位开发者,
新的视频已经发布在BiliBili平台:
⏯ 在InterSystmes IRIS 使用 Business Process Designer(业务流程设计器)
Hi 大家好!
我经常会看到CSP 应用提示一些没有什么意义的错误信息,比如:
.png)
InterSystems 有解析log文件的工具或者API吗?
我需要在当前命名空间下创建一系列的只读类,并限制除_system之外的所有用户都只有读取权限,无法在studio中编译,请问我应该如何操作呢?
我的目的是可以在工程的项目分支中管理这些类,并通过发布方式持续升级这部分类文件。
但是这些类的内部逻辑有可能会需要维护人员能够知晓其中的功能和实现方式,所以不能通过MakeDeployed来解决这个问题
我现在知道可以通过设置database的读写属性来解决这个问题,但是这样就需要额外新建一个database并maping到当前命名空间下。采取这种方式处理时有一个重大的缺点,即在执行代码发布过程中,需要停库,并且停库时间可能会在半个小时左右,这个我无法接受。
亲爱的开发者们!
到了展示互操作性技术的时候了!来参加我们最新的竞赛吧!
🏆 InterSystems开发者大赛:以互操作性技术为可持续发展构建解决方案 🏆
时间: 8月29日-9月19日(北京时间)
奖金更高: $13,500 – 请留意,奖金分配跟以往有所不同!
IRIS 将系统范围的配置信息存储在称为配置参数文件 (CPF) 的文件中。该文件是一个重要工具,因为它包含IRIS 实例的大部分可配置设置。每个实例都部署了一个默认 CPF,它位于安装目录中。可以直接在文本编辑器中修改 CPF,也可以从管理门户或终端间接修改。在 UNIX® 和 Linux 上,还可以通过指定配置合并文件在部署期间自定义 CPF IRIS 使用该文件在实例首次启动之前更新默认 CPF。
对于任何新安装的实例,必须更改几个启动设置,以及应该查看的其他设置。本节讨论最初要考虑的这些设置:
当第一次安装 IRIS 时,应该查看和调整内存分配以及其他配置设置。在确定 IRIS 实例使用内存的方式时,必须采取三个主要操作,如下所示:
使用内存和启动页面(系统管理 > 配置 > 系统配置 > 内存和启动)为数据库和例程缓存分配内存。
设置 IRIS 进程可以使用的最大内存
配置通用内存堆(也称为共享内存堆)的大小,这决定了 IRIS 可用于例程和数据库缓存之外的其他用途的内存;
重要提示:首次安装 IRIS 时,数据库和例程缓存内存分配设置为自动,在此情况下, IRIS 为数据库缓存(全局缓冲区)分配总物理内存的 25%。
此设置不适用于生产用途。
Hi 社区的朋友们,大家好!
有时我们需要以编程方式自动将CSV数据从文件或者UR网址L导入到InterSystems IRIS。我们希望创建具有适当数据类型的类并导入数据。
我在Open Exchange上发布了一个模块csvgen,它正是这样做的。
如果你只需要将CSV文件导入IRIS,你可以这么做:
USER>do ##class(community.csvgen).Generate("/usr/data/titanic.csv",,"Data.Titanic")
Class name: Data.Titanic
Header: PassengerId INTEGER,Survived INTEGER,Pclass INTEGER,Name VARCHAR(250),Sex VARCHAR(250),Age INTEGER,SibSp INTEGER,Parch INTEGER,Ticket VARCHAR(250),Fare MONEY,Cabin VARCHAR(250),Embarked VARCHAR(250)
Records imported: 891
USER>或者你的CSV文件在互联网上, 例如GitHub上面的新冠疫情数据 你可以这样获得数据:
USER>d ##class(community.csvgen).GenerateFromURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/05-29-2020.csv",",","Data.Covid19")
Class name: Data.Covid19
Header: FIPS INTEGER,Admin2 VARCHAR(250),Province_State VARCHAR(250),Country_Region VARCHAR(250),Last_Update DATE,Lat MONEY,Long_ DOUBLE,Confirmed INTEGER,Deaths INTEGER,Recovered INTEGER,Active INTEGER,Combined_Key VARCHAR(250),Incidence_Rate DOUBLE,Case-Fatality_Ratio DOUBLE
Records imported: 3522
USER>第11讲 Git IDEA VS GitHub
第12讲 Git Gitee 简介使用
第13讲 Git Android Stuido VS Gitee
会议 ID:818 298 9668
8-29晚 21:00-22:00 点
创造价值,分享学习,一起成长,相伴前行
还有Cache学习系列
嗨,开发者们。
不要错过这个由InterSystems Healthcare副总裁@Donald.Woodlock主持的动手实践环节:
⏯ Machine Learning 201 - Neural Networks and Image Recognition
Hi 社区成员们,
我们很高兴地宣告 社区网络研讨会 回归了!
我们诚邀您参加 @sween 主讲的 使用ECP在AWS上扩展InterSystems FHIR Server 网络研讨会。
Join this webinar to make a technical deep dive, see a demonstration, and benchmark horizontal scaling InterSystems FHIR Server on Amazon Web Services with Enterprise Cache Protocol (ECP). 欢迎加入此次网络研讨会,深入了解技术,观看演示,并在AWS上使用企业缓存协议(ECP)基准测试水平扩展InterSystems FHIR Server。
⏱ 时间: 8月18日(周四)8am (美国东部时间) | 2:00pm (中欧夏季时间)| 8:00pm (北京时间)
👨🏫 主讲人: @sween, 全栈架构师,来自Integration Required
导入了一个global(.gof文件),如何利用导入的数据生成dashboard,求指导。
在这篇文章中,你可以访问InterSystems开发者社区中与学习InterSystems IRIS最相关主题的文章库。找到按机器学习、嵌入式Python、JSON、API和REST应用、管理和配置InterSystems环境、Docker和云、VSCode、SQL、分析/BI、全局、安全、DevOps、互操作性、Native API排列的顶级发表的文章。快来享受学习的乐趣吧!
机器学习是建立先进的数据分析和自动化人工活动的一种必要的技术,具有很好的效率。它可以创建认知模型,从现有的数据中学习,并根据其自我调整的算法进行预测、概率计算、分类、识别和 "非创造性 "的人类活动的自动化。
在所有情况下,InterSystems IRIS作为一个数据平台和环境来创建、执行、提供和使用这些机器学习模型。IRIS能够从SQL命令(IntegratedML)中使用ML,使用嵌入式Python和PMML(预测模型标记语言)来执行ML。你可以在以下文章中查看它的功能:
|
标题
|
描述
|
地址URL
|
|---|---|---|
|
一体化机器学习动手实验
|
一体化机器学习概览ML
|
下面是一个ObjectScript片段,它允许为InterSystems IRIS创建数据库、命名空间和Web应用程序:
set currentNS = $namespace
zn "%SYS"
write "Create DB ...",!
set dbName="testDB"
set dbProperties("Directory") = "/InterSystems/IRIS/mgr/testDB"
set status=##Class(Config.Databases).Create(dbName,.dbProperties)
write:'status $system.Status.DisplayError(status)
write "DB """_dbName_""" was created!",!!
write "Create namespace ...",!
set nsName="testNS"
//DB for globals
set nsProperties("Globals") = dbName
//DB for routines
set nsProperties("Routines") = dbName
set status=##Class(Config.Namespaces).Create(nsName,.nsProperties)
write:'status $system.Status.DisplayError(status)
write "Namespace """_nsName_""" was created!",!!
write "Create web application ...",!
set webName = "/csp/testApplication"
set webProperties("NameSpace") = nsName
set webProperties("Enabled") = $$$YES
set webProperties("IsNameSpaceDefault") = $$$YES
set webProperties("CSPZENEnabled") = $$$YES
set webProperties("DeepSeeEnabled") = $$$YES
set webProperties("AutheEnabled") = $$$AutheCache
set status = ##class(Security.Applications).Create(webName, .webProperties)
write:'status $system.Status.DisplayError(status)
write "Web application """webName""" was created!",!
zn currentNS
不久前,GitHub推出了在浏览器中快速运行VSCode的功能,可以在任何仓库中运行。 在任何仓库或拉动请求上按下 . 键,或将URL中的.com换成.dev,就可以直接进入浏览器中的VS Code环境。

这个VSCode是桌面版的轻型版本,完全基于浏览器。由于这个原因,它对允许以这种方式工作的扩展插件有限制。让我介绍一下VSCode-ObjectScript扩展的新版本1.2.1,它现在支持在浏览器模式下运行。
有时,有必要从主机操作系统的Shell(即你的ObjectScript程序所在的地方)执行命令,以启动程序、操作系统服务、安排crontasks以及其他活动。为此,该语言有一个叫做$ZF(-100). 的实用程序:
$ZF(-100,flags,program,args)
其中flags是你想执行的命令的类型。在我们的例子中,标志是"/ SHELL",用于在主机操作系统上执行shell命令。
Program是要执行的程序或服务的名称。
Args是传递给程序的执行参数。
一个例子是在提示符下打印一些内容,例如:
$ZF(-100,"/SHELL","echo","https://www.intersystems.com/")
如果你的程序依赖于改变当前目录,要运行该程序,在调用前使用以下命令:
Do ##class(%SYSTEM.Process).CurrentDirectory("/path/")在测试你的代码时,你经常会遇到需要检查对象的实际内容。无论是使用 ZWRITE 还是 $system.OBJ.Dump(),
你会得到一个简单的属性图片,"--- 属性值---"
而 "--- swizzled references ---" 更容易让人混淆
用“--- calculated references ---" 你只是被留在了后面。
ObjectScriptt至少有三种处理错误的方法(状态代码status codes、异常 exceptions, SQLCODE等)。大多数系统代码使用状态码,但由于一些原因,异常更容易处理。在处理遗留代码时,你要花一些时间在不同的技术之间进行转换。我经常使用这些片段作为参考。希望它们对其他人也是有用的。
///Status from SQLCODE: set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg)) //embedded SQL set st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(rs.%Message)) //dynamic SQL ///Exception from SQLCODE: throw ##class(%Exception.SQL).CreateFromSQLCODE(SQLCODE,%msg) //embedded SQL throw ##class(%Exception.SQL).CreateFromSQLCODE(rs.%SQLCODE,rs.%Message) //dynamic SQL throw:(SQLCODE'=0)&&(SQLCODE'=100) ##class(%Exception.SQL).
在这篇文章中,我试图找出多个领域来开发我们能够使用python和机器学习的功能。
每家医院都在努力利用技术和服务来提高其服务质量和效率。
医疗保健部门是一个非常大的、可供选择的服务领域,而python是做机器学习的最好技术之一。
在每个医院里,人们都会有一些感觉,如果这种感觉能够被计算机理解,使用技术就有机会提供更好的服务。
在这里,我们可以把这两者结合起来,在医疗部门,我正试图理解/识别各种选择,以提供更好的服务。
首先,我们可以尝试使用python的机器学习来识别人并了解他们目前的感受。比如,在医院信息系统中,每个病人至少有一张照片,使用该照片我们可以识别病人,然后一旦病人到达医院,使用视频监控和机器学习技术需要识别这个人的感觉。
在医院设施中会看到多种类型的感觉。
1)紧张
2)平静和冷静
3) 哭泣
4) 暴力的病人/亲属
5) 生病的病人
6) 高烧鉴定
像上面的情况,我们可以看到多种不同的类型。
如果一个已经登记的病人发高烧,那么使用闭路电视识别这个病人的情况,并捕捉温度热像仪,护理人员可以给予更好的支持,这在接待服务领域是非常大的区别。
如果这个发高烧的人已经是一个登记的病人,如果利用现有的照片识别这个病人,那么我们可以做多件事情。
1)如果该病人今天有预约,我们可以自动到达该病人处。
索引提供了一种机制,通过维护常用数据的分类子集来优化查询。确定哪些字段应该被编入索引需要一些思考:太少或错误的索引,关键查询会运行得太慢;太多的索引会减慢INSERT和UPDATE的性能(因为索引值必须被设置或更新)。
为了确定添加索引是否能提高查询性能,从管理门户的SQL界面运行查询,并在Performance中注意 global引用的数量。添加索引,然后重新运行查询,注意 global引用的数量。一个有用的索引应该减少 global引用的数量。你可以通过使用%NOINDEX关键字作为WHERE子句或ON子句条件的前言来阻止索引的使用。
你应该对JOIN中指定的字段(属性)进行索引。例如,LEFT OUTER JOIN从左表开始,然后查看右表,因此,你应该对右表的字段进行索引。在下面的例子中,你应该为T2.f2编制索引。一个INNER JOIN应该在两个ON子句字段上都有索引。
FROM Table1 AS T1 LEFT OUTER JOIN Table2 AS T2 ON T1.f1 = T2.f2如果查询计划中的第一个项目是 "read master map",或者查询计划调用的模块的第一个项目是 "read master map",那么查询的第一个map就是master map而不是索引map。
IRIS 命令qlist或list可以用来把输出结果输出到一个文件。
qlist的结果以文本格式输出,以^为分隔符。
第三部分,以^为界,包含运行状态数据。
$ cat iris.log
IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris
在列表的情况下,以status:为前缀的一行包含运行状态数据。
对于基于Unix的操作系统
$ cat iris.log
Configuration 'IRIS' (default)
directory: /Applications/iris
versionid: 2021.2.0.650.0
datadir: /Applications/iris
conf file: iris.
Hi Community,
C:\InterSystems\IRISHealth\CSP\bin.csp.cni 有用户名, 但密码被加密了,如何解密或者重置?
谢谢!
假设有一个类 "X.Y.Z"
它的SQL表名称是什么?如何通过ObjectScript获取??
快速的搜素不能显示任何方法或属性。文档有点 "不对" 说 SQL 表名称是一样的. 至少应该是 'x_y.z'.
答案见英文社区:https://community.intersystems.com/post/getting-sql-table-name-given-cl…
Hi, 请问如何更改表(有数据)上的主键?谢谢!
答:
如果数据已经存在,那么这是一项必须重视的任务,特别是如果存在继承或父/子关系,因为这将导致你的数据存储方案的改变。
最简单的方法是通过一个中间(临时)表来实现。
创建一个具有相同结构的新类,但有一个新的主键。
使用SQL(不是合并命令)将数据从旧的类中移到它里面。
删除旧类中的数据/索引,然后改变其中的主键。
使用合并命令,将数据从新类移到旧类中。
删除带有数据的新类。
重建索引(如果有的话)。
几个有用的链接:
MERGE
如果仍然有问题,最好向WRC寻求帮助。
VSCode 是目前很流行的一款免费开发工具,IRIS也支持使用其进行连接和开发,相比Studio 只能在windows 环境使用,Vscode 可以跨平台使用。
我们传统的工具Studio 是连接代码服务器的形式,不能便捷的使用目前流行的有本地代码的版本控制工具(如git),但VSCode可以存在本地代码,并且能方便的使用各类存在本地代码的版本控制工具。
以下的内容会帮助大家来配置使用VSCode连接IRIS 进行开发。
InterSystems Native SDK for Python是 InterSystems IRIS APIs 的轻量级接口,曾经只能通过 ObjectScript 使用。
准确地说,我对调用 ObjectScript 方法、类方法的能力特别感兴趣。 它可以工作,而且效果很好,但默认情况下,调用只支持标量参数:字符串、布尔值、整数和浮点数。
但如果你想:
- 传递或返回结构,例如字典或列表
- 传递或返回流
您需要编写一些粘合代码或使用这个project (使用 pip install edpy 安装)。 edpy 包会给你一个简单的签名:
它允许您调用任何 ObjectScript 方法并返回结果。
开始 - 请拉到页面底部查看该系列文章第一部分 .
3. 使用globals时结构的变体
一个结构,比如说一个有序排列的“树”,有各种特殊的情况。让我们来看看那些对使用globals有实际价值的情况。
我现在在使用object script。如果把代码从 objectscript转成 Java 我需要做些什么?