搜索​​​​

清除过滤器
文章
Claire Zheng · 一月 4, 2023

【GS22 视频】数字医疗的未来:经济、消费主义与技术

这是InterSystems 2022年全球峰会上InterSystems 医疗行业负责人 Don Wooklock 的分享,他认为,在数字医疗发展如火如荼的当下,经济、消费主义和技术三股力量正在推动医疗行业快速变革。我们面临着压力,但更多的是机遇,利用好市场能量,在具备变革精神的医疗卫生行业中,全力以赴!
文章
Michael Lei · 五月 8, 2021

将 Python JDBC 连接到 IRIS 数据库 - 快速笔记

关键字:Python,JDBC,SQL,IRIS,Jupyter Notebook,Pandas,Numpy ,机器学习  ## 1. 目的 这是一个用于演示的 5 分钟快速笔记,通过 Jupyter Notebook 中的 Python 3 调用 IRIS JDBC 驱动程序,以经由 SQL 语法从 IRIS 数据库实例读取数据和向 IRIS 数据库实例写入数据。  去年,我发表了关于[将 Python 绑定到 Cache 数据库](https://community.intersystems.com/post/deep-learning-demo-kit-python3-binding-healthshare-part-i)的简要笔记(第 4.7 节)。 如何使用 Python 挂入 IRIS 数据库以将其数据读入 Pandas 数据框和 NumPy 数组进行常规分析,然后再将一些经过预处理或标准化的数据写回 IRIS 中,准备进一步用于 ML/DL 管道,现在可能是时候回顾一些选项和讨论了。 一些立即浮现的快速**选项**: 1.    **ODBC**:Python 3 和原生 SQL 的 PyODBC? 2.    **JDBC**:Pyhton 3 和原生 SQL 的 JayDeBeApi? 3.    **Spark**:PySpark 和 SQL? 4.    **Python Native API for IRIS**:超越先前的 Python Binding for Cache? 5.   ** IPtyhon Magic SQL %%sql**?  [它](https://github.com/catherinedevlin/ipython-sql)可以支持 IRIS 了吗?  这里有漏掉其他选项吗?  我有兴趣尝试任何选项。  ## 2. 范围  我们是不是应该从普通的 JDBC 方法开始? 下一个快速笔记将总结 ODBC、Spark 和 Python Native API。  ### 范围内: 此快速演示涉及以下常见组件: Anaconda Jupyter Notebook  Python 3 JayDeBeApi JPyPe Pandas NumPy 一个 IRIS 2019.x 实例 ###  范围外: 本快速笔记不会涉及以下内容,但它们也很重要,可以使用特定的站点解决方案、部署和服务单独解决:  安全端到端。 非功能性能等。 问题排查和支持。 许可。    ## 3. 演示 ### 3.1 运行 IRIS 实例: 我只运行了一个 IRIS 2019.4 容器,作为“远程”数据库服务器。 您可以使用任何您有权利访问的 IRIS 实例。 zhongli@UKM5530ZHONGLI MINGW64 /c/Program Files/Docker Toolbox$ docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                PORTS                                              NAMESd86be69a03ab        quickml-demo        "/iris-main"        3 days ago          Up 3 days (healthy)   0.0.0.0:9091->51773/tcp, 0.0.0.0:9092->52773/tcp   quickml ### 3.2 Anaconda 和 Jupyter Notebook:  我们将在笔记本电脑中重用相同的设置方法,[这里](https://community.intersystems.com/post/deep-learning-demo-kit-python3-binding-healthshare-part-i)对应 Anaconda(第 4.1 节),[这里](https://community.intersystems.com/post/run-deep-learning-demo-python3-binding-healthshare-part-ii)对应 Jupyter Notebook(第 4 节)。  Python 3.x 在这一步安装。 ### 3.3 安装 JayDeBeApi 和 JPyPe: 启动 JupyterNotebook,然后在其单元格中运行以下内容设置 Python-to-JDBC/Java 桥:     !conda install --yes -c conda-forge jaydebeapi JayDeBeApi 在撰写本文时(2020 年 1 月)使用 JPype 0.7,该版本由于一个已知错误无法运行,必须降级为 0.6.3 !conda install --yes -c conda-forge JPype1=0.6.3 --force-reinstall ### 3.4 通过 JDBC 连接到 IRIS 数据库  这里有一个正式的[使用 JDBC 连接到 IRIS 的文档](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_jdbc)。  对于通过 JDBC 执行 Python SQL,我以下面的代码为例。 它连接到此 IRIS 实例的“USER”命名空间内的数据表“`DataMining.IrisDataset`”。  ### 1. Set environment variables, if necessary<br>#import os<br>#os.environ['JAVA_HOME']='C:\Progra~1\Java\jdk1.8.0_241'<br>#os.environ['CLASSPATH'] = 'C:\interSystems\IRIS20194\dev\java\lib\JDK18\intersystems-jdbc-3.0.0.jar'<br>#os.environ['HADOOP_HOME']='C:\hadoop\bin'  #winutil binary must be in Hadoop's Home ### 2. Get jdbc connection and cursor<br><strong>import jaydebeapi<br>url = "jdbc:IRIS://192.168.99.101:9091/USER"<br>driver = 'com.intersystems.jdbc.IRISDriver'<br>user = "SUPERUSER"<br>password = "SYS"</strong><br>#libx = "C:/InterSystems/IRIS20194/dev/java/lib/JDK18"<br><strong>jarfile = "C:/InterSystems/IRIS20194/dev/java/lib/JDK18/intersystems-jdbc-3.0.0.jar"</strong> conn = jaydebeapi.connect(driver, url, [user, password], jarfile)<br>curs = conn.cursor() ### 3. specify the source data table<br><strong>dataTable = 'DataMining.IrisDataset'</strong>  ### 4. Get the result and display<br><strong>curs.execute("select TOP 20 * from %s" % dataTable)<br>result = curs.fetchall()<br>print("Total records: " + str(len(result)))<br>for i in range(len(result)):<br>    print(result[i])</strong> ### 5. CLose and clean - I keep them open for next accesses.<br><strong>#curs.close()<br>#conn.close()</strong>   Total records: 150 (1, 1.4, 0.2, 5.1, 3.5, 'Iris-setosa') (2, 1.4, 0.2, 4.9, 3.0, 'Iris-setosa') (3, 1.3, 0.2, 4.7, 3.2, 'Iris-setosa') ... ... (49, 1.5, 0.2, 5.3, 3.7, 'Iris-setosa') (50, 1.4, 0.2, 5.0, 3.3, 'Iris-setosa') (51, 4.7, 1.4, 7.0, 3.2, 'Iris-versicolor') ... ... (145, 5.7, 2.5, 6.7, 3.3, 'Iris-virginica') ... ... (148, 5.2, 2.0, 6.5, 3.0, 'Iris-virginica') (149, 5.4, 2.3, 6.2, 3.4, 'Iris-virginica') (150, 5.1, 1.8, 5.9, 3.0, 'Iris-virginica')   测试表明 JDBC 上的 Python 可以正常运行。 以下只是常规 ML 管道的一些常规数据分析和预处理,由于我们可能会在后续的演示和比较中反复涉及,因此为方便起见在这里附上。  ### 3.5 将 SQL 结果转换为 Pandas DataFrame,再转换为 NumPy 数组 如果还没有安装 Pandas 和 NumPy 软件包,可以通过 Conda 安装,类似于上面 3.3 节。 然后运行以下示例: ### transform SQL results "sqlData"to Pandas dataframe "df", then further to NumPy array "arrayN" for further ML pipelines import pandas as pdsqlData = "SELECT * from DataMining.IrisDataset"df= pd.io.sql.read_sql(sqlData, conn)df = df.drop('ID', 1)df = df[['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']] # set the labels to 0, 1, 2, for NumPy matrixdf.replace('Iris-setosa', 0, inplace=True)df.replace('Iris-versicolor', 1, inplace=True)df.replace('Iris-virginica', 2, inplace=True) # turn dataframe into Numpy arrayarrayN = df.to_numpy() ### 6. CLose and clean - if connection is not needed anymore?#curs.close()#conn.close() 我们例行查看一下当前数据: df.head(5) df.describe() 现在,我们得到了一个 DataFrame,以及一个来自源数据表的标准化 NumPy 数组。   当然,我们在这里可以尝试各种常规分析,一个 ML 人员会按照下述步骤开始,在 Python 中替换 R([链接](http://www.lac.inpe.br/~rafael.santos/Docs/CAP394/WholeStory-Iris.html))。 数据源引自此处   ### 3.6 拆分数据并通过 SQL 写回 IRIS 数据库: 当然,我们可以像往常一样将数据拆分为训练集和验证集或测试集,然后将它们写回临时数据库表,实现 IRIS 一些即将推出的精彩 ML 功能: import numpy as np from matplotlib import pyplotfrom sklearn.model_selection import train_test_split # keep e.g. 20% = 30 rows as test data; trained on another e.g. 80% = 120 rowsX = arrayN[:,0:4]y = arrayN[:,4]X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1, shuffle=True) # make 80% of random rows into a Train setlabels1 = np.reshape(Y_train,(120,1))train = np.concatenate([X_train, labels1],axis=-1) # make 20% of left rows into Test setlTest1 = np.reshape(Y_validation,(30,1))test = np.concatenate([X_validation, lTest1],axis=-1) # write the train data set into a Pandas framedfTrain = pd.DataFrame({'SepalLength':train[:, 0], 'SepalWidth':train[:, 1], 'PetalLength':train[:, 2], 'PetalWidth':train[:, 3], 'Species':train[:, 4]})dfTrain['Species'].replace(0, 'Iris-setosa', inplace=True)dfTrain['Species'].replace(1, 'Iris-versicolor', inplace=True)dfTrain['Species'].replace(2, 'Iris-virginica', inplace=True) # write the test data into another Pandas framedfTest = pd.DataFrame({'SepalLength':test[:, 0], 'SepalWidth':test[:, 1], 'PetalLength':test[:, 2], 'PetalWidth':test[:, 3], 'Species':test[:, 4]})dfTest['Species'].replace(0, 'Iris-setosa', inplace=True)dfTest['Species'].replace(1, 'Iris-versicolor', inplace=True)dfTest['Species'].replace(2, 'Iris-virginica', inplace=True) ### 3. specify temp table names#dataTable = 'DataMining.IrisDataset'dtTrain = 'TRAIN02'dtTest = "TEST02" ### 4. Create 2 temporary tables - you can try drop tables then re-create them every timecurs.execute("Create Table %s (%s DOUBLE, %s DOUBLE, %s DOUBLE, %s DOUBLE, %s VARCHAR(100))" % (dtTrain, dfTrain.columns[0], dfTrain.columns[1], dfTrain.columns[2], dfTrain.columns[3], dfTrain.columns[4]))curs.execute("Create Table %s (%s DOUBLE, %s DOUBLE, %s DOUBLE, %s DOUBLE, %s VARCHAR(100))" % (dtTest, dfTest.columns[0], dfTest.columns[1], dfTest.columns[2], dfTest.columns[3], dfTest.columns[4])) ### 5. write Train set and Test set into the tales. You can try to delete old record then insert everytime. curs.fast_executemany = Truecurs.executemany( "INSERT INTO %s (SepalLength, SepalWidth, PetalLength, PetalWidth, Species) VALUES (?, ?, ?, ? ,?)" % dtTrain,     list(dfTrain.itertuples(index=False, name=None)) )curs.executemany( "INSERT INTO %s (SepalLength, SepalWidth, PetalLength, PetalWidth, Species) VALUES (?, ?, ?, ? ,?)" % dtTest,     list(dfTest.itertuples(index=False, name=None)) ) ### 6. CLose and clean - if connection is not needed anymore?#curs.close()#conn.close() 现在,如果切换到 IRIS 管理控制台或终端 SQL 控制台,应该看到已创建 2 个临时表:120 行的 TRAIN02 和 30 行的 TEST02。 那么本篇快速笔记到这里就结束了。 ## 4. 注意事项 * 以上内容可能会被更改或完善。  ## 5. 未来计划 我们将使用 IRIS 的 PyODBC、PySPark 和 Python Native API 替换第 3.3 和 3.4 节。除非有人愿意帮忙编写一篇快速笔记,我也将对此不胜感激。    
文章
Michael Lei · 四月 10, 2022

