搜索​​​​

清除过滤器

#InterSystems API管理器(IAM)

14 帖子0 关注者
文章
姚 鑫 · 六月 8, 2021

第一章 InterSystems XML工具简介

# 第一章 InterSystems XML工具简介 介绍了如何使用 IRIS `XML`工具。 InterSystems IRIS为`XML`处理带来了对象的力量--可以使用对象作为`XML`文档的直接表示,反之亦然。由于InterSystems IRIS包括本机对象数据库,因此可以将此类对象直接用于数据库。此外,InterSystems IRIS提供了用于处理`XML`文档和`DOM`(文档对象模型)的工具,即使它们与任何InterSystems IRIS类无关。 # 用XML表示对象数据 有些InterSystems IRIS `XML`工具主要用于支持`XML`的类。要为类启用`XML`,需要将`%XML.Adaptor`添加到其超类列表中。`%XML.Adaptor`类使能够将该类的实例表示为XML文档。可以添加类参数和属性参数来微调投影。 ![image](/sites/default/files/inline/images/1_48.png) 对于启用了`XML`的类,数据可以采用以下所有形式: - 包含在类实例中。根据类的不同,还可以将数据保存到磁盘,在磁盘中数据可以像其他持久类一样以所有相同的方式使用。 - 包含在`XML`文档中,可以是文件、流或其他文档。 - 包含在`DOM`(文档对象模型)中。 下图概述了用于在这些表单之间转换数据的工具: ![image](/sites/default/files/inline/images/2_28.png) `%XML.Writer`类使能够创建`XML`文档。输出目的地通常是文件或流。确定要包括在输出中的对象,系统根据在类定义中建立的规则生成输出。 `%XML.Reader`类使能够将合适的`XML`文档导入到类实例中。源通常是文件或流。要使用此类,需要指定类名和`XML`文档中包含的元素之间的关联。给定的元素必须具有相应类所需的结构。然后您逐个节点地阅读文档。这样做时,系统会创建该类的内存中实例,其中包含在`XML`文档中找到的数据。 `DOM`也是处理`XML`文档的有用方法。可以使用`%XML.Reader`类读取`XML`文档并创建表示它的`DOM`。在此表示中,`DOM`是一系列节点,可以根据需要在它们之间导航。具体地说,将创建`%XML.Document`的一个实例,该实例表示文档本身并包含节点。然后使用`%XML.Node`检查和操作节点。如果需要,可以使用`%XML.Writer`重新编写XML文档。 InterSystems IRIS `XML`工具提供了许多方法来访问和修改`XML`文档和`DOM`中的数据。 # 创建任意XML 还可以使用InterSystems IRIS `XML`工具创建和使用任意XML-即不映射到任何InterSystems IRIS类的`XML`。要创建任意XML文档,请使用`%XML.Writer`。该类提供了用于添加元素、添加属性、添加命名空间声明等的方法。 要创建任意DOM,请使用`%XML.Document`。该类提供了一个类方法,该方法返回具有单个空节点的DOM。然后根据需要使用该类的实例方法添加节点。 或者使用`%XML.Reader`读取任意XML文档,然后从该文档创建DOM。 # 访问数据 InterSystems IRIS `XML`工具提供了几种访问XML格式数据的方法。下图显示了摘要: ![image](/sites/default/files/inline/images/3_23.png) 对于任何格式良好的XML文档,都可以使用以下类来处理该文档中的数据: - `%XML.TextReader`-可以使用它逐个节点地读取和解析文档。 - `%XML.XPATH.Document`-可以使用它来获取数据,方法是使用引用文档中特定节点的`XPath`表达式。 在InterSystems IRIS中,DOM是`%XML.Document`的实例。该实例表示文档本身并包含节点。可以使用该类的属性和方法从`DOM`中检索值。可以使用`%XML.Node`检查和操作节点。 # 修改XML InterSystems IRIS XML工具还提供了修改`XML`格式数据的方法。下图显示了摘要: ![image](/sites/default/files/inline/images/4_17.png) 对于`XML`文档,可以使用`%XML.XSLT.Transformer`中的类方法执行`XSLT`转换并获得文档的修改版本。 对于DOM,可以使用`%XML.Document`的方法修改`DOM`。例如,可以添加或删除元素或属性。 # SAX解析器 InterSystems IRIS XML工具使用InterSystems IRIS SAX(Simple API For XML)解析器。这是一个内置的SAX XML验证解析器,使用标准`Xerces`库。`SAX`是一个解析引擎,它提供完整的XML验证和文档解析。InterSystems IRIS SAX使用高性能的进程内调入机制与InterSystems IRIS进程通信。使用此解析器,可以使用内置的InterSystems IRIS XML支持或通过在InterSystems IRIS中提供您自己的自定义`SAX`接口类来处理`XML`文档。 对于特殊应用程序,可以创建自定义实体解析器和内容处理程序。 可以使用行业标准的`XMLDTD`或模式验证来验证任何传入的`XML`,并且可以指定要解析的XML项。 # 其他XML工具 InterSystems IRIS `XML`支持包括以下附加工具: - XML架构向导读取XML架构文档,并生成一组支持XML的类,这些类与架构中定义的类型相对应。可以指定一个包来包含类,以及控制类定义详细信息的各种选项。 - `%XML.Schema`类使能够从一组启用了XML的类生成XML架构。 - `%XML.Namespaces`类使能够检查XML命名空间以及其中的类,以查找InterSystems IRIS命名空间。 - `%XML.Security.EncryptedData`类和其他类使能够加密XML文档以及解密加密文档。 - `%XML.Security.Signature`类和其他类使能够对XML文档进行数字签名,以及验证数字签名。 # 使用XML工具时的注意事项 在使用任何类型的XML工具时,至少有三个一般要点需要考虑: - 任何XML文档都有字符编码 - 将XML文档映射到类(文字或`SOAP`编码)有不同的方法 - 应该知道SAX解析器的默认行为 # 输入输出的字符编码 导出XML文档时,可以指定要使用的字符编码;否则,InterSystems IRIS会根据目标选择编码: - **如果输出目标是文件或二进制流,则默认值为`“UTF-8”`**。 - 如果输出目标是字符串或字符流,则默认`为"UTF-16"`。 对于InterSystems IRIS读取的任何`XML`文档,文档的XML声明应该指示该文件的字符编码,并且文档应该按照声明的方式进行编码。例如: ``` ``` 但是,如果文档中未声明字符编码,InterSystems IRIS将假定: - 如果输出目标是文件或二进制流,则默认值为`“UTF-8”`。 - 如果输出目标是字符串或字符流,则默认为`"UTF-16"`。 # 选择文档格式 使用`XML`文档时,必须知道将文档映射到InterSystems IRIS类时要使用的格式。同样,在创建`XML`文档时,需要指定编写文档时要使用的文档格式。`XML`文档格式如下: - 文字表示文档是对象实例的文字副本。在大多数情况下,即使在使用`SOAP`时,也使用文字格式。除非另有说明,否则文档中的示例均使用文字格式。 - 编码的意思是按照`SOAP 1.1`标准或`SOAP 1.2`标准中描述的编码。`SOAP1.1`和`SOAP1.2`的细节略有不同。 以下小节显示了这些文档格式之间的差异。 ## 文字格式 ```java Klingman,Julie G. 1946-07-21 W897 Bensonhurst 60302 Jung,Kirsten K. Xiang,Charles R. Frith,Terry R. ``` ## 编码格式 相比之下,下面的示例以编码格式显示相同的数据: ```java ... Jung,Kirsten K. ... Quixote,Umberto D. ... Chadwick,Mark L. ... Klingman,Julie G. 1946-07-21 W897 Bensonhurst 60302 ... ``` 请注意编码版本中的以下差异: - 输出的根元素包括`SOAP`编码命名空间和其他标准命名空间的声明。 - 本文档包括同一级别的人员、地址和医生元素。`Address`和`Doctor`元素列出了引用它们的`Person`元素使用的唯一`ID`。每个对象值属性都是这样处理的。 - 顶级`Address`和`Doctor`元素的名称与各自类的名称相同,而不是与引用它们的属性名称相同。 - 编码格式不包括任何属性。`GroupID`属性被映射为`Person`类中的属性。在文字格式中,此属性被投影为特性。但是,在编码版本中,属性被投影为元素。 - 对集合的处理方式不同。例如,列表元素具有属性`ENC:arrayType`.。 - 每个元素都有一个`xsi:type`属性的值。 注意:对于`SOAP1.2`,编码版本略有不同。要轻松区分版本,请检查SOAP编码命名空间的声明: - 对于`SOAP1.1,SOAP`编码命名空间为`"http://schemas.xmlsoap.org/soap/encoding/"` - 对于`SOAP1.2,SOAP`编码命名空间为`"http://schemas.xmlsoap.org/wsdl/soap12/"` 除非解析器可以使用这些其他模式,否则验证将失败。特别是对于WSDL文档,有时需要下载所有模式并编辑主模式以使用正确的位置。 它尝试解析所有实体,包括所有外部实体。(其他XML解析器也会这样做。)。这一过程可能很耗时,具体取决于它们所在的位置。具体地说,`Xerces `使用网络访问器来解析一些URL,并且实现使用阻塞I/O。因此,不会超时,网络获取可能会在错误条件下挂起,这在实践中很少见。 此外,`Xerces`不支持`https`;也就是说,它不能解析位于`https`位置的实体。 如果需要,可以创建自定义实体解析器,也可以禁用实体解析; # IRIS支持的标准 IRIS XML支持遵循以下标准: - XML 1.0 (https://www.w3.org/TR/REC-xml/) - Namespaces in XML 1.0 (https://www.w3.org/TR/REC-xml-names/) - XML Schema 1.0 (https://www.w3.org/TR/xmlschema-0/, https://www.w3.org/TR/xmlschema-1/, https://www.w3.org/TR/xmlschema-2/) - XPath 1.0 as specified by https://www.w3.org/TR/xpath - SOAP 1.1标准第5节指定的SOAP 1.1编码。 - SOAP1.2编码,如第3节第2部分: Adjuncts (https://www.w3.org/TR/soap12-part2/) of the SOAP 1.2 standard. - XML Canonicalization Version 1.0 (also known as inclusive canonicalization), as specified by https://www.w3.org/TR/xml-c14n. - XML Exclusive Canonicalization Version 1.0 as specified by https://www.w3.org/TR/xml-exc-c14n/, including the InclusiveNamespaces PrefixList feature (https://www.w3.org/TR/xml-exc-c14n/#def-InclusiveNamespaces-PrefixList) - XML Encryption (https://www.w3.org/TR/xmlenc-core/) InterSystems IRIS支持使用RSA-OAEP或RSA-1.5进行密钥加密,并支持使用AES-128、AES-192或AES-256对邮件正文进行数据加密。 - XML Signature using Exclusive XML Canonicalization and RSA SHA-1 (https://www.w3.org/TR/xmldsig-core/) InterSystems IRIS提供两个XSLT处理器: - Xalan处理器支持XSLT 1.0。 - Saxon处理器支持XSLT 2.0。 **注意:InterSystems IRIS不支持在一个元素中有多个名称相同的属性,每个属性位于不同的名称空间中。**
文章
Lilian Huang · 四月 28, 2023

