文章 Michael Lei · 五月 24, 2021 阅读大约需 2 分钟 InterSystems 最佳实践系列之数据平台和性能 - 第 6 部分 Caché 存储 IO 配置文件 我本人和其他技术架构师经常需要向客户和供应商说明 Caché IO 要求以及 Caché 应用程序使用存储系统的方式。 在向客户和供应商说明典型的 Caché IO 配置文件和事务性数据库应用程序的要求时,下面的表格很有用。 原始表格由 Mark Bolinsky 创建。 在以后的帖子中,我将讨论更多关于存储 IO 的内容,所以现在贴上这些表格也作为将来文章的参考。 #InterSystems 业务解决方案和架构 #性能 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 162
文章 Michael Lei · 五月 24, 2021 阅读大约需 7 分钟 InterSystems 数据平台和性能 – 第 1 篇 您的应用程序已部署,一切运行正常。 很好,击个掌! 然后电话突然响个不停 – 用户投诉应用程序有时很“慢”。 这是什么意思? 有时? 您有哪些工具,查找和解决这个缓慢问题应查看哪些统计数据? 您的系统基础架构是否能承担用户负载的任务? 在投入生产之前,应该询问哪些基础架构设计问题? 如何自信地为新硬件规划容量,而不会过度规定? 如何停止电话铃声? 如何一开始就不让它响? #InterSystems 业务解决方案和架构 #性能 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 216
文章 姚 鑫 · 五月 23, 2021 阅读大约需 7 分钟 第四章 收发电子邮件 第四章 收发电子邮件 本主题描述如何使用InterSystems IRIS发送和接收MIME电子邮件消息。 注意:本主题中的示例是经过组织的,因此管理电子邮件的方法可以用于不同的电子邮件服务器,这在测试和演示期间非常有用。这不一定是最适合生产需要的代码组织。 支持电子邮件协议 电子邮件使用标准协议通过Internet发送消息。 InterSystems IRIS支持以下三种协议: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 90
文章 姚 鑫 · 五月 23, 2021 阅读大约需 6 分钟 第三章 发送HTTP请求 第三章 发送HTTP请求 发送HTTP请求 创建HTTP请求后,使用以下方法之一发送该请求: Delete() method Delete(location As %String = "", test As %Integer = 0, reset As %Boolean = 1) as %Status 发出HTTP DELETE请求。 Get() method Get(location As %String = "", test As %Integer = 0, reset As %Boolean = 1) as %Status 发出HTTP GET请求。此方法使Web服务器返回请求的页面。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 142
文章 姚 鑫 · 五月 21, 2021 阅读大约需 6 分钟 第二章 设置和获取HTTP标头 第二章 设置和获取HTTP标头 设置和获取HTTP标头 可以设置和获取HTTP标头的值。 %Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。如果不设置这些属性,则会自动计算它们: #.NET #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 200
文章 姚 鑫 · 五月 19, 2021 阅读大约需 2 分钟 IRIS 单元测试 IRIS 单元测试 第一章 单元测试概述☆☆☆☆ 第二章 使用%UnitTest进行单元测试☆☆☆☆ 第三章 执行测试☆☆☆ 第四章 使用Setup和tear Down方法执行测试☆☆☆ 前言 #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 140
文章 Michael Lei · 五月 18, 2021 阅读大约需 2 分钟 来自英文社区:IRIS与Caché/Ensemble之间的ECP 那些已经与ECP合作过的人可能知道它不仅在操作系统,处理器技术(big-little-endian),但在C / E的各个版本中也有限制。此交叉版本功能还包括IRIS(针对2020.1进行了验证)和C / E(2018.3) #ECP #Globals #应用程序服务器 #Caché #Ensemble #InterSystems IRIS 0 0 0 145
问题 Michael Lei · 五月 18, 2021 来自英文社区: 在IRIS和CACHÉ之间移动代码 我面临着同时在IRIS和CACHÉ上开设一堆课程的挑战直到所有系统都迁移到IRIS。 在Caché开发环境中应用更改并迁移到IRIS没问题 但是,如果我必须对IRIS进行修复,似乎没有干净的方法可以返回Caché。 #对象数据模型 #ObjectScript #VSCode #Studio #Caché #InterSystems IRIS 0 1 0 187
文章 姚 鑫 · 五月 18, 2021 阅读大约需 6 分钟 第四章 使用Setup和tear Down方法执行测试 第四章 使用Setup和tear Down方法执行测试 示例:使用Setup和tear Down方法执行测试 以通常的方式执行新的单元测试。 #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 79
问题 Johnny Wang · 五月 16, 2021 webservice服务,在浏览器中调用成功,在soapui工具中调用失败“wsse:FailedAuthentication” webservice服务,在浏览器中调用成功,在soapui工具中调用失败“wsse:FailedAuthentication” #Caché 0 1 0 299
文章 姚 鑫 · 五月 17, 2021 阅读大约需 5 分钟 第三章 执行测试 第三章 执行测试 示例:执行测试 现在使用%UnitTest.Manager.RunTest执行单元测试。以下是方法: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 100
文章 姚 鑫 · 五月 16, 2021 阅读大约需 6 分钟 第二章 使用%UnitTest进行单元测试 第二章 使用%UnitTest进行单元测试 本教程的第二部分介绍了如何使用%UnitTest包对InterSystems IRIS代码进行单元测试。完成本教程的这一部分后,将能够: 解释%UnitTest包中三个主要类的角色。 列出基于%UnitTest包的单元测试类和方法的要求。 创建并执行方法的单元测试。 浏览%UnitTest.Manager创建的测试报告。 执行单元测试时,使用%UnitTest.TestCase方法初始化和还原数据库数据。 什么是%UnitTest? %UnitTest包是一组为IRIS提供测试框架的类。在结构上,它类似于xUnit测试框架。%UnitTest为创建和执行以下各项的单元测试提供类和工具: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 115
文章 姚 鑫 · 五月 15, 2021 阅读大约需 4 分钟 第一章 单元测试概述 第一章 单元测试概述 本教程的第一部分概述了单元测试。完成本教程的这一部分后,将能够: - 定义单元测试并区分单元测试和集成测试 - 列出单元测试的几个好处 - 描述InterSystems IRIS %UnitTest包和xUnit测试框架之间的相似性。 - 列出软件开发中测试优先方法经常声称的几个好处。 什么是单元测试? 单元测试是对单个代码模块的正确性的测试,例如,方法或类的测试。通常,开发人员在开发代码时为其代码创建单元测试。典型的单元测试是一种执行方法的方法,该方法测试并验证该方法是否为给定的一组输入生成了正确的输出。 单元测试不同于集成测试。集成测试验证了一组代码模块交互的正确性。单元测试仅单独验证代码模块的正确性。一组代码模块的集成测试可能会失败,即使每个模块都通过了单元测试。 为什么要进行单元测试? 单元测试提供了许多好处,包括: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 81
文章 姚 鑫 · 五月 14, 2021 阅读大约需 2 分钟 Caché Global Caché Global 第一章 简介global☆☆☆☆☆ 第二章 全局变量结构(一)☆☆☆☆☆ 第二章 全局变量结构(二)☆☆☆☆☆ 第三章 使用多维存储(全局变量)(一)☆☆☆☆☆ 第三章 使用多维存储(全局变量)(二)☆☆☆☆☆ #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 210
文章 姚 鑫 · 五月 14, 2021 阅读大约需 3 分钟 第六章 临时全局变量和IRISTEMP数据库 第六章 临时全局变量和IRISTEMP数据库 对于某些操作,可能需要全局变量的功能,而不需要无限期保存数据。例如,可能希望使用全局对某些不需要存储到磁盘的数据进行排序。对于这些操作,InterSystems IRIS提供了临时全局机制。该机制的工作方式如下: 对于应用程序名称空间,可以定义一个全局映射,以便将具有特定命名约定的全局变量映射到IRISTEMP数据库,该数据库是一个特殊的数据库,如下所述。 例如,可以定义一个全局映射,以便将名称为^AcmeTemp*的所有全局变量映射到IRISTEMP数据库。 - 当代码需要临时存储数据并再次读取它时,代码将向使用该命名约定的全局变量写入数据,并从全局变量读取数据。 例如,要保存值,代码可能会执行以下操作: set ^AcmeTempOrderApp("sortedarray")=some value 然后,稍后代码可能会执行以下操作: #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 105
文章 姚 鑫 · 五月 13, 2021 阅读大约需 4 分钟 第五章 管理全局变量(二) 第五章 管理全局变量(二) 在全局变量中查找值 “查找全局变量字符串”页使可以在下标或选定全局变量的值中查找给定的字符串。 要访问和使用此页,请执行以下操作: 显示“全局变量”页。 选择要使用的全局变量。为此,请参阅“全局页简介”一节中的步骤2和3。 单击查找按钮。 对于查找内容,输入要搜索的字符串。 (可选)清除大小写匹配。默认情况下,搜索区分大小写。 单击Find First或Find All。 然后,页面显示选定全局变量中下标或值包含给定字符串的第一个节点或所有节点。该表左侧显示了节点下标,右侧显示了相应的值。 如果使用的是Find First,请根据需要单击Find Next以查看下一个节点。 完成后,单击关闭窗口。 执行批量更换 注意:在进行任何编辑之前,请确保知道IRIS使用哪个全局系统,以及应用程序使用哪个全局系统;参见“一般建议”此选项会永久更改数据。不建议在生产系统中使用。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 87
文章 姚 鑫 · 五月 13, 2021 阅读大约需 4 分钟 第五章 管理全局变量(二) 第五章 管理全局变量(二) 在全局变量中查找值 “查找全局变量字符串”页使可以在下标或选定全局变量的值中查找给定的字符串。 要访问和使用此页,请执行以下操作: 显示“全局变量”页。 选择要使用的全局变量。为此,请参阅“全局页简介”一节中的步骤2和3。 单击查找按钮。 对于查找内容,输入要搜索的字符串。 (可选)清除大小写匹配。默认情况下,搜索区分大小写。 单击Find First或Find All。 然后,页面显示选定全局变量中下标或值包含给定字符串的第一个节点或所有节点。该表左侧显示了节点下标,右侧显示了相应的值。 如果使用的是Find First,请根据需要单击Find Next以查看下一个节点。 完成后,单击关闭窗口。 执行批量更换 注意:在进行任何编辑之前,请确保知道IRIS使用哪个全局系统,以及应用程序使用哪个全局系统;参见“一般建议”此选项会永久更改数据。不建议在生产系统中使用。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 78
文章 Michael Lei · 五月 12, 2021 阅读大约需 16 分钟 InterSystems 最佳实践系列之数据平台和性能 – 第 9 篇 InterSystems IRIS VMware 最佳实践指南 本贴提供了在 VMware ESXi 5.5 及更高版本的环境中部署 Caché 2015 及更高版本时,关于配置、系统规模调整和容量规划等方面的指南。 我假定您已经了解 VMware vSphere 虚拟化平台,所以直接给出推荐。 本指南中的推荐不特定于任何具体硬件或站点特定的实现,也不应作为规划和配置 vSphere 部署的全面指南,而是一份您可以做出选择的最佳实践配置清单。 我希望您的 VMware 专家实施团队能针对具体站点对这些推荐进行评估。 这里是 InterSystems 数据平台和性能系列的其他帖子的列表。 注:本帖更新于 2017 年 1 月 3 日,强调必须为生产数据库实例设置虚拟机内存预留,以保证 Caché 有足够内存可用,并且不会出现内存交换或膨胀而对数据库性能产生负面影响。 更多详细信息,请参见下面的内存部分。 #InterSystems 业务解决方案和架构 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health #文档 0 0 0 328
文章 Michael Lei · 五月 12, 2021 阅读大约需 17 分钟 InterSystems 最佳实践系列之--数据平台和性能 – 虚拟机备份和 Caché 冻结/解冻脚本 在本帖中,我将展示使用外部备份来备份 Caché 的策略,以及与基于快照的解决方案集成的示例。 如今,大多数解决方案部署在基于 VMware 的 Linux 上,因此许多帖子都以展示解决方案如何集成 VMware 快照技术为例。 Caché 备份 - 包括电池? Caché 安装后即包含 Caché 在线备份,可提供不间断的 Caché 数据库备份。 但随着系统规模的扩大,您应该考虑更高效的备份解决方案。 集成了快照技术的外部备份是推荐的系统(包括 Caché 数据库)备份解决方案。 外部备份有特殊注意事项吗? 外部备份的在线文档包含了全部详细信息。 一个关键考虑事项是: “为确保快照的完整性,Caché 提供了在创建快照时冻结数据库写操作的方法。 在创建快照期间,只冻结对数据库文件的物理写入,从而允许用户进程继续在内存中不间断地执行更新。” #InterSystems 业务解决方案和架构 #备份 #提示和技巧 #系统管理 #部署 #镜像 #Caché #InterSystems IRIS #InterSystems IRIS for Health #文档 0 0 0 668
文章 Michael Lei · 五月 12, 2021 阅读大约需 7 分钟 InterSystems 数据平台和性能 – 第 2篇 部分 在上个帖子中,我们安排了使用 pButtons 进行 24 小时的性能指标收集。 在本帖中,我们将研究几个收集到的关键指标,以及它们与底层系统硬件的关系。 我们还将开始探索 Caché(或任一 InterSystems 数据平台)指标与系统指标之间的关系。 以及如何使用这些指标来了解系统的每日节拍率并诊断性能问题。 #InterSystems 业务解决方案和架构 #性能 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 1 215
文章 Michael Lei · 五月 12, 2021 阅读大约需 13 分钟 InterSystems 数据平台和性能 – 第 3 篇:聚焦 CPU 本周,我将关注 CPU - 主要硬件食物群之一 :) 一位客户请我就以下情况提供建议:他们的生产服务器已接近使用寿命终止,是时候更新硬件了。 他们还考虑通过虚拟化来整合服务器,并希望适当调整裸机或虚拟机的容量规模。 今天我们将关注 CPU,在后面的帖子中,我将介绍适当调整其他主要食物群(内存和 IO)规模的方法。 所以问题是: 如何将五年多以前对处理器的应用要求转换成针对当今的处理器? 目前的处理器有哪些是合适的? 虚拟化如何影响 CPU 容量计划? #InterSystems 业务解决方案和架构 #性能 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 212
文章 Michael Lei · 五月 12, 2021 阅读大约需 15 分钟 InterSystems 数据平台和性能 - 第 4 篇 - 关注内存 本帖将展示为 InterSystems 数据平台上运行的数据库应用调整共享内存需求(包括 global 和例程缓冲区、gmheap 以及 locksize)的方法,以及在配置服务器和虚拟化 Caché 应用程序时应考虑的一些性能提示。 和以往一样,当我谈到 Caché 时,我指的是所有数据平台(Ensemble、HealthShare、iKnow 和 Caché)。 本系列其他帖子的列表 当我最初开始使用 Caché 时,大多数客户的操作系统是 32 位的,Caché 应用程序的内存有限且昂贵。 通常部署的英特尔服务器只有几个核心,唯一的扩展方式是选择大型服务器,或者使用 ECP 横向扩展。 现在,即使是基本的生产级服务器也具有多个处理器、几十个核心,并且最小内存为 128 或 256 GB,可能达到 TB。 对于大多数数据库安装,ECP 已被遗忘,我们现在可以在单台服务器上大幅提高应用事务处理速率。 #InterSystems 业务解决方案和架构 #性能 #系统管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 1 238
文章 姚 鑫 · 五月 10, 2021 阅读大约需 5 分钟 第四章 多维存储的SQL和对象使用(二) 第四章 多维存储的SQL和对象使用(二) 索引 持久化类可以定义一个或多个索引;其他数据结构用于提高操作(如排序或条件搜索)的效率。InterSystems SQL在执行查询时使用这些索引。InterSystems IRIS对象和SQL在执行INSERT、UPDATE和DELETE操作时自动维护索引内的正确值。 标准索引的存储结构 标准索引将一个或多个属性值的有序集与包含属性的对象的对象ID值相关联。 例如,假设我们定义了一个简单的持久化MyApp.Person类,该类具有两个文本属性和一个关于其Name属性的索引: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 77
文章 姚 鑫 · 五月 9, 2021 阅读大约需 6 分钟 第四章 多维存储的SQL和对象使用(一) 第四章 多维存储的SQL和对象使用(一) 本章介绍InterSystems IRIS®对象和SQL引擎如何利用多维存储(全局变量)来存储持久对象、关系表和索引。 尽管InterSystems IRIS对象和SQL引擎会自动提供和管理数据存储结构,但了解其工作原理的详细信息还是很有用的。 数据的对象视图和关系视图使用的存储结构是相同的。为简单起见,本章仅从对象角度介绍存储。 数据 每个使用%Storage.Persistent存储类(默认)的持久化类都可以使用多维存储(全局变量)的一个或多个节点在InterSystems IRIS数据库中存储其自身的实例。 每个持久化类都有一个存储定义,用于定义其属性如何存储在全局变量节点中。这个存储定义(称为“默认结构”)由类编译器自动管理。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 82
文章 姚 鑫 · 五月 8, 2021 阅读大约需 7 分钟 第三章 使用多维存储(全局变量)(四) 第三章 使用多维存储(全局变量)(四) 管理事务 InterSystems IRIS提供了使用全局变量实现完整事务处理所需的基本操作。 InterSystems IRIS对象和SQL自动利用这些特性。 如果直接将事务性数据写入全局变量,则可以使用这些操作。 事务命令是TSTART,它定义事务的开始; TCOMMIT,它提交当前事务; 和TROLLBACK,它将中止当前事务,并撤消自事务开始以来对全局变量所做的任何更改。 例如,下面的ObjectScript代码定义了事务的开始,设置了一些全局变量节点,然后根据ok的值提交或回滚事务: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 80
文章 姚 鑫 · 五月 7, 2021 阅读大约需 7 分钟 第三章 使用多维存储(全局变量)(三) 第三章 使用多维存储(全局变量)(三) 在全局变量中复制数据 若要将全局变量(全部或部分)的内容复制到另一个全局变量(或局部数组)中,请使用ObjectScript Merge命令。 下面的示例演示如何使用Merge命令将OldData全局变量的全部内容复制到NewData全局变量中: Merge ^NewData = ^OldData 如果合并命令的source参数有下标,则复制该节点及其后代中的所有数据。如果Destination参数有下标,则使用目标地址作为顶级节点复制数据。例如,以下代码: Merge ^NewData(1,2) = ^OldData(5,6,7) 将^OldData(5,6,7)及其下的所有数据复制到^NewData(1,2)。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 128
文章 姚 鑫 · 五月 6, 2021 阅读大约需 5 分钟 第三章 使用多维存储(全局变量)(二) 第三章 使用多维存储(全局变量)(二) 遍历全局变量中的数据 有许多方法可以遍历(迭代)存储在全局变量中的数据。 $ORDER(下一个/上一个)函数 ObjectScript $Order函数允许顺序访问全局中的每个节点。 $ORDER函数返回给定级别(下标编号)的下一个下标的值。例如,假设定义了以下全局设置: Set ^Data(1) = "" Set ^Data(1,1) = "" Set ^Data(1,2) = "" Set ^Data(2) = "" Set ^Data(2,1) = "" Set ^Data(2,2) = "" Set ^Data(5,1,2) = "" 要查找第一个第一级下标,我们可以使用: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 119
文章 姚 鑫 · 五月 5, 2021 阅读大约需 6 分钟 第三章 使用多维存储(全局变量)(一) 第三章 使用多维存储(全局变量)(一) 本章描述了使用多维存储(全局变量)可以执行的各种操作。 以全局变量存储数据 在全局节点中存储数据很简单:像对待任何其他变量一样对待全局变量。 区别在于对全局变量的操作是自动写入数据库的。 创建全局变量 创建新的全局变量不需要设置工作;只需将数据设置为全局变量即可隐式创建新的全局结构。可以创建全局变量(或全局变量下标)并通过单个操作将数据放入其中,也可以创建全局变量(或下标)并通过将其设置为空字符串将其保留为空。在ObjectScript中,这些操作是使用SET命令完成的。 下面的例子定义了一个名为Color(如果还不存在)的全局变量,并将值“Red”与之关联。 如果已经存在一个名为Color的全局变量,那么这些示例将其修改为包含新信息。 在ObjectScript中: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 72
文章 姚 鑫 · 五月 4, 2021 阅读大约需 7 分钟 第二章 全局变量结构(二) 第二章 全局变量结构(二) 全局变量物理结构 全局变量使用高度优化的结构存储在物理文件中。管理此数据结构的代码也针对运行InterSystems IRIS的每个平台进行了高度优化。这些优化确保全局操作具有高吞吐量(每单位时间的操作数)、高并发性(并发用户总数)、缓存的高效使用,并且不需要与性能相关的持续维护(例如频繁的重建、重新索引或压缩)。 用于存储全局变量的物理结构是完全封装的;应用程序不会以任何方式担心物理数据结构。 全局变量存储在磁盘上的一系列数据块中;每个块的大小(通常为8KB)是在创建物理数据库时确定的。为了提供对数据的高效访问,InterSystems IRIS维护了一种复杂的B树状结构,该结构使用一组指针块将相关数据块链接在一起。InterSystems IRIS维护一个缓冲池-经常引用的块的内存缓存-以降低从磁盘获取块的成本。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 116
文章 姚 鑫 · 五月 3, 2021 阅读大约需 6 分钟 第二章 全局变量结构(一) 第二章 全局变量结构(一) 本章描述全局变量的逻辑视图,并概述全局变量是如何在磁盘上物理存储的。 全局变量的逻辑结构 全局变量是存储在物理InterSystems IRIS®数据库中的命名多维数组。 在应用程序中,全局变量到物理数据库的映射基于当前名称空间——名称空间提供一个或多个物理数据库的逻辑统一视图。 全局命名约定和限制 全局名称指定其目标和用途。有两种类型的全局变量和一组单独的变量,称为“进程私有全局变量”: - 全局变量 - 这就是所谓的标准全局变量;通常,这些变量被简称为全局变量。它是驻留在当前命名空间中的永久性多维数组。 - 扩展全局引用-这是位于当前命名空间以外的命名空间中的全局引用。 - 进程私有全局变量-这是一个数组变量,只有创建它的进程才能访问。 全局变量的命名约定如下: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 86