如何使用SYS.Database类的FreeSpace查询来检查数据库所在磁盘上的可用空间

系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。 下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。 zn "%SYS" set stmt=##class(%SQL.Statement).%New() set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace") set rset=stmt.%Execute() // 一次性显示所有 do rset.%Display() 输出结果示例如下。 *在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。 Dumping result #1 DatabaseName Directory MaxSize Size ExpansionSize AvailableFreeDiskFreeSpace Status SizeInt AvailableNum DiskFreeSpaceNum ReadOnly IRISSYS c:\intersystems\irishealth3\mgr\ 無制限 159MB 系统默认 ト 18MB 11.32 245.81GB マウント/RW 159 18 2517050 ENSLIB c:\intersystems\irishealth3\mgr\enslib\ 無制限 226MB システムデフォル ト 19MB 8.4 245.81GB マウント/R 226 19 2517051    <一部省略> IRISTEMP c:\intersystems\irishealth3\mgr\iristemp\ 無制限 51MBシス テムデフォルト 49MB 96.07 245.81GB マウント/RW 51 49251705 0 USER c:\intersystems\irishealth3\mgr\user\ 無制限 31MB システムデフォル ト 8.5MB 27.41 245.81GB マウント/RW 31 8.5 2517050 如果你想指定你要参考的数据库目录,请执行以下操作。 // 使用$LISTBUILD()函数准备好要引用的数据库目录的完整路径。 set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user") set rset=stmt.%Execute(dbdir) do rset.%Display() 如果你只想获得指定数据库目录的数据库名称(DatabaseName)、当前大小(Size)MB、可用自由空间(Available)MB、自由大小(Free)%、自由磁盘空间大小(DiskFreeSpace)GB,你可以执行以下流程(在VSCode或Studio中连接到%SYS命名空间时创建例程/类并编写代码)。 Class ZMyClass.Utils { ClassMethod GetDiskFreeSpace() { set dbdir=$LISTBUILD("c:\intersystems\irishealth3\mgr","c:\intersystems\irishealth3\mgr\user") set stmt=##class(%SQL.Statement).%New() set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace") set rset=stmt.%Execute(dbdir) while(rset.%Next()) { write rset.%Get("DatabaseName")," - ", rset.%Get("Size")," - ",rset.%Get("Available")," - ", rset.%Get("Free"),"% - ",rset.%Get("DiskFreeSpace"),! } } } 注意:如果你把用户定义的例程或类放在%SYS名称空间中,创建它们的名称以Z开头,这样用户定义的源代码就会在升级安装后保留下来。 下面是一个运行的例子。 USER>zn "%SYS" %SYS>do ##class(ZMyClass.Utils).GetDiskFreeSpace() IRISSYS - 159MB - 18MB - 11.32% - 245.81GB USER - 31MB - 8.5MB - 27.41% - 245.81GB %SYS>
公告
Claire Zheng · 四月 10, 2023