InterSystems 嵌入式 Python 概览

嗨社区,在本文中,我将演示 InterSystems Embedded Python 的用法,我们将涵盖以下主题: 1-嵌入式Python概述 2-嵌入式Python的使用 2.1- 从 ObjectScript 使用 Python 库 2.2- 从 Python 调用 InterSystems API 2.3- 一起使用 ObjectScript 和 Python 3-使用python内置函数 4-Python 模块/库 5 个嵌入式 Python 用例 5.1- 使用 python Reportlab 库打印 PDF 5.2-使用Python二维码库生成二维码 5.3- 使用 Python Folium 库获取 GEO 位置 5.4- 通过使用在交互式地图上生成和标记位置 Python Folium 库 5.5- 使用 Python Pandas 库进行数据分析 6-总结 我们从概述开始 1-嵌入式Python概述 嵌入式 Python 是 InterSystems IRIS 数据平台的一项功能,它允许 Python 开发人员完全直接地访问 InterSystems IRIS 中的数据和功能。 InterSystems IRIS 带有一种名为 ObjectScript 的强大内置编程语言,可在数据平台内部进行解释、编译和运行。 因为 ObjectScript 在 InterSystems IRIS 的上下文中执行,所以它可以直接访问数据平台的内存和过程调用。 嵌入式 Python 是 Python 编程语言的扩展,允许在 InterSystems IRIS 进程上下文中执行 Python 代码。 因为 ObjectScript 和 Python 都在同一个对象内存上操作,可以说 Python 对象不只是模拟 ObjectScript 对象,它们本身就是 ObjectScript 对象。 这些语言的这种共同平等意味着您可以选择最适合工作的语言,或者您最习惯用来编写应用程序的语言。 2-嵌入式Python的使用 使用嵌入式 Python 时,您可以用三种不同的方式编写代码。 2.1 - 从 ObjectScript 使用 Python 库 首先,您可以编写一个普通的 .py 文件并从 InterSystems IRIS 上下文中调用它。在这种情况下,数据平台将启动 Python 进程并允许您导入一个名为 IRIS 的模块,该模块会自动将 Python 进程附加到 IRIS 内核,并让您可以从 Python 代码的上下文中访问 ObjectScript 的所有功能。 2.2 - 从 Python 调用 InterSystems API 其次,您可以编写普通的 ObjectScript 代码并使用 %SYS.Python 包实例化 Python 对象。这个 ObjectScript 包允许您导入 Python 模块和库,然后使用 ObjectScript 语法处理该代码库。%SYS.Python 包使不了解 Python 的 ObjectScript 开发人员能够在其 ObjectScript 代码中使用丰富的 Python 库生态系统。 2.3 - 一起使用 ObjectScript 和 Python 第三,您可以创建一个 InterSystems 类定义并用 Python 编写方法。对该方法的任何调用都会启动 Python 解释器。此方法的好处是使用对包含类实例的引用填充该 Python 代码块的 self 关键字。此外,通过使用 Python 在 InterSystems 类中编写类方法,您可以轻松实现处理 SQL 中不同数据输入事件的方法,例如将新行添加到表中。它还允许在 Python 中快速开发自定义存储过程。 如您所见,嵌入式 Python 允许您在不牺牲性能的情况下选择最适合工作的编程语言。 3-使用Python内置函数 Python 解释器有许多内置的函数和类型,它们总是可用的。它们按字母顺序列在此处。 内置函数 A -----100----- -----101----- -----102----- -----103----- -----104----- -----105----- 乙 -----106----- -----107----- -----108----- -----109----- -----110----- C -----111----- -----112----- -----113----- -----114----- -----115----- 丁 -----116----- -----117----- -----118----- -----119----- 乙 -----120----- -----121----- -----122----- F -----123----- -----124----- -----125----- -----126----- G -----127----- -----128----- H -----129----- -----130----- -----131----- -----132----- 我 -----133----- -----134----- -----135----- -----136----- -----137----- -----138----- 大号 -----139----- -----140----- -----141----- 米 -----142----- -----143----- -----144----- -----145----- 否 -----146----- 欧 -----147----- -----148----- -----149----- -----150----- P -----151----- -----152----- -----153----- R -----154----- -----155----- -----156----- -----157----- 小号 -----158----- -----159----- -----160----- -----161----- -----162----- -----163----- -----164----- -----165----- 吨 -----166----- -----167----- V -----168----- Z -----169----- _ -----170----- 使用 python内置函数为了使用 python 内置函数,我们必须导入“builtins”,然后我们才能调用该函数 -----171----- Python print() 函数实际上是内置模块的一个方法,因此您现在可以从 ObjectScript 使用此函数: -----172----- -----173----- 同样,您可以使用 help() 方法获取有关列表对象的帮助。 -----174----- 4-Python 模块或库 一些 python 模块或库是默认安装的,并且已经可以使用。通过使用 help("module" 函数我们可以查看这些模块: 安装 python 模块或库 除了这些模块之外,python 还有数百个模块或库,可以在pypi.org查看( Python 包索引 (PyPI) 是 Python 编程语言的软件存储库) 如果我们需要一些其他的库,那么我们需要使用 intersystems irispip 命令安装这些库 比如 Pandas 就是 python 数据分析库。以下命令使用包安装程序 irispip 在 Windows 系统上安装 pandas: -----175----- 请注意 C:\InterSystems 将替换为 Intersystems 安装目录 5 个嵌入式 Python 用例 5.1-使用python Reportlab库打印PDF 我们需要使用 irispip 命令安装 Reportlab 库,然后创建 objectscript 函数。 给定一个文件位置,以下 ObjectScript 方法 CreateSamplePDF() 创建一个示例 PDF 文件并将其保存到该位置。 Class Demo.PDF { ClassMethod CreateSamplePDF(fileloc As %String ) As %Status { set canvaslib = ##class ( %SYS.Python ).Import( "reportlab.pdfgen.canvas" ) set canvas = canvaslib.Canvas(fileloc) do canvas.drawImage( "C:\Sample\isc.png" , 150 , 600 ) do canvas.drawImage( "C:\Sample\python.png" , 150 , 200 ) do canvas.setFont( "Helvetica-Bold" , 24 ) do canvas.drawString( 25 , 450 , "InterSystems IRIS & Python. Perfect Together." ) do canvas.save() } } 该方法的第一行从 ReportLab 的 pdfgen 子包中导入 canvas.py 文件。第二行代码实例化一个 Canvas 对象,然后继续调用它的方法,这与调用任何 InterSystems IRIS 对象的方法的方式非常相似。 然后您可以按照通常的方式调用该方法: do ##class(Demo.PDF).CreateSamplePDF("C:\Sample\hello.pdf") 生成以下PDF并保存在指定位置: 5.2-使用Python二维码库生成二维码 为了生成二维码,我们需要使用irispip命令安装Qrcode库,然后使用下面的代码我们可以生成二维码: 5.3-使用Python Folium库获取GEO位置 为了获取地理数据,我们需要使用 irispip 命令安装脚本库 Folium ,然后创建以下对象脚本函数: Class dc.IrisGeoMap.Folium Extends %SwizzleObject { // Function to print Latitude, Longitude and address details ClassMethod GetGeoDetails(addr As %String ) [ Language = python ] { from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent= "IrisGeoApp" ) try : location = geolocator.geocode(addr) print ( "Location:" ,location.point) print ( "Address:" ,location.address) point = location.point print ( "Latitude:" , point.latitude) print ( "Longitude:" , point.longitude) except: print ( "Not able to find location" ) } } 连接到 IRIS 终端并运行以下代码 do ##class(dc.IrisGeoMap.Folium).GetGeoDetails("Cambridge MA 02142") 下面将是输出: 5.4-通过使用Python Folium库在交互式地图上生成并标记位置 我们将使用同样的 Python Folium 库在交互式地图上生成和标记位置,下面的对象脚本函数将完成所需的操作: ClassMethod MarkGeoDetails(addr As %String , filepath As %String ) As %Status [ Language = python ] { import folium from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent= "IrisGeoMap" ) #split address in order to mark on the map locs = addr.split( "," ) if len(locs) == 0 : print ( "Please enter address" ) elif len(locs) == 1 : location = geolocator.geocode(locs[ 0 ]) point = location.point m = folium.Map(location=[point.latitude,point.longitude], tiles= "OpenStreetMap" , zoom_start= 10 ) else : m = folium.Map(location=[ 20 , 0 ], tiles= "OpenStreetMap" , zoom_start= 3 ) for loc in locs: try : location = geolocator.geocode(loc) point = location.point folium.Marker( location=[point.latitude,point.longitude], popup=addr, ).add_to(m) except: print ( "Not able to find location : " ,loc) map_html = m._repr_html_() iframe = m.get_root()._repr_html_() fullHtml = """ <!DOCTYPE html> <html> <head></head> <body> """ fullHtml = fullHtml + iframe fullHtml = fullHtml + """ </body> </html> """ try : f = open (filepath, "w" ) f. write (fullHtml) f. close () except: print ( "Not able to write to a file" ) } 连接到 IRIS 终端并调用 MarkGeoDetails 函数 我们将调用 dc.IrisGeoMap.Folium 类的 MarkGeoDetails() 函数。该函数需要两个参数: location/locations(我们可以通过在中间添加“,”来传递多个位置) HTML文件路径 让我们运行以下命令在地图上标记 Cambridge MA 02142、NY、London、UAE、Jeddah、Lahore 和 Glasgow,并将其保存为“irisgeomap_locations.html”文件 do ##class(dc.IrisGeoMap.Folium).MarkGeoDetails("Cambridge MA 02142,NY,London,UAE,Jeddah,Lahore,Glasgow","d:\irisgeomap_locations.html") 上面的代码将生成以下交互式 HTML 文件: 5.5-使用 Python Pandas 库进行数据分析 我们需要使用irispip命令安装Pandas库,然后我们可以使用下面的代码查看数据 6-总结 InterSystems嵌入式Python(IEP)是一个强大的功能,它允许你将Python代码与你的InterSystems应用程序无缝集成。有了IEP,你可以利用Python中的大量库和框架来增强你的InterSystems应用程序的功能。在这篇文章中,我们将探讨IEP的主要特点和好处。 IEP是作为一组库实现的,它使你能够在InterSystems应用程序中与Python对象交互并执行Python代码。这为将Python代码集成到你的InterSystems应用程序中提供了一个简单有效的方法,使你能够执行数据分析、机器学习、自然语言处理和其他在InterSystems ObjectScript中可能难以实现的任务。 使用IEP的主要优势之一是它提供了一种弥合Python和InterSystems世界之间差距的方法。这使得我们可以很容易地利用两种语言的优势来创建强大的应用程序,将两个世界的优点结合起来。 IEP还提供了一种方法,通过利用Python的功能来扩展你的InterSystems应用程序的功能。这意味着你可以利用Python中大量的库和框架来完成那些在InterSystems ObjectScript中可能难以实现的任务。 InterSystems Embedded Python提供了一个强大的方法,通过利用Python的能力来扩展你的InterSystems应用程序的功能。通过将Python代码集成到你的InterSystems应用程序中,你可以利用Python中大量的库和框架来执行在InterSystems ObjectScript中可能难以实现的复杂任务。 谢谢。
问题
Michael Lei · 七月 8, 2022

Intersystems IRIS 上使用JAVA

我现在在使用object script。如果把代码从 objectscript转成 Java 我需要做些什么? 可以参考官方文档:https://gettingstarted.intersystems.com/language-quickstarts/java-quickstart/
公告
Claire Zheng · 一月 28, 2022

InterSystems 开发者竞赛:Python

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 这次我们聚集Python! 🏆 InterSystems Python竞赛🏆 竞赛时间: 2022年2月7日 - 27日 奖金总额: $10000 - 更多获奖机会! 奖品 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 🌟 第四名-第十五名 - $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $750 🥉 第三名 - $500 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 参赛时间安排 🛠 2月7日 - 20日: 应用开发、提交阶段。 ✅ 2月21日 - 27日: 投票阶段。 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用 主题 最新 发布 的 InterSystems IRIS 2021.2版本提供了 Embedded Python 功能,而且将 PEX 扩展到 Python. 我们邀请您在一个新的编程竞赛中使用嵌入式Python ! 也欢迎使用Python原生API或Python PEX的应用程序。 提交一个开源的应用程序,通过InterSystems IRIS或InterSystems IRIS for Health(医疗版)使用嵌入式Python或原生Python API或Python PEX。 一般要求 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 资源助力 1. 通过InterSystems IRIS开发Python应用: Learning Path Writing Python Application with InterSystems Embedded Python Documentation Native API for Python Documentation PEX Documentation 2. ObjectScript Package Manager (ZPM)初学者: How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM 3. 如何将您的APP提交给大赛: How to publish an application on Open Exchange How to submit an application for the contest 4. 项目示例 interoperability-python pex-demo python-examples WebSocket AOC2021 Python Faker 5. 视频 Introduction to Embedded Python Embedded Python: Bring the Python Ecosystem to Your ObjectScript App Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side Embedded Python with Interoperability InterSystems IRIS Native Python API in AWS Lambda 参赛评比 投票规则即将发布,敬请期待! So! 期待您的精彩提交– 加入我们的编程马拉松,赢取大奖! ❗️ Please check out the Official Contest Terms here.❗️
公告
Michael Lei · 五月 16, 2022

DBeaver 官方支持 InterSystems IRIS

我们很高兴地宣布,从7.2.4版本开始,DBeaver已经支持开箱即用InterSystems IRIS的。 你不需要再手动配置它,只要在连接列表中找到IRIS的图标即可。 所有必要的字段都已填写。但是,请不要忘记输入你的用户名和密码。 默认情况下,InterSystems的IRIS驱动程序不包括在DBeaver中。对于第一次连接,DBeaver建议从InterSystems的官方GitHub仓库下载驱动程序。这个驱动程序将被用于所有进一步的连接。 目前的版本不包含IRIS的具体功能,但所有主要的DBeaver功能都将适用于你的数据库。 如果你认为可以添加其他重要的东西,请让我们知道。
公告
Michael Lei · 五月 11, 2022

InterSystems Kubernetes Operator 3.3 发布!

InterSystems Kubernetes Operation(IKO)3.3版现已通过WRC下载页面和InterSystems容器注册中心提供。IKO通过提供一个易于使用的irisCluster资源定义,简化了在Kubernetes中使用InterSystems IRIS或InterSystems IRIS for Health的工作。完整的功能清单见IKO文档,包括轻松的分片、镜像和ECP的配置。 IKO 3.3 亮点: 支持InterSystems IRIS和InterSystems IRIS for Health 2021.2 以及 2022.1版本 支持 Kuberentes 1.21 将常见的系统警报和监控(SAM)配置作为irisCluster的一部分进行部署 InterSystems API Manager(IAM)现在也可以作为 irisCluster的一部分进行部署和管理 自动标记Mirror对的活跃端,因此服务可以始终指向激活的镜像成员
公告
Claire Zheng · 十一月 11, 2021

InterSystems开发者竞赛:安全

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 🏆 InterSystems开发者竞赛:安全 🏆 竞赛时间: 2021年11月15日-12月5日 奖金总额: $9,450! 奖项设置 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 🌟 第四名-第十名 - $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $500 🥉 第三名 - $250 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 参赛时间安排 🛠 11月15日 - 28日: 应用开发、提交阶段 ✅ 11月29日 - 12月05日: 投票阶段 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用 主题 在这次安全竞赛中,我们鼓励开发人员分享展示如何执行与InterSystems IRIS和InterSystems医疗版相关的安全任务的解决方案。我们邀请您贡献一些应用程序,这些应用程序将揭示与InterSystems安全模型(Security Model)的认证和授权部分相关的任务。 这些任务可以是: OAuth与OpenID SAML / LDAP身份验证实现。​ PKI 的实现 REST API某些部分的访问管理:应用程序级安全、角色/用户级安全。 对数据的访问管理:对数据库、表、列或行级别的访问。 对互操作性组件的访问 访问IRIS BI组件:cubes,枢轴,仪表板等。 授权(用户、角色、资源)和认证(OAuth)设置的DevOps问题。 与身份验证和授权相关的开发人员和支持工具。 你的奇思妙想! 要求: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition 上运行。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 资源助力 1. InterSystems IRIS初学者: Build a Server-Side Application with InterSystems IRIS Learning Path for beginners 2. ObjectScript Package Manager (ZPM)的初学者: How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM 3. 如何将您的APP提交给大赛 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 4. 文档、课程和视频: Security Documentation Course: InterSystems Security Basics Video: Active Directory Integration with LDAP Video: Configuring a Web Server for IIS for Better Performance and Security Video: Webinar: Securing the Management Portal Video: Advances in Security Article: Building an FHIR Repository + OAuth2 Authorization Server/Resource Server Configuration on IRIS for Health Part 1 Article: InterSystems IRIS Open Authorization Framework (OAuth 2.0) implementation - part 1 Article: Protect your REST API applying OWASP Top Ten 参赛评比 投票规则即将发布,敬请期待! So! 期待您的精彩提交!加入我们的编程马拉松,赢取大奖。 ❗️ 点击此处,查看 官方竞赛条款解读.❗️
文章
Lilian Huang · 九月 1, 2022

InterSystems IRIS 中的数据模型

在我们开始谈论数据库和现有的不同数据模型之前,我们最好先谈谈什么是数据库以及如何使用它。 一个数据库是以电子方式存储和访问的有组织的数据集合。 它用于存储和检索通常与主题或活动相关的结构化、半结构化或原始数据。每个数据库的核心至少存在一个用于描述其数据的模型。 并且根据它所基于的模型,一个数据库可能具有略微不同的特征并存储不同数据类型。 要写入、检索、修改、排序、转换或打印数据库中的信息,需要使用称为数据库管理系统 (DBMS) 的软件。 数据库及其各自的数据库管理系统的大小、容量和性能增加了几个数量级。 各个领域的技术进步使之成为可能,例如处理器、计算机内存、计算机存储和计算机网络。 一般来说,数据库技术的发展根据数据模型或结构分为四代:导航型、关系型、对象型和后关系型。 与以特定数据模型为特征的前三代不同,第四代包括许多基于不同模型的不同数据库。 它们包括列、图、文档、组件、多维、键值、内存等。所有这些数据库都由一个单一的名称 NoSQL 联合起来(没有 SQL,或者现在更准确地说不仅仅是 SQL)。 而且,现在出现了一个新的类,叫做NewSQL。 这些是现代关系数据库,旨在为在线事务处理工作负载(读写)提供与 NoSQL 系统相同的可扩展性能,同时使用 SQL 和维护 ACID。 顺便说一下,在这些第四代数据库中,有那些支持上述提及的多种数据模型的数据库。 它们被称为多模型数据库。 这种类型的数据库的一个很好的例子是 InterSystems IRIS。 这就是为什么我将使用它来给出不同类型模型的示例。 第一代数据库使用分层或网络模型。 前者的核心是一个树形结构,即每条记录只有一个所有者。 您可以在 InterSystems IRIS 的示例中看到其工作原理,因为它的主要模型是分层的,并且所有数据都存储在globals(即 B*-trees)中。 您可以在此处here.阅读有关globals的更多信息。 我们可以在 IRIS 中创建这棵树: Set ^a("+7926X", "city") = "Moscow" Set ^a("+7926X", "city", "street") = "Req Square" Set ^a("+7926X", "age") = 25 Set ^a("+7916Y", "city") = "London" Set ^a("+7916Y", "city", "street") = "Baker Street" Set ^a("+7916Y", "age") = 36 在数据库中查看: 在 Edgar F. Codd 于 1969 年提出他的关系代数和他的数据存储理论之后,使用关系原理。之后,关系型数据库产生了。 关系(表)、属性(列)、元组(行)以及最重要的事务和 ACID 要求的使用使这些数据库非常流行,并且现在仍然如此。 例如,我们有架构: 我们可以创建和填充表: 如果我们编写查询: select p.ID, p.Name, a.Country, A.City from My.Person p left join My.Address a on p.Address = a.ID 我们将收到答案: 尽管关系数据库具有显着优势,但随着对象语言的普及,将面向对象的数据存储在数据库中变得很有必要。 这就是为什么 1990 年第一个面向对象(object-oriented )和对象关系数据库产生原因。 后者是在关系数据库的基础上通过添加附加组件来模拟对象工作而创建的。 前者是在 OMG(对象管理组)联盟的建议和 ODMG(对象数据管理组)之后从头开始开发的。 这些面向对象数据库的主要思想如下: 可以使用以下方式访问单个数据仓库: • 对象定义语言——模式定义,允许类定义、它们的属性、关系和方法, • 对象查询语言——声明性的,几乎类似于 SQL 的语言,允许从数据库中获取对象, • 对象操作语言——允许修改和保存数据库中的数据,支持事务和方法调用。 该模型允许使用面向对象的语言从数据库中获取数据。 如果我们采用与前面示例相同的结构但采用面向对象的形式,我们将拥有以下类: Class My.Person Extends %Persistent { Property Name As %Name; Property Address As My.Address; } Class My.Address Extends %Persistent { Property Country; Property City; } 我们可以使用面向对象的语言创建对象: set address = ##class(My.Address).%New() set address.Country = "France" set address.City = "Marseille" do address.%Save() set person = ##class(My.Person).%New() set person.Address = address set person.Name = "Quouinaut, Martin" do person.%Save() 不幸的是,对象数据库并没有成功地从其主导地位与关系数据库竞争,结果出现了许多对象关系映射技术。 无论如何,随着 2000 年代 互联网的普及和对数据存储的新要求的出现,其他数据模型和 数据库管理系统开始出现, 其中,IRIS 中使用了这些模型中的两个,即是文档模型和列模型。 面向文档的数据库用于管理半结构化数据。 这是不遵循固定结构并在其中携带结构的数据。 这种数据库中的每个信息单元都是一个简单的对:一个密钥和一个特定的文档。 该文档通常采用 JSON 格式并包含信息。 由于数据库不需要一定的模式,所以也可以在同一个仓库中集成不同类型的文档。 如果我们再看前面的例子,我们可以有这样的文档: { "Name":"Quouinaut, Martin", "Address":{ "Country":"France", "City":"Paris" } } { "Name":"Merlingue, Luke", "Address":{ "Country":"France", "City":"Nancy" }, "Age":26 } 这两个字段数不同的文档存储在 IRIS 数据库中没有任何问题。 2022.2 版中将提供的模型的最后一个示例是列模型。 在这种情况下,数据库管理系统是按列而不是按行存储数据表。 列方向允许更有效地访问数据以查询列的子集(无需读取不相关的列),并提供更多数据压缩选项。 当列中的数据相似时,按列压缩也更有效。 但是,它们在插入新数据时通常效率较低。 您可以这样创建此表: Create Table My.Address ( city varchar(50), zip varchar(5), country varchar(15) ) WITH STORAGETYPE = COLUMNAR 在这种情况下,类是这样的: Spoiler 然后我们插入数据: insert into My.Address values ('London', '47000', 'UK') insert into My.Address values ('Paris', '54000', 'France') insert into My.Address values ('Kyiv', '03000', 'Ukraine') 在globals里我们看到: 如果我们用city names打开globals,我们将看到 : 如果我们写一个查询: select City from My.Address 我们收到数据: 在这种情况下,数据库管理系统 只需读取一个全局变量即可获得整个结果。 并且在阅读时节省时间和资源。 因此,我们讨论了 InterSystems IRIS 数据库支持的 5 种不同的数据模型。 这些是层次模型、关系模型、对象模型、文档模型和列模型。 希望您在尝试找出可用的模型时会发现这篇文章很有用。 如果您有任何问题,请随时在评论中提出。
文章
Michael Lei · 十二月 13, 2022

InterSystems IRIS 嵌入式 Python 模板

嵌入式 Python 模板 今天你们分享一个简单的[嵌入式 Python 模板](https://openexchange.intersystems.com/package/iris-embedded-python-template),我建议将其作为任何使用 InterSystems IRIS 并将使用嵌入式 Python 的通用项目的起点。 功能: * 随时可用的嵌入式 Python; * 3 种嵌入式 Python 开发方式示例; * 随时可用的 VSCode 开发; * 支持 Docker; * 支持在线演示; * 随时可用的 ZPM 优先开发。 下面讨论一下这些功能! 我们先来谈谈嵌入式 Python。 此功能在 InterSystems IRIS 2021.2 中提供,它允许使用 InterSystems IRIS 通过 Python 开发解决方案。 IRIS 2021.2 及以上版本允许使用 InterSystems IRIS 在共享内存环境中执行 Python 脚本,这为 Python 开发者在使用代码与数据相近的数据库时提供了独特的选项。  ### 3 种使用嵌入式 Python 进行开发的模式 ### **从 ObjectScript 调用 Python 库** 此操作因 [%SYS.Python](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&CLASSNAME=%25SYS.Python) 类而变为可能,该类允许导入 Python 库并通过 ObjectScirpt 调用 Python。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_callpython_library)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/be578226b7a0c583df1f7b693b1bdae074efb1bd/src/dc/python/PersistentClass.cls#L17)。 请查看以下代码: <span class="hljs-keyword">ClassMethod</span> Today() <span class="hljs-keyword">As</span> <span class="hljs-built_in">%Status</span> { <span class="hljs-keyword">Set</span> sc = <span class="hljs-built_in">$$$OK</span> <span class="hljs-keyword">Set</span> dt = <span class="hljs-keyword">##class</span>(<span class="hljs-built_in">%SYS.Python</span>).Import(<span class="hljs-string">"datetime"</span>) <span class="hljs-keyword">write</span> dt.date.today().isoformat() <span class="hljs-keyword">Return</span> sc } ### 使用 Python 编写 ObjectScript 类方法 事实上,现在开发者可以使用纯 Python 在方法签名和代码中添加 [Language=python] 标签。 还有一个辅助 Python 库“iris”,可以用于引用 ObjectScript 类和全局变量。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_runpython_method)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/src/dc/python/PersistentClass.cls#L17)、示例代码: ClassMethod CreateRecordPython(propValue As %VarString, ByRef id As %Integer) [ Language = python ] { <span class="hljs-keyword">import</span> iris obj=iris.cls(__name__)._New() obj.Test=propValue sc=obj._Save() id=obj._Id() <span class="hljs-keyword">return</span> sc } ### 使用纯 Python 编写 InterSystems IRIS 解决方案代码 这是开发者可以选择的第三种处理 IRIS 的方式。  这里,Python 脚本需要连接到 IRIS,此操作可以通过环境变量和设为“On”的 CallIn 服务来完成,请参见下面的详细信息。 设置完后,使用 IRIS 在共享内存中执行 Python 脚本。 在这里,“iris”库也非常有用。 [文档](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_runpython_script)、[示例](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/python/irisapp.py)。  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create_rec</span><span class="hljs-params">(var)</span>:</span> obj=iris.cls(<span class="hljs-string">'dc.python.PersistentClass'</span>)._New() obj.Test=var obj._Save() id=obj._Id() <span class="hljs-keyword">return</span> id <span class="hljs-comment"># test record creation</span> <span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime now=str(datetime.now()) print(<span class="hljs-string">"Creating new record in dc.python.PersistentClass"</span>) print(create_rec(now)) <span class="hljs-comment">## run SQL and print data</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">run_sql</span><span class="hljs-params">(query)</span>:</span> rs=iris.sql.exec(query) <span class="hljs-keyword">for</span> idx, row <span class="hljs-keyword">in</span> enumerate(rs): print(<span class="hljs-string">f"[<span class="hljs-subst">{idx}</span>]: <span class="hljs-subst">{row}</span>"</span>) query=<span class="hljs-string">"Select * from dc_python.PersistentClass"</span> print(<span class="hljs-string">"Running SQL query "</span>+query) run_sql(query) ### 支持 Docker 模板仓库在容器中运行 IRIS,并设置嵌入式 Python 调整所需的所有内容。  环境变量。 嵌入式 Python 需要设置特定的环境变量来连接到 IRIS 并运行 Python 脚本。 下面是 [dockerfile](https://github.com/intersystems-community/iris-embedded-python-template/blob/be578226b7a0c583df1f7b693b1bdae074efb1bd/Dockerfile#L13-L17) 中有帮助的设置: # init Python env ENV PYTHON_PATH=/usr/irissys/bin/irispython ENV SRC_PATH=/irisrun/repo ENV IRISUSERNAME "SuperUser" ENV IRISPASSWORD "SYS" ENV IRISNAMESPACE "USER" 此外,嵌入式 Python 需要将 CallIn 服务设为“on”,此操作在构建 docker 的阶段在 [iris.script](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/iris.script#L7) 中完成: <span class="hljs-comment">; enabling callin for Embedded Python</span> <span class="hljs-keyword">do</span> <span class="hljs-keyword">##class</span>(Security.Services).Get(<span class="hljs-string">"%Service_CallIn"</span>,.prop) <span class="hljs-keyword">set</span> prop(<span class="hljs-string">"Enabled"</span>)=<span class="hljs-number">1</span> <span class="hljs-keyword">set</span> prop(<span class="hljs-string">"AutheEnabled"</span>)=<span class="hljs-number">48</span> <span class="hljs-keyword">do</span> <span class="hljs-keyword">##class</span>(Security.Services).Modify(<span class="hljs-string">"%Service_CallIn"</span>,.prop) 另外,您的解决方案可能需要安装一些 Python 库。 这通过仓库根目录中的 [requirements.txt](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/requirements.txt) 和 [dockerfile](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/Dockerfile#L22) 中的 pip3 调用来实现: pip3 install -r requirements.txt && \ ### 随时可用的 VSCode 开发 使用 docker 在 VSCode 中开发非常方便。 如果想要在 docker IRIS 解决方案中使用嵌入式 Python 进行开发,VSCode 需要切换到 [Devcontainer 模式](https://code.visualstudio.com/docs/remote/containers)。 为此,将 [devcontainer.json 文件](https://github.com/intersystems-community/iris-embedded-python-template/blob/master/.devcontainer/devcontainer.json)添加到 .devcontainer 文件夹中。 该文件描述了需要使用的 docker 服务(本例中为 iris),这可以帮助在 VSCode 中运行 Python 脚本,这些脚本将由在容器中运行的 IRIS 使用的 Python 引擎提供服务。 devcontainer.json 文件还有一个部分,其中说明了需要在容器模式下使用哪些[扩展](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/.devcontainer/devcontainer.json#L43): "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "intersystems-community.vscode-objectscript", "intersystems.language-server", "intersystems-community.servermanager", "ms-vscode.docker" ], ### 通过 ZPM 安装嵌入式 Python 解决方案 此模板被设置为“ZPM 优先”开发仓库。 这意味着所有开发代码都已在 module.xml 中介绍,并且每次构建 docker 镜像时都作为 ZPM 模块安装,开发者每次编码时都在 iris.script 中使用[以下行](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/iris.script#L13)开头: zpm "load /home/irisowner/irisbuild/ -v":1:1 ZPM 模块中还介绍了嵌入式 Python 代码,它通过 [FILECOPY](https://github.com/intersystems-community/iris-embedded-python-template/blob/224be7f5bf80ea0f588f555c7f9e8c8d10c90c10/module.xml#L11) 进行安装: <FileCopy Name="python/" Target="${libdir}python/"/> 此表达式表示,我们想要将所有 Python 脚本打包在仓库中的 /python 文件夹下,并将其安装在目标 IRIS 安装程序的 libdir 的 python/ 文件夹中。 如果将 Python 脚本复制到 ${libdir}python/ 文件夹下,则可以在目标 IRIS 机器中通过 ObjectScirpt 或 Python 对其进行导入调用。 _**注意: 确保您的文件夹名称唯一,以免意外替换其他 Python 代码。**_ 希望该模板对您有用。 欢迎提供反馈,尤其是拉取请求!
文章
Johnny Wang · 十二月 19, 2021

洞察新的 InterSystems 速度测试

我经常发现自己与现存客户和潜在客户就他们在访问数据方面的挫败感进行对话。他们最常见的话题是围绕对“速度的需求”展开的——可以理解,这是非常正确的。 随着数据继续以指数速度增长,企业——无论是专注于医疗健康、金融服务、零售、物联网还是制造——不仅需要快速接收数据,还需要在同一实例中对其进行分析,以便能够执行程序化、标准化的行动进而做出关键的业务决策。 那好消息是什么呢?为并发数据提取和查询提供几乎瞬时的性能已成为现实,这也是我们多年来一直在 InterSystems 提供和改进的东西。Gartner 将此功能称为“增强交易”,同时 Forrester 等其他公司将其称为“事务分析“等等。但是不管它被叫做什么,被夸赞到什么程度,实践是真正的检验,空谈不如实证。所以多年来我们一直在不断地衡量并努力提高我们软件在每个版本中的性能。事实上,在我们最新版本的 InterSystems IRIS 中,我们一些业务最复杂的客户的应用程序性能在过去两年中提高了 3 倍(甚至更多)。InterSystems IRIS 现在经过基准测试,可以在数十纳秒内提取数据、在内存中创建记录并将其编入索引,以便在硬盘上进行查询。从某种角度上来说,这一切的发生和结束不过是弹指一挥间。 图为:针对大客户应用程序的 InterSystems IRIS 数据平台的持续性能改进 但我们的许多客户和合作伙伴经常询问我们 InterSystems IRIS 的性能与他们正在使用或考虑的其他产品相比如何。 所以我们设计了一个性能测试,我们试图尽可能公平地衡量它。 对于那些经常访问我们的 GitHub 或 Open Exchange 页面的朋友,您可能已经看过了。 速度测试将 InterSystems IRIS 与来自许多不同云和数据管理供应商的流行数据库进行比较。 它包括在同一个数据库实例中同时处理提取和查询工作负载以模拟多工作负载用例,而这些实例应该具备以下特征: a.) 不特定支持任何产品; b.) 您可以轻松地在云或自己的电脑上运行; c.) 可以扩展到您自己的数据和查询。 而我们也将这个测试作为可定制的开源代码发布。值得注意的是,速度测试旨在测试数据库的特定点——它们可以同时提取和查询多少数据,以及这如何影响性能。 举个例子,想想一家医院。 它需要具有并发分析的高数据提取率才能以高效率来执行管理,同时支持数千名用户同时查询他们个人信息、就诊信息等实时数据。 在某些情况下,所使用的数据库必须具有可扩展性、可靠性和同时为事务和分析查询提供高性能,所以它才可以承受施加在其上的压力,这一点至关重要。 我们设计了速度测试来模拟这种压力并记录数据库如何响应。 我们如何使用速度测试? 在这次的测试中,我们将 InterSystems IRIS 与其他数据平台进行了比较,这些平台均在 AWS 云中运行,并且运行时间均为 1,200 秒(20 分钟)。 选择 AWS 基础设施配置是为了确保比对双方的各个方面都有一一对应的比较。 根据客户的要求,我们目前正在将 InterSystems IRIS 与其他四种流行数据库进行比较:SAP HANA Express 2.0、AWS Aurora (MySQL) 5.6.10a、AWS RDS SQL Server 2017 和 Sybase ASE 16.0 SP03 PL08,公共云版 , 高级版。 在所有情况下,InterSystems IRIS 在提取和并发查询方面都优于其他产品,速度从 59.9% 到 67 倍不等。 为了保证我们在完全透明的背景下进行操作测试,我们在 GitHub 上发布了开源速度测试基准测试套件,并与 Enterprise Strategy Group (ESG) 的验证服务部门签订了合同,这是一家 IT 分析师、研究、验证和战略公司,为全球 IT 社区提供市场情报和可操作的洞察力,以审查和验证测试和结果。 速度测试发现了什么? ESG 证实该测试做到了对各种产品比较的公平性,并且 InterSystems IRIS 显着优于其他领先的传统和内存数据平台,更快地提取更多数据(约 1 亿条记录),同时以更快的速度查询更多数据(超过 20,000 条记录/秒),实现了微秒查询响应时间。 您可以在我们与 ESG 举办的网络研讨会上详细了解结果和速度测试的确切工作原理。 网络研讨会结束后,您甚至会收到完整的 ESG 报告。 必须强调的是,我们未来还会做更多类型的测试,而这次我们使用的标准为所有产品创建了尽可能公平的测试。 但是,我们知道每种情况都不同,因此我们鼓励您前往我们的 GitHub 页面并在 AWS 中亲自测试该套件或在本地机器上使用 Docker,并根据您自己的具体需求,对测试或配置进行更改,以实现更紧密地匹配您的想法。 查看更多最新文章 在此处注册观看于 2020 年 8 月 5 日举办的 ESG 网络研讨会 查看原文 关于作者:Amir Samary Amir Samary 已在数据库、互操作性和 InterSystems 技术方面工作了 20 多年。 Amir 致力于为使用 InterSystems 技术为阿根廷、巴西、智利、哥伦比亚、乌拉圭和美国的各个行业构建解决方案的合作伙伴、客户和开发人员提供支持。 这使 Amir 能够理解和试验不同技术、文化和基础设施现实中的模式和架构。 Amir Samary 目前担任解决方案架构经理,他领导 InterSystems 的一组解决方案开发人员。 他主修计算机科学,辅修数学。
公告
Claire Zheng · 三月 14, 2022

InterSystems开发者竞赛:Globals

亲爱的社区开发者们,大家好! 欢迎积极参与新一轮InterSystems开发者竞赛! 🏆 InterSystems开发者竞赛:Globals 🏆 竞赛时间: 2022年3月21日-4月10日 奖金总额: $10,000 主题 Globals或者直接数据访问(direct data access)——这是InterSystems IRIS 持久性引擎的核心。所有可以通过SQL、REST-API、ObjectScript、DocDB或Native API访问的IRIS数据都存储在globals中。 Globals引擎 负责InterSystems IRIS的性能、可靠性和可扩展性。 在这次竞赛中,我们邀请每个人贡献开源应用程序,该程序可使用InterSystems IRIS Globals来读取、存储和更改数据。我们邀请您使用Globals的强大功能,来实现对数据摄取和读取性能的利用,同时兼备存储模式的灵活性(存储模式允许引入任意数据模型实现)。 一般要求: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 奖品: 1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名 - $4,000 🥈 第二名 - $2,000 🥉 第三名 - $1,000 🌟 第四名-第十五名 - $100 2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名 - $1,000 🥈 第二名 - $750 🥉 第三名 - $500 ✨ 所有获奖者都将获得Global Masters徽章! 如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金。 关键参赛节点 🛠 应用开发、提交阶段 3月21日, 2022 (00:00 EDT): 竞赛启动 4月3日, 2022 (23:59 EDT): 提交截止 ✅ 投票阶段: 4月4日, 2022 (00:00 EDT): 投票启动 4月10日, 2022 (23:59 EDT): 投票截止 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。 请注意,要在您的README文件中标注您的团队成员——社区用户profile 资源助力 1. 文档 Globals 2. IRIS初学者 Build a Server-Side Application with InterSystems IRIS Learning Path for beginners 3. ObjectScript Package Manager (ZPM) 初学者: How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM 4. 如何将您的APP提交给大赛: 如何在InterSystems Open Exchange上发布应用程序 如何把参赛APP提交给大赛 需要帮助? 加入InterSystems' Discord server频道,或跟帖评论提出您的问题! 期待您的精彩提交!祝好运 👍 参与此次竞赛,您同意 遵守相关条款,请认真阅读。 参赛三部曲: 1. 注册社区用户; 2. 在InterSystems Open Exchange上发布应用程序; 3. 把参赛APP提交给大赛;
公告
Michael Lei · 一月 23, 2023

InterSystems 发布 InterSystems IRIS, IRIS for Health 和 HealthShare Health Connect 2022.1.2

InterSystems 很高兴地宣布,InterSystems IRIS、InterSystems IRIS for Health 和 HealthShare Health Connect 2022.1.2 的扩展维护版本现已推出。这些版本为 2022.1.0 和 2022.1.1 版本提供了一些选定的功能和错误修复。 您可以在这些页面上找到有关更改内容的更多信息: InterSystems IRIS InterSystems IRIS 医疗版 HealthShare HealthConnect 请通过开发者社区分享您的反馈,以便我们共同打造更好的产品。 如何获得软件 该软件以经典安装包和容器镜像的形式提供。有关可用安装程序和容器映像的完整列表,请参阅支持的平台网页。 每个产品的完整安装包都可以从 WRC 的软件分发页面获得。 安装包和预览密钥可从 WRC 的预览下载站点或通过评估服务网站获得。 InterSystems IRIS 和 IRIS for Health 的企业版和社区版的容器镜像以及所有相应的组件都可以从InterSystems Container Registry获得。 此版本中所有套件和容器的数量为2022.1.2.574.0 。
公告
Michael Lei · 六月 2, 2022

InterSystems 正式发布 InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1

InterSystems 正式发布 InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1 InterSystems很高兴地宣布,InterSystems IRIS数据平台、InterSystems IRIS for Health和HealthShare Health Connect的2022.1版本现在已经发布(GA)。 发布亮点 平台更新 InterSystems IRIS 数据平台 2022.1 扩大了包括以下新的和更新的操作系统的生产环境支持:: Windows Server 2022 Windows 11 AIX 7.3 Oracle Linux 8 我们也很高兴地宣布我们同时支持用于开发环境的MacOS 12 (Monterey)的苹果 M1 和 Intel 芯片集。 更好开发 嵌入式Python – 在IRIS内部使用 Python 和 ObjectScript 互操作适配器- Kafka, AWS S3, AWS SNS 和 CloudWatch 重新设计了Production Extensions(PEX)的用户体验 速度、扩展与安全 在线数据分片再平衡Online Shard Rebalancing 自适应SQL Journal & Stream 压缩 针对邮件支持TLS 1.3 和 OAuth 2 分析能力与AI SQL Loader加载器 InterSystems Reports 部署优化 关于所有这些功能的更多细节可以在产品文档中找到: InterSystems IRIS 2022.1 documentation 和 release notes InterSystems IRIS for Health 2022.1 documentation 和 release notes HealthShare Health Connect 2022.1 documentation 和 release note 如何获得软件 软件可以通过传统安装包和容器镜像两种形式获得。 关于可用的安装包和容器镜像的完整列表,请参考 Supported Platforms document. 每个产品的完整安装包可以通过WRC网站Software Distribution page 获取. 使用自定义安装选项,你可以选择你需要的选项,如InterSystems Studio和IntegratedML,以合理化安装范围。 InterSystems IRIS 、 IRIS for Health医疗版和所有相应部件的企业版 容器镜像可以通过以下命令从 InterSystems Container Registry 获得: docker pull containers.intersystems.com/intersystems/iris:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/irishealth:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-arm64:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/irishealth-arm64:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-ml:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-ml-arm64:2022.1.0.209.0 可用镜像的完整列表,请参考 the ICR documentation. 社区版 容器镜像也可以通过以下命令从 InterSystems Container Registry 获得: docker pull containers.intersystems.com/intersystems/iris-community:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/irishealth-community:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-community-arm64:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/irishealth-community-arm64:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-ml-community:2022.1.0.209.0 docker pull containers.intersystems.com/intersystems/iris-ml-community-arm64:2022.1.0.209.0 InterSystems IRIS Studio 2022.1是一个独立的IDE,用于Microsoft Windows,可以通过WRC的组件下载页面下载。它与InterSystems IRIS和IRIS for Health 2022.1及以下版本一起使用。InterSystems还支持VSCode-ObjectScript插件,用于用Visual Studio Code为InterSystems IRIS开发应用程序,该插件可用于Microsoft Windows、Linux和MacOS。 我们在主要云市场上的相应列表将在未来几天内更新。 这个版本的版本号是2022.1.0.209.0。 InterSystems IRIS Studio 2022.1 是一个独立的IDE,用于Microsoft Windows,可以通过WRC的组件下载页面 下载。它支持InterSystems IRIS和IRIS for Health 2022.1及以下版本。InterSystems还支持VSCode-ObjectScript 插件,用于使用Visual Studio Code开发InterSystems IRIS应用程序,该插件可用于Microsoft Windows、Linux和MacOS。 我们在主要云市场上的相应列表将在未来几天内更新。 这个版本的版本号是2022.1.0.209.0。
公告
Michael Lei · 三月 19

重磅发布!!!InterSystems 宣布 InterSystems IRIS, InterSystems IRIS for Health 和 HealthShare Health Connect 2024.1 全面上市

InterSystems IRIS ®,InterSystems IRIS ® for Health TM和HealthShare ® Health Connect 2024.1版现已全面上市 (GA)。 发布亮点 在此版本中,您可以期待许多令人兴奋的更新,包括: 在ObjectScript中使用向量Vector: 一种强大优化数据操控的能力. 向量搜索Vector Search (试验性): 行业领先的高效数据检索. 多卷数据库: 增强可扩展性和存储管理. 快速在线备份FastOnline Backup (试验性): 优化备份流程. 多种端口支持Multiple Super Server Ports: 提供网络配置的灵活性. FHIR 2.0.0 支持 Smart FHIR R4 对象模型生成 改进了 FHIR 查询的性能 删除专用 Web 服务器 (PWS) 。 请通过开发者社区分享您的反馈,以便我们共同构建更好的产品。 文档 有关所有突出显示功能的详细信息可通过以下链接获得: InterSystems IRIS 2024.1 文档、 发行说明以及已弃用和停产的技术和功能。 InterSystems IRIS for Health 2024.1 文档、 发行说明和升级清单。 HealthShare Health Connect 2024.1 文档、 发行说明和升级清单。 此外,请查看此链接以获取与此版本相关的升级信息。 抢先体验计划 (EAP) 现在有很多 EAP 可用。查看此页面并注册您感兴趣的人。 如何获取软件? 与往常一样,扩展维护 (EM) 版本附带适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器映像。 经典安装包 安装包可从 WRC 的 InterSystems IRIS for Health 的扩展维护版本页面和 HealthShare Health Connect 的HealthShare 完整套件页面获取。此外,还可以在评估服务网站上找到套件。 InterSystems IRIS Studio 在该版本中仍然可用,您可以从 WRC 的组件分发页面获取它。 供货情况和套餐信息 此版本附带适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器映像。有关完整列表,请参阅支持的平台文档。 安装包和预览密钥可从 WRC 的预览下载站点或通过评估服务网站获取(使用标记“显示预览软件”来访问 2024.1)。 此开发者预览版的内部版本号是: 2024.1.0.263.0 。 容器镜像可从InterSystems 容器注册表获取。容器被标记为“ 2024.1 ”或“latest-em” 。