相约 2023 CHITEC | InterSystems诚邀您莅临展位,探讨医院互联互通平台高效建设之举

2023年4月14日-16日,2023 CHITEC将在安徽省合肥市合肥滨湖国际会展中心(安徽省合肥市锦绣大道3899号)盛大召开。点击查看CHITEC 2023完整日程。InterSystems将亮相CHITEC,通过展位展示、主题研讨会、分论坛演讲等方式,全方位多角度展示InterSystems“加速评测,助力公立医院高效建设互联互通平台和数据中心”的能力。 1. 欢迎莅临InterSystems展位T28 在展会现场,我们将向您展示InterSystems IRIS医疗版互联互通平台、一体化数据平台、基于FHIR的数据利用和统一语义的数据中心。如果您希望进一步了解详细内容情况,希望得到详细的方案讲解或Demo演示服务,欢迎您通过以下方式进行登记预约。 莅临展位,由展位工作人员为您现场预约; 点击链接,提前预约展位Demo演示。 2. 欢迎报名参加主题研讨会“加速测评,赋能医院高质量发展” 时间:2023年4月14日(周五)13:30-17:00地点:合肥滨湖国际会展中心·综合馆(2号馆)·201会议室 在这次研讨会上,我们将为您带来InterSystems IRIS医疗版互联互通套件的详细解读与分享。您将了解到: 加速测评的五大利器; 统一语义的数据中心建设; 数据利用与应用创新; 现场演示。 点击链接,报名参会。 3. 欢迎关注分论坛主题演讲 在“分论坛:医院集成平台与电子病历建设应用”中,InterSystems中国技术总监乔鹏将与多位行业专家同台献策,分享主题演讲“InterSystems IRIS医疗版互联互通套件,赋能医院高质量发展”,助力医院夯实信息化建设基础,欢迎关注! 时间:2023年4月15日(周六)15:00-15:15 地点:合肥滨湖国际会展中心西区·综合馆(2号馆)·205会议室
文章
Claire Zheng · 一月 7, 2021

认识Global Masters 倡导中心,从这里开始!

亲爱的社区用户,您好! 我们诚挚邀请所有社区成员加入InterSystems Global Masters倡导中心,以便了解最新动态,获取对开发者社区)的贡献积分,并获得奖励!请浏览本文并了解如何加入,有哪些福利可以期待! 点击此处:现在加入 ▶️ 什么是 Global Masters? Global Masters 是一个游戏化平台,您可以在其中完成与InterSystems技术相关的挑战(任务),赢取徽章和积分,并用积分兑换各种奖励! 在这里,每周都会发布5-10 个新挑战,公布开发者社区上最有趣的文章、最佳实践、视频、InterSystems 官方新闻、有趣的学习任务。 这是一个获得最新信息的好方法! ▶️ 具体是什么样的? 下面是挑战和奖励的示例: ▶️ 级别、徽章和特权 Global Masters 中有 6 个级别。您的级别越高,可获得的奖品价值和特权就越高。为开发者社区和 Open Exchange 做出贡献,在 Global Masters 保持活跃以达到最高级别!所有级别和徽章的列表将帮助您晋级到更高级别。 ▶️ 如何加入? 从这里开始! 1. 前往globalmasters.intersystems.com,点击“使用 InterSystems 登录名登录”按钮,然后使用您的WRC账号即可加入。 2. 登陆后,找到“自定义你的程序,从这里开始!(Customize your program! START HERE!)”开始挑战。这个初始挑战会解锁每周发布的奖励和新挑战。 不要跳过这个挑战,充分利用这里吧! 点击此处:现在加入 我们在 GM 中心等待所有 InterSystems 开发者的到来! 欢迎您提出任何反馈和想法。请随时与我们联系!InterSystems Global Masters 上见! 😉
公告
Claire Zheng · 七月 7

2025 年 6 月 10 日 – 官方公告:命名空间切换和全局显示故障

摘要 公告编号 受影响的产品和版本 风险类别和评分 明确要求 DP-439649 产品: InterSystems IRIS® InterSystems IRIS for Health HealthShare® Health Connect 版本: 2025.1.0.225.1 2025.1.0.223.0 2024.1.4 2023.1.6 2022.1.7 操作:4 – 高风险 系统稳定性:3 – 中等风险 此问题不构成安全漏洞。 它不允许用户绕过权限检查或访问其授权命名空间之外的数据 使用隐含命名空间、管理门户或数据库读写/只读混合访问权限 在命名空间之间切换或使用以下任何功能访问环境中的全局变量时,上面列出的 InterSystems 产品中的问题可能会引发意外的 <PROTECT> 错误: 隐含命名空间 只读访问默认数据库,但读写访问其他地方 列出例程和全局项的管理门户页面 该问题的症状包括: 存在命名空间创建故障 (DP-440830) 在管理门户中列出例程时,间歇性出现访问被拒的情况 (DP-439622) 全局显示实用工具不显示全局变量(如果用户只有只读权限)(DP-440744) DP-439649 已解决了所有这些问题,纠正了权限检查应用于进程私有全局和隐含命名空间解析的方式。 这些纠正措施针对的是行为中的失误,而不是访问控制中的失误。 权限得到了正确执行,用户无法访问其分配范围之外的全局变量或命名空间 此问题在以下产品的 2025.1.0.230.2、2024.1.4.516.1、2023.1.6.810.1 和 2022.1.7.116.1 版中得到了解决: InterSystems IRIS InterSystems IRIS for Health HealthShare® Health Connect 了解更多信息 如果您有任何问题或需要帮助,请联系 InterSystems 全球响应中心 (WRC)。
公告
Michael Lei · 五月 13, 2021

InterSystems IRIS 机器学习工具包管理微软 Azure 数据工厂 Data Factory 与机器学习

Intersystems RIS 机器学习工具包, 包括Python/R/Julia, 支持协调管理基于云的高级分析服务,如微软Azure数据工厂和机器学习。
文章
Michael Lei · 六月 15, 2021

InterSystems 最佳实践之--LVM PE 条带化使超融合存储吞吐量最大化

本帖概述了通过为 InterSystems 数据平台(InterSystems IRIS、Caché 和 Ensemble)上的数据库磁盘创建 LVM 物理盘区 (PE) 条带来实现低延迟存储 IO 的最佳实践配置,并提供了有用链接。 一致的低延迟存储是获得最佳数据库应用程序性能的关键。 例如,对于在 Linux 上运行的应用程序,经常在数据库磁盘中使用逻辑卷管理器 (LVM) ,因为它能够扩展卷和文件系统,或者为在线备份创建快照。 对于数据库应用程序,在使用 LVM PE 条带化逻辑卷的情况下,并行写入还可提高数据 I/O 的效率,从而有助于提高大规模连续读取和写入的性能。 ---- 本帖重点介绍在 HCI 中使用 LVM PE 条带,也受到了社区中发布的[软件定义的数据中心 (SDDC) 和超融合基础架构 (HCI) – InterSystems 客户的重要注意事项](https://community.intersystems.com/post/software-defined-data-centers-sddc-and-hyper-converged-infrastructure-hci-%E2%80%93-important "SDDC whitepaper")白皮书的启发。 该白皮书推荐“对 Linux 虚拟机使用 LVM PE 条带化,从而将 IO 分布在多个磁盘组”以及“对于 Linux 虚拟机上的所有数据库和写入映像日志 (WIJ) 文件使用异步 IO 及 rtkaio 库”。 本帖提供了这些要求和示例的一些上下文信息。 ---- __注:__ > 目前有多个超融合、融合和软件定义的供应商平台,我在本帖中不会提供每个平台的详细说明,而是以__在 VMware ESXi 和 vSAN 上运行的 Red Hat Enterprise Linux (RHEL) 7.4 上的 InterSystems IRIS 或 Caché __的配置作为示例进行说明。 不过,其他解决方案的基本过程是相似的,特别是在 InterSystems IRIS 或 Caché 和操作系统层面。 如果您不确定如何将这些说明转换到其他平台,请联系各供应商的支持人员,了解他们的最佳实践。 InterSystems 技术专家还可以直接向客户和供应商或通过社区提供建议。 还需要注意的是,本帖中关于 LVM PE 条带化的指南既适用于 HCI,也适用于“传统”存储。 ---- ## 是否必须使用 LVM 条带化? 对于磁盘阵列等传统存储,简短的答案是“否”。 对数据库磁盘运行 LVM 条带化卷并不是必需的,尤其是使用现代全闪存阵列的情况下;如果性能尚可,并且您没有 LVM 需求,则无需改动。 但是,如上文所述,建议在 Nutanix 和 VMware VSAN 等超聚合和存储解决方案上的数据库磁盘中使用 LVM 条带,以便在 IO 操作中可以使用更多主机节点和磁盘组。 ## 为什么对数据平台使用 LVM 条带? 特别建议 HCI 上的数据库磁盘使用 LVM 条带,以降低某些架构功能的性能开销,例如减轻写入守护进程 (WD) 对数据库写入和日志写入的影响。 使用 LVM 条带将数据库突发写入分散到更多磁盘设备和多个磁盘组。  此外,本帖还将说明如何增加大规模 IO 写入映像日志 (WIJ) 的并行性,从而减少对其他 IO 的延迟影响。 > 注意:在本帖中,当我提到“磁盘”时,我指的是 NVMe、Optane、SATA 或 SAS SSD,或者任何其他闪存设备。 ## vSAN 存储架构概述 HCI 存储(例如在 vSAN 上运行 ESXi 时)使用两个磁盘层:一个缓存层和一个容量层。 对于全闪存架构__(必须使用全闪存,不要使用旋转磁盘!)__,所有写入操作都在缓存层进行,随后数据最终会转移到容量层。 读取来自容量层(也可能来自缓存层上的缓存)。 HCI 集群中的每个主机都可以有一个或多个磁盘组。 在使用磁盘组的情况下(例如使用 VSAN 时),每个磁盘组都由一个缓存磁盘和多个容量磁盘组成。 例如,缓存磁盘是单个 NVMe 磁盘,容量磁盘是三个或更多写密集型 SAS SSD 磁盘。 有关 HCI(包括 vSAN 磁盘组)的更多详细信息,请参见社区上的帖子“[超融合基础架构 (HCI)](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-8-hyper-converged-infrastructure-capacity "HCI")”或联系您的 HCI 供应商。 ## LVM 条带化逻辑卷概述 [Red Hat 支持](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/lv_overview "Red Hat support")网站上提供了很好的 Linux LVM 概述,[其他地方,例如这里的面向系统管理员的教程也非常好](https://sysadmincasts.com/episodes/27-lvm-linear-vs-striped-logical-volumes "Striped")。 ## 数据平台存储 IO 了解 InterSystems 数据平台生成的 IO 类型很重要。 [社区中提供了存储 IO 模式](https://community.intersystems.com/post/data-platforms-and-performance-part-6-cach%C3%A9-storage-io-profile "Storage IO")的概述。 ---- # 创建 LVM PE 条带的过程 ## 先决条件和步骤 在我们深入讨论该过程之前,您还应该记住,其他变数也可能影响存储性能。 仅创建 LVM 条带并不能保证实现最佳性能,还必须考虑存储类型,以及整个 IO 路径,包括 IO 队列和队列深度。 本示例适用于 VMware,您还应该阅读 [InterSystems IRIS VMware 最佳实践指南](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-9-intersystems-iris-vmware-best-practice "VMware best practice guide"),并应用其中的建议。 尤其是存储方面的注意事项,例如跨 PVSCSI 控制器分离存储 IO 类型。 ### 概述 以下示例展示了在 VMware ESXi 和 VSAN 6.7 上运行的 Red Hat Enterprise Linux (RHEL) 7.4 上使用 InterSystems IRIS 或 Caché 的最佳实践。 下文介绍以下步骤: 1. ESXi 配置 2. RHEL 配置 3. Caché/InterSystems IRIS 配置 ---- ## 1. ESXi 配置 ### a) 创建 VMDK 磁盘 必须按照 [InterSystems IRIS VMware 最佳实践指南](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-9-intersystems-iris-vmware-best-practice "VMware best practice guide")创建磁盘;数据库、日志和 WIJ 在不同的 PVSCI 设备上。 创建的 VMDK 数量取决于您的规模调整要求。 在本示例中,数据库文件系统将由四个 255 GB VMDK 磁盘组成,这些磁盘将一起条带化,为数据库文件系统创建一个 900GB 逻辑磁盘。 #### 步骤: 1. 在添加 VMDK 前关闭虚拟机。 2. 在 vCenter 控制台中创建多个磁盘 (VMDK),每个磁盘为 255GB,单个 LVM 条带中的所有磁盘都必须与同一个 PVSCSI 控制器关联。 3. 启动虚拟机。 在启动过程中,将在操作系统中创建新磁盘,例如 `/dev/sdi` 等。 > __为什么创建多个 255 GB VMDK?__在 vSAN 中,存储组件以 256 GB 区块为单位创建,我们将 VMDK 大小保持在恰好低于 256 GB,是为了强制使组件位于不同的磁盘组上。 从而实施另一个层面的条带化(在我的测试中是这样,但我不保证 vSAN 实际也是如此)。 注意:在创建过程中,vSAN 将磁盘组件分布到所有主机和磁盘组,以确保可用性。 例如,在允许的故障数 (FTT) 设置为 2 的情况下,每个磁盘组件有三个副本,加上两个小的见证组件,全部都在不同的主机上。 如果磁盘组、主机或网络发生故障,应用程序将使用其余磁盘组件继续运行,而不会丢失数据。 我们对这个过程可能多虑了! 在 vSAN 等 HCI 解决方案中,无法控制组成 VMDK 的组件在某个时间点位于哪个物理磁盘上。 事实上,由于维护、重新同步或重建的原因,随着时间的推移,VMDK 可能会移动到不同的磁盘组或主机上。 这是正常的。 ---- ## 2. RHEL 配置 ### a) 确认对于每个磁盘设备,RHEL IO 调度器都为 NOOP。 最佳实践是使用 ESXi 内核的调度器。 有关设置调度器的更多信息,请参见 [Red Hat 知识库文章](https://access.redhat.com/solutions/109223 "Setting noop")。 我们建议在启动时为所有设备设置该选项。 要验证是否已正确设置调度器,可以显示磁盘设备(例如,在本例中为 `/dev/sdi`)的当前设置,如下所示: [root@db1 ~]# cat /sys/block/sdi/queue/scheduler [noop] deadline cfq 您可以看到 noop 已启用,因为它放在方括号中突出显示。 ### b) 创建条带化的 LVM 和 XFS 文件系统 现在,我们准备在 RHEL 中创建 LVM 条带和数据库文件系统。 以下是所涉及步骤的示例,请注意,对于您的环境,需要替换虚构的名称 vgmydb、lvmydb01 和路径 /mydb/db。 #### 步骤 **1.** 使用 `vgcreate` 命令创建带有新磁盘设备的卷组。 vgcreate -s 4M 例如,如果创建磁盘 /dev/sdh、/dev/sdi、/dev/sdj 和 /dev/sdk: vgcreate -s 4M vgmydb /dev/sd[h-k] **2.** 使用 `lvcreate` 命令创建条带化逻辑卷。 建议至少四个磁盘。 从 4MB 条带开始,但是对于非常大的逻辑卷,系统可能会提示您选择更大的大小,如 16M。 lvcreate -n -L -i -I 4MB 例如,要创建带有 4 个条带的 900GB 磁盘,且条带大小为 4 MB: lvcreate -n lvmydb01 -L 900G -i 4 -I 4M vgmydb **3.** 使用 `mkfs` 命令创建数据库文件系统。 mkfs.xfs -K 例如: mkfs.xfs -K /dev/vgmydb/lvmydb01 **4.** 创建文件系统挂载点,例如: mkdir /mydb/db **5.** 编辑 `/etc/fstab` 以添加以下挂载条目并挂载文件系统。 例如: /dev/mapper/vgmydb-lvmydb01 /mydb/db xfs defaults 0 0 **6.** 挂载新的文件系统。 mount /mydb/db ---- ## 3. Caché/InterSystems IRIS 配置 本节我们将配置: - 异步和直接 IO,以实现数据库和 WIJ 的最佳写入性能。 这也为数据库读取操作启用了直接 IO。 > 注意:由于直接 IO 会绕过文件系统缓存,因此在配置直接 IO 后,操作系统文件复制操作(包括 Caché 在线备份)将非常慢。 为提高 **RHEL** 上的 WIJ 的性能并实现最低延迟(SuSE 9 及更高版本不支持),并减少对其他 IO 的影响,我们还将配置: - 将 `rtkaio` 库用于使用 Caché 的 RHEL 系统。 **注意:IRIS 不需要这个库。** > 注:对于 Linux 上版本号以 2017.1.0. 开头的 Caché、Ensemble 和 HealthShare 发行版 (仅当备份或异步镜像成员配置为使用 rtkaio 时),必须应用 [ RJF264,可通过 InterSystems 全球响应中心 (WRC) 的特别分发获取](https://www.intersystems.com/support-learning/support/product-news-alerts/support-alert/alert-linux-defects-can-corrupt-mirror-copies-journal-files/ "RJF264 from WRC")。   #### 步骤 步骤为: 1. 关闭 Caché 2. 编辑 `/cache.cpf` 文件 3. 重启 Caché 在 cache.cpf 文件中,将以下三行添加到 `[config]` 部分的顶部,其他行保持不变,如下例所示: [config] wduseasyncio=1 asyncwij=8 对于 RHEL Caché(不是 IRIS),还要将以下内容添加到 `[config]` 部分: LibPath=/lib64/rtkaio/ 注意:当 Caché 重新启动后,这些行将在 `[config]` 部分中按字母顺序排序。 ---- ## 总结 本帖给出了创建 900GB LVM PE 条带和为 vSAN 上的数据库磁盘创建文件系统的示例。 为了通过 LVM 条带获得最佳性能,您还学习了如何配置 Caché/InterSystems IRI 来为数据库写入和 WiJ 启用异步 IO。
文章
Michael Lei · 六月 11, 2022

InterSystems 最佳实践系列文章--系统性能组件SystemPerformance (原 pButtons) API和UI示例

在检查我们的^pButtons(在IRIS中改名为^SystemPerformance)性能监控工具的文档时,一位客户告诉我。"我理解所有内容,但我希望它能更简单......更容易定义配置文件,管理它们等等"。 在这次会议之后,我认为尝试为其提供一些更简单的人机界面是一个不错的试验。 这方面的第一步是在现有的pButtons例程上包裹一个基于类的API。 我还能够添加一些更多的 "功能",比如显示当前正在运行的配置文件,它们剩余的运行时间,以前运行的进程等等。 下一步是在这个API的基础上添加一个REST API类。 有了这个工件(pButtons REST API),人们就可以在上面建立一个比较时髦的用户界面。 举个🌰: - 我在这里分享这个方法的几个步骤: 两个类是 "Basic "API – 以及REST API(包括一些单元测试类来测试这些)。 一个用于REST API的Swagger JSON。为了构建这个,我使用了当时(2017年)InterSystems IRIS中尚未发布的REST管理功能。在InterSystems IRIS提供的基本Swagger JSON的基础上,我添加了更多的信息。 以及一个更加简单的angular UI界面 (基于 http://websystique.com/angularjs/angularjs-crud-application-using-ngresource/) 几个重点提示: 大多数的 "Basic "API方法都使用有文档的和官方支持的pButtons/SystemPerformance rountine的入口点。但有些方法是访问由pButtons工具管理的内部结构。这些方法没有被记录下来,也不被支持,这些方法在升级后可能会停止工作而不被通知。 这段代码不应该作为使用InterSystems IRIS构建基于REST的Angular应用程序的 "最佳实践 "范例。UI部分只是作为一个例子/"预告 "和示例的起点,[例如,它并不完整--"常规部分"(例如,日志文件夹位置管理的占位符)没有实现;刷新内容并不完全工作,以及其他一些 "已知问题..."] 这段代码最早是在很久之前写的--所以: (a) 我重新检查/测试/修改确保能在IRIS上运行 (包括改些名字等等). (b) REST API并没有使用需求/设计优先的方法--我最初确实玩过(当时)IRIS-beta对生成Swagger的支持,现在用它把这个变成了需求/设计优先的方法. (c) 这个可能没有用到最新的特性. (d) 我现在还增加了对在Docker容器中运行的支持(有相关的Docker文件等)。 (e) 我还增加了能作为ZPM包安装的支持。 应用和源代码:https://openexchange.intersystems.com/package/sys-perf-restapi
公告
Claire Zheng · 四月 11, 2022

InterSystems Globals开发者竞赛获奖者名单出炉!来看看这优秀的应用吧!

Hi开发者们, 我们非常高兴地向大家宣布此次 InterSystems Globals开发者竞赛的获奖者! 第19届编程大赛的优胜者名单如下: 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出: 🥇 第一名,奖金 $4,000 获奖项目 global-mindmap 开发者 @Yuri.Gomes 🥈 第二名,奖金 $2,000 获奖项目 globals-tool 开发者 @Dmitry.Maslennikov 🥉 第三名,奖金 $1,000 获奖项目 iris-globals-graphDB 开发者 @Muhammad.Waseem 更多获奖者: 🏅 奖金$100 ,获奖项目 python-globals-serializer-example 开发者 @José.Pereira 🏅 奖金$100 ,获奖项目 global-archiver 开发者 @Lorenzo.Scalese 🏅 奖金$100 ,获奖项目 blockchain - [ IRIS python ] 开发者 @davimassaru.teixeiramuta 🏅 奖金$100 ,获奖项目 Globals: Embedded Python vs. ObjectScript 开发者 @Robert.Cemper1003 🏅 奖金$100 ,获奖项目 zpm-generate-ui 开发者 @MikhailenkoSergey 🏅 奖金$100 ,获奖项目 GlobalToJSON-XL-Academic 开发者 @Robert.Cemper1003 🏅 奖金$100 ,获奖项目 Cubes 开发者 @Sean.Connelly 🏅 奖金$100 ,获奖项目 GlobalToJSON-Efficient 开发者 @Robert.Cemper1003 🏅 奖金$100 ,获奖项目 iris-globals-contest 开发者 @Oliver.Wilms 🏅 奖金$100 ,获奖项目 GlobalToJSON-Compact 开发者 @Robert.Cemper1003 🏅 奖金$100 ,获奖项目 global-name-search 开发者 @Jailton.Viçôzo 🏅 奖金$100 ,获奖项目 React-UI-Global 开发者 @Evgeniy.Potapov 社区提名奖(Community Nomination)- 获得总投票数最多的应用: 🥇 第一名,奖金 $1,000 ,获奖项目 globals-tool 开发者 @Dmitry.Maslennikov 🥈 第二名,奖金 $750 ,获奖项目 python-globals-serializer-example 开发者 @José.Pereira 🥉 第三名,奖金 $500 ,获奖项目 iris-globals-graphDB 开发者 @Muhammad.Waseem 恭喜所有优胜者! 感谢大家对本次比赛的关注和付出,是你们的付出让这次大赛熠熠生辉!ღ( ´・ᴗ・` )比心🙌 接下来呢? 如果没有获奖,也不要灰心气馁!要知道,失败是成功之母,坚持下去就能成功 (^-^)V 准备好,期待五月的大赛吧! 😎
文章
姚 鑫 · 一月 20, 2023

第五十一章 使用 ^SystemPerformance 监视性能 - Apple macOS 平台的 InterSystems IRIS 性能数据报告

# 第五十一章 使用 ^SystemPerformance 监视性能 - Apple macOS 平台的 InterSystems IRIS 性能数据报告 - `%SS` - 使用 `ALL^%SS` 命令在运行过程中采集了四个样本。 - `Configuration *` - 来自服务器的 `IRIS` 实例名称和主机名、完整的 `IRIS` 版本字符串、许可客户名称和许可订单号。 - `cpf file *` - 当前活动配置文件的副本。 - `irisstat -c` - 使用命令 `irisstat cache -p-1 -c-1 -e1 -m8 -n2 -N127` 在运行过程中以均匀的间隔采集四个样本。以下是对每个参数的简要说明: - `-p-1`: 对进程表进行采样以包括进程和全局状态信息。 - `-c-1`: 对共享内存的计数器部分进行采样以显示日志、锁、磁盘和资源使用统计信息。 - `-e1: SYSLOG` 错误表。 - `-m8`: 文件表,其中包括所有 `IRIS.DAT` 文件及其属性。 - `-n2`: 网络结构表,包括本地到远程数据库的映射。 - `-N127`: 客户端和服务器连接的 `ECP` 统计信息。 - `irisstat -D` - 使用命令 `irisstat cache --f1 -D10,100` 在运行过程中以均匀的间隔采集八个样本。以下是对每个参数的简要说明: - `-fl`: 基本标志。 - `-D10,100`: 在 `10` 秒的总采样周期内,每 `100` 毫秒对块碰撞进行采样。 - `ipcs *` - 进程间通信配置信息,包括共享内存、信号量和消息队列; `ipcs -a` 命令的输出。 - `license *` - 使用 `Decode^%LICENSE` 和 `counts^%LICENSE` 的 `IRIS` 许可使用信息。 - `macOS Info *` - 操作系统版本和硬件信息。 `sw_vers`、`uname` `-a、mount` 和 `netstat` 命令的输出。 - `mgstat` - 使用 `^mgstat` 实用程序在运行过程中获取 `IRIS` 特定数据。请参阅 `Monitoring Guide` 的 `Monitoring Performance Using ^mgstat` 部分。 - `Profile *` - 有关创建此日志的 `^SystemPerformance` 配置文件的信息。 - `ps:` - 使用命令 `ps -eflv` 在运行过程中以均匀的间隔采集四个样本。 - `sar -d` - 磁盘(块)设备吞吐量和延迟统计信息。 - `sar -g` - 页面输出率。 - `sar -n DEV` - 网络设备吞吐量。 - `sar -n EDEV` - 网络设备错误率。 - `sar -p` - 页入和页错误率。 - `sar -u` - CPU 使用统计。 - `sysctl -a *` - 内核和系统参数设置。 - `vm_stat *` - 内存页面信息。
文章
姚 鑫 · 一月 21, 2023

第五十二章 使用 ^SystemPerformance 监视性能 - IBM AIX® 平台的 InterSystems IRIS 性能数据报告

# 第五十二章 使用 ^SystemPerformance 监视性能 - IBM AIX® 平台的 InterSystems IRIS 性能数据报告 - `%SS` - 使用 `ALL^%SS` 命令在运行过程中采集了四个样本。 - `AIX info *` - `oslevel` 的输出。 `uname -a`、`prtconf` 和 `lspv `命令 - `Configuration *` - 来自服务器的 `IRIS` 实例名称和主机名、完整的 `IRIS` 版本字符串、许可客户名称和许可订单号。 - `cpf file *` - 当前活动配置文件的副本。 - `cpu type *` - 有关安装的处理器以及是否启用 `SMT` 的信息; `lsattr -El proc0` 的输出。 - `irisstat -c` - 使用命令 `irisstat cache -p-1 -c-1 -e1 -m8 -n2 -N127` 在运行过程中以均匀的间隔采集四个样本。以下是对每个参数的简要说明: - `-p-1`: 对进程表进行采样以包括进程和全局状态信息。 - `-c-1`: 对共享内存的计数器部分进行采样以显示日志、锁、磁盘和资源使用统计信息。 - `-e1`: `SYSLOG` 错误表。 - `-m8`: 文件表,其中包括所有 `IRIS.DAT` 文件及其属性。 - `-n2`: 网络结构表,包括本地到远程数据库的映射。 - `-N127`: 客户端和服务器连接的 `ECP` 统计信息。 - `irisstat -D` - 使用命令 `irisstat cache --f1 -D10,100` 在运行过程中以均匀的间隔采集八个样本。以下是对每个参数的简要说明: - `-fl`: 基本标志。 - -`D10,100`: 在 `10` 秒的总采样周期内,每 `100` 毫秒对块碰撞进行采样。 - `df -k *` - 有关挂载文件系统的信息,包括挂载点、逻辑卷和可用空间; `df -k` 命令的输出。 - `filesystems *` - 当前 `/etc/filesystems` 文件。 - `ioo -a *` - `I/O`可调参数的当前值; `ioo -a` 命令的输出。仅当启动 `^SystemPerformance` 配置文件运行的用户具有 `root` 访问权限时才包括在内。 - `iostat -DIT` - 带有 `IBM AIX® 5.3` 及更新版本采样时间的扩展磁盘/设备统计信息的长列表; `iostat -DIT` 命令的输出。信息因 `IBM AIX® 5.3` 之前的发行版而异。 - `ipcs *` - 进程间通信配置信息,包括共享内存、信号量和消息队列; `ipcs -a` 命令的输出。 - `license *` - 使用 `Decode^%LICENSE` 和 `counts^%LICENSE` 的 `IRIS` 许可使用信息。 - `mount *` - 有关所有文件系统及其挂载选项的信息。 - `mgstat` - 使用 `^mgstat` 实用程序在运行过程中获取 `IRIS` 特定数据。请参阅 `Monitoring Guide` 的 `Monitoring Performance Using ^mgstat` 部分。 - `Profile *` - 有关创建此日志的 `^SystemPerformance` 配置文件的信息。 - `ps:` - 使用命令 `ps aux` 在运行过程中以均匀的间隔采集四个样本。 - `sar -d` - 仅当启动 `^SystemPerformance` 配置文件运行的用户具有 `root` 访问权限并且 `/usr/sbin/sar` 存在时才包括在内。 - `sar -r` - 仅当启动 `^SystemPerformance` 配置文件运行的用户具有 `root` 访问权限并且 `/usr/sbin/sar` 存在时才包括在内。 - `sar -u` - 包括微分区信息(如果使用)的 `CPU` 统计信息。仅当启动 `^SystemPerformance` 配置文件运行的用户具有 `root` 访问权限并且 `/usr/sbin/sar` 存在时才包括在内。 - `vmo –a` - 虚拟内存可调参数的当前值; `vmo -a` 命令的输出。仅当启动 `^SystemPerformance` 配置文件运行的用户具有 `root` 访问权限时才包括在内。 - `vmstat -s *` - 虚拟内存统计的绝对计数,包括总页入和页出。 - `vmstat -t` - 带有时间戳的虚拟内存和 `CPU`(分页、排队和 CPU)统计信息。 - `vmstat -v *` - 示例虚拟内存统计信息,包括可用页面、`pbuf` 使用情况和 `fsbuf` 使用情况。
文章
Claire Zheng · 二月 6, 2023

InterSystems开发者竞赛(Tool):欢迎了解来自中国开发者的三个参赛应用

InterSystems 开发者竞赛:Tool(工具)已进入投票时间,我们收集到来自全球的21个参赛作品,其中有三个参赛应用来自中国开发者。 以下按提交顺序排名 参赛应用1 Intersystems IRIS platform queue trend monitoring component(Intersystems IRIS平台队列监控组件) 提交者:yubo mao简介:随着医院信息化建设的逐步完善,医院业务接口越来越多,业务接口数据处理可能会由于多种因素(网络、消费方系统等)影响下,出现消息堆积过多甚至造成接口卡顿的情况,影响院内正常业务开展,因此对于业务接口组件队列的的监控愈发重要。 当前Intersystems IRIS平台内置的队列监控界面仅展示接口组件实时队列信息,对于对于医院实际应用场景所需要的队列数据信息提供较为局限。队列监控组件程序是基于Intersystems IRIS平台开发,可以对所有接口组件进行统一监控,并展示组件24h内组件队列信息,也可通过设置时间段查询组件历史队列数据,更好满足当前的院内应用需求。 更多详情,请查看参赛者文章及应用: 文章:Queue monitoring 应用:应用已上传至InterSystems Open Exchange 参赛应用2 message_key_query(消息键查询) 提交者:王喆简介:随着新型冠状病毒肺炎的流行,医院往往需要对患者信息进行流程调整操作,如输入患者ID查找门诊或住院部、挂号时间等。传统的数据库查询需要专业的程序员来处理,而使用该方案从界面上可以直接快速定位到患者在医院的挂号和就诊相关信息和时间。 更多详情,请查看参赛者文章及应用: 文章:IRIS快速查询服务思路分享 IRIS quick query service idea sharing 应用:应用已上传至InterSystems Open Exchange 参赛应用3 iris_log_analytics(IRIS log分析) 提交者:银行 郝简介:此方案用于监控IRIS平台事件日志相关信息,包括事件日志列表、日志详细信息、日志类型占比、日志数量最高组件Top7、近7天内日志数量波形图。 更多详情,请查看参赛者文章及应用: 应用:应用已上传至InterSystems Open Exchange 投票已经开始啦,欢迎为你感兴趣的应用投出宝贵的票票! 🔥 投票选出最佳应用程序 🔥 非常棒的应用,欢迎大家踊跃投票! 截至2月7日的投票结果分享- Since the beginning of the voting we have the results: Expert Nomination, Top 5 OpenAPI-Suite by @Lorenzo Scalese irissqlcli by @Dmitry Maslennikov iris-tripleslash by @Henry Pereira Intersystems IRIS platform queue trend monitoring component by @Yubo Mao message_key_query by @王喆 ➡️ Voting is here. Community Nomination, Top 5 Intersystems IRIS platform queue trend monitoring component by @Yubo Mao iris-tripleslash by @Henry Pereira message_key_query by @王喆 DX Jetpack for VS Code by @John Murray OpenAPI-Suite by @Lorenzo Scalese ➡️ Voting is here. So, the voting continues. Please support the application you like!
文章
Claire Zheng · 二月 21, 2023

【动画视频】列存储:让查询和统计,随心所愿

InterSystems IRIS数据平台支持列存储,提供更优存储方案,保障系统稳定运行。
文章
Claire Zheng · 六月 8, 2023

【动画视频】对医院来说,这样的互联互通平台才有用!

医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,可助力医院用户释放数据价值,推动应用创新!截至目前,InterSystems技术已助力150余家医院通过四级及以上医院信息互联互通标准化成熟度评测,其中,五级乙等用户近30家。