文章 姚 鑫 · 七月 8, 2022 阅读大约需 2 分钟 第二十二章 安全自定义 Web 应用程序登录 第二十二章 安全自定义 Web 应用程序登录 除了推荐的 REST 应用程序支持之外,产品还支持两种类型的传统 Web 应用程序:CSP 和 Zen。在配置使用 CSP 和 Zen 的自定义登录页面时,遵循推荐的协议很重要。这些协议提供了更高的安全性,并最大限度地减少了升级到新产品或版本时的不兼容性。 关于创建自定义 CSP 登录页面 创建自定义 CSP 登录页面: #SQL #Caché 0 0 0 105
文章 姚 鑫 · 九月 11, 2021 阅读大约需 3 分钟 第十三章 SQL命令 CREATE ROLE 第十三章 SQL命令 CREATE ROLE 创建角色 大纲 CREATE ROLE role-name 参数 role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。 描述 CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。 #API #SQL #Caché 0 0 0 105
文章 Jingwei Wang · 六月 23, 2024 阅读大约需 8 分钟 用不到150 行代码创建 IRIS 功能齐全的现代后端应用程序 低代码挑战 想象一下那个场景。您正在 Widgets Direct 愉快地工作,这是互联网上首屈一指的小部件和小部件配件零售商。您的老板有一些毁灭性的消息,一些客户可能对他们的小部件不太满意,我们需要一个帮助台应用程序来跟踪这些投诉。为了让事情变得有趣,他希望代码占用非常小,并挑战您使用 InterSystems IRIS 以少于 150 行代码交付应用程序。这可能吗? 免责声明:本文记录了一个非常基本的应用程序的构建,为了简洁起见,省略了安全性和错误处理等细节。该应用程序仅供参考,不得用于任何生产应用。本文使用IRIS 2023.1作为数据平台,并非所描述的所有功能在早期版本中都可用 第 1 步 - 定义数据模型 我们首先定义一个新的干净的命名空间 - 带有代码和数据数据库。虽然所有内容都可以位于 1 个数据库中,但将它们拆分以便于数据刷新。 #Cube #JSON #ObjectScript #REST API #SQL #互操作性 #分析 #数据导入和导出 #管理门户 #InterSystems IRIS 0 0 0 104
文章 姚 鑫 · 五月 24, 2021 阅读大约需 7 分钟 第五章 向邮件添加附件 第五章 向邮件添加附件 向邮件添加附件 可以将附件添加到电子邮件或消息部分(具体地说,是添加到%Net.MailMessagePart或%Net.MailMessage的实例)。要执行此操作,请使用以下方法: 这些方法中的每一种都会将附件添加到原始邮件(或邮件部分)的Parts数组中,并自动将IsMultiPart属性设置为1。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 104
文章 姚 鑫 · 九月 30, 2021 阅读大约需 3 分钟 第三十一章 SQL命令 DROP DATABASE 第三十一章 SQL命令 DROP DATABASE 删除数据库(命名空间)。 大纲 DROP DATABASE dbname [RETAIN_FILES] 参数 dbname - 要删除的数据库(命名空间)的名称。 RETAIN_FILES - 可选-如果指定,则不会删除物理数据库文件(IRIS.DAT文件)。默认情况下,删除.dat文件以及命名空间和其他数据库实体。 描述 DROP DATABASE命令删除命名空间及其关联的数据库。 指定的dbname是包含相应数据库文件的命名空间和目录的名称。指定dbname作为标识符。命名空间名称不区分大小写。如果指定的DBNAME命名空间不存在, IRIS将发出SQLCODE-340错误。 #SQL #Caché 0 0 0 103
文章 姚 鑫 · 七月 4, 2022 阅读大约需 7 分钟 第十八章 使用工作队列管理器(一) 第十八章 使用工作队列管理器(一) 工作队列管理器是的一项功能,使能够通过以编程方式将工作分配给多个并发进程来提高性能。在引入工作队列管理器之前,可能已经使用 JOB 命令在应用程序中启动多个进程并使用自定义代码管理这些进程(以及任何导致的故障)。工作队列管理器提供了一个高效且直接的 API,使能够卸载流程管理。 代码在多个地方内部使用工作队列管理器。可以将它用于自己的需求,如以下部分中的高级描述。 背景 计算机硬件开发的最新创新趋向于高性能、多处理器或多核架构。与此同时,内存和网络设备的速度也只是慢慢地提高了。 开发了工作队列管理器以响应这些趋势并根据以下原则: #SQL #Caché 0 0 0 103
文章 姚 鑫 · 三月 22, 2022 阅读大约需 2 分钟 第八十九章 SQL函数 LOG 第八十九章 SQL函数 LOG 返回给定数值表达式的自然对数的标量数值函数。 大纲 {fn LOG(expression)} 参数 expression - 数值表达式。 LOG 返回 NUMERIC 或 DOUBLE 数据类型。如果表达式为 DOUBLE 数据类型,则 LOG 返回 DOUBLE;否则,它返回 NUMERIC。 描述 LOG 返回表达式的自然对数(以 e 为底)。 LOG 返回一个精度为 21、小数位数为 18 的值。 LOG 只能用作 ODBC 标量函数(使用大括号语法)。 示例 以下示例返回整数的自然对数: #SQL #Caché 0 0 0 103
文章 姚 鑫 · 四月 24, 2022 阅读大约需 2 分钟 第122章 SQL函数 RTRIM 第122章 SQL函数 RTRIM 字符串函数,它返回一个删除了尾随空格的字符串。 #SQL #Caché 0 0 0 102
文章 姚 鑫 · 十月 18, 2021 阅读大约需 8 分钟 第四十九章 SQL命令 GROUP BY 第四十九章 SQL命令 GROUP BY SELECT子句,它根据一个或多个列对查询的结果行进行分组。 大纲 SELECT ... GROUP BY field {,field2} 参数 field - 从其中检索数据的一个或多个字段。 单个字段名或以逗号分隔的字段名列表。 描述 GROUP BY是SELECT命令的一个子句。 可选的GROUP BY子句出现在FROM子句和可选的WHERE子句之后,可选的HAVING和ORDER BY子句之前。 #SQL #Caché 0 0 0 102
文章 姚 鑫 · 五月 24, 2022 阅读大约需 1 分钟 第152章 SQL函数 $TSQL_NEWID 第152章 SQL函数 $TSQL_NEWID 大纲 $TSQL_NEWID() 描述 $TSQL_NEWID 返回一个全局唯一 ID (GUID)。 GUID 用于在偶尔连接的系统上同步数据库。 GUID 是一个 36 个字符的字符串,由 32 个十六进制数字组成,由连字符分成五组。它的数据类型是 %Library.UniqueIdentifier。 在 SQL 中提供了 $TSQL_NEWID 以支持Transact-SQL (TSQL)。对应的 TSQL 函数是 NEWID。 $TSQL_NEWID 函数不接受任何参数。请注意,参数括号是必需的。 #SQL #Caché 0 0 0 102
文章 姚 鑫 · 十一月 6, 2021 阅读大约需 4 分钟 第六十八章 SQL命令 SAVEPOINT 第六十八章 SQL命令 SAVEPOINT 在事务中标记一个点。 大纲 SAVEPOINT pointname 参数 pointname - 保存点的名称,指定为标识符。 描述 SAVEPOINT语句标记事务中的一个点。建立保存点使能够执行事务回滚到保存点,撤消在此期间完成的所有工作并释放在此期间获得的所有锁。在长期运行的事务或具有内部控制结构的事务中,通常希望能够回滚事务的一部分,而不撤消在事务期间提交的所有工作。 #SQL #Caché 0 0 0 102
文章 姚 鑫 · 五月 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 102
文章 姚 鑫 · 十一月 10, 2021 阅读大约需 6 分钟 第七十二章 SQL命令 SELECT(四) 第七十二章 SQL命令 SELECT(四) WHERE子句 WHERE子句限定或取消查询选择中的特定行。 符合条件的行是那些条件表达式为真的行。 条件表达式是逻辑测试(谓词)的列表,可以通过AND和OR逻辑操作符链接这些测试(谓词)。 这些谓词可以使用NOT一元逻辑操作符进行反转。 SQL谓词可分为以下几类: - Comparison 谓词 - BETWEEN 谓词 - LIKE 谓词 - NULL 谓词 - IN and %INLIST 谓词 - EXISTS 谓词 - FOR SOME 谓词 - FOR SOME %ELEMENT 谓词 #SQL #Caché 0 0 0 102
文章 姚 鑫 · 六月 8, 2022 阅读大约需 4 分钟 第三章 数据类型(二) 第三章 数据类型(二) SQL 系统数据类型映射 上表中为 DDL 和 IRIS 数据类型表达式显示的语法是为 SQL.SystemDataTypes 配置的默认映射。对于提供的系统数据类型和用户数据类型,有单独的映射表可用。 要查看和修改当前数据类型映射,请转到管理门户,选择系统管理、配置、SQL 和对象设置、系统 DDL 映射。 了解 DDL 数据类型映射 将数据类型从 DDL 映射到 IRIS 时,常规参数和函数参数遵循以下规则: 常规参数 - 这些在 DDL 数据类型和 IRIS 数据类型中以 %# 格式标识。例如: VARCHAR(%1) 映射到: %String(MAXLEN=%1) 因此,DDL 数据类型为: VARCHAR(10) 映射到: #SQL #Caché 0 0 0 102
文章 姚 鑫 · 五月 3, 2021 阅读大约需 6 分钟 第二章 全局变量结构(一) 第二章 全局变量结构(一) 本章描述全局变量的逻辑视图,并概述全局变量是如何在磁盘上物理存储的。 全局变量的逻辑结构 全局变量是存储在物理InterSystems IRIS®数据库中的命名多维数组。 在应用程序中,全局变量到物理数据库的映射基于当前名称空间——名称空间提供一个或多个物理数据库的逻辑统一视图。 全局命名约定和限制 全局名称指定其目标和用途。有两种类型的全局变量和一组单独的变量,称为“进程私有全局变量”: - 全局变量 - 这就是所谓的标准全局变量;通常,这些变量被简称为全局变量。它是驻留在当前命名空间中的永久性多维数组。 - 扩展全局引用-这是位于当前命名空间以外的命名空间中的全局引用。 - 进程私有全局变量-这是一个数组变量,只有创建它的进程才能访问。 全局变量的命名约定如下: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 101
文章 姚 鑫 · 二月 8, 2022 阅读大约需 3 分钟 第四十八章 SQL函数 DAYOFMONTH 第四十八章 SQL函数 DAYOFMONTH 返回日期表达式的月份日期的日期函数。 大纲 {fn DAYOFMONTH(date-expression)} 参数 date-expression - 要从中返回月值日期的日期或时间戳表达式。作为列名、另一个标量函数的结果或日期或时间戳文字的表达式。 描述 DAYOFMONTH以1到31之间的整数形式返回每月的第几天。日期表达式可以是日期整数、$HOROLOG或$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。 日期表达式时间戳可以是数据类型%Library.PosiTime(编码的64位有符号整数)或数据类型%Library.TimeStamp(yyyy-mm-dd hh:mm:ss.fff)。 #SQL #Caché 0 0 0 101
文章 姚 鑫 · 六月 17, 2022 阅读大约需 7 分钟 第三章 锁定和并发控制(三) 第三章 锁定和并发控制(三) 升级锁 使用升级锁来管理大量锁。当锁定数组的节点时,它们是相关的,特别是当将多个节点锁定在同一下标级别时。 当给定进程在同一数组中的给定下标级别创建了超过特定数量(默认为 1000)的升级锁时, 将删除所有单独的锁名称并用新锁替换它们。新锁位于父级,这意味着数组的整个分支被隐式锁定。示例(如下所示)演示了这一点。 应用程序应在合适的情况下尽快释放特定子节点的锁(与非升级锁完全相同)。当释放锁时, 会减少相应的锁计数。当的应用程序移除足够多的锁时,会移除父节点上的锁。第二小节显示了一个示例。 锁升级示例 假设有 1000 个^MyGlobal("sales","EU",salesdate) 形式的锁,其中 salesdate 表示日期。锁表可能如下所示: #SQL #Caché 0 0 0 101
文章 姚 鑫 · 五月 21, 2022 阅读大约需 4 分钟 第149章 SQL函数 TRIM 第149章 SQL函数 TRIM 字符串函数,它返回删除了指定的前导和/或尾随字符的字符串。 #SQL #Caché 0 0 0 100
文章 姚 鑫 · 一月 5, 2022 阅读大约需 3 分钟 第十五章 SQL窗口函数概述(二) 第十五章 SQL窗口函数概述(二) ROW子句 ROW子句可以与FIRST_VALUE(字段)和SUM(字段)窗口函数一起使用。 可以为其他windows函数指定它,但不执行任何操作(有或没有ROWS子句的结果相同)。 ROWS子句有两种语法形式: ROWS framestart ROWS BETWEEN framestart AND frameend Framestart和frameend有五个可能的值: #SQL #Caché 0 0 0 100
文章 Hao Ma · 三月 21, 2024 阅读大约需 1 分钟 IRIS/Caché SQL优化经验分享 - Bitmap Extent Bitmap索引是指对某个,或者某几个字段建立的bit map(位图映射)。如果是对整个表的记录,也就是表的%ID做位图映射,得到的特殊的bitmap索引在IRIS/Caché里被称为Bitmap Extent。 建立Bitmap Extent索引的目的就是加快COUNT(*)的执行。提高了多少呢? 下面两个显示的是最简单的全表查询花费的时间: 不使用Bitmap Extent : 1.3810s 使用Bitmap Extent: 0.0038 相差有几百倍。 #SQL #新手 #InterSystems IRIS 0 0 0 100
文章 姚 鑫 · 十月 22, 2021 阅读大约需 6 分钟 第五十三章 SQL命令 INSERT(二) 第五十三章 SQL命令 INSERT(二) 流数据 可以将以下类型的数据值插入到流字段中: #SQL #Caché 0 0 0 99
文章 姚 鑫 · 十一月 25, 2021 阅读大约需 4 分钟 第八十七章 SQL命令 VALUES 第八十七章 SQL命令 VALUES 指定字段中使用的数据值的INSERT/UPDATE子句。 大纲 (field1{,fieldn}) VALUES (value1{,valuen}) 参数 field - 字段名或以逗号分隔的字段名列表。 value - 值或以逗号分隔的值列表。 每个值被赋给相应的字段。 描述 VALUES子句用于INSERT、UPDATE或INSERT or UPDATE语句中,以指定要插入到字段中的数据值。 通常: #SQL #Caché 0 0 0 99
文章 姚 鑫 · 六月 20, 2022 阅读大约需 4 分钟 第五章 操作位和位串 第五章 操作位和位串 有时可能希望在基于数据平台的应用程序中存储一系列相关的布尔值。可以创建许多布尔变量,也可以将它们存储在数组或列表中。或者可以使用称为“位串”的概念,它可以定义为位序列,首先呈现最低有效位。位串允许您以非常有效的方式存储此类数据,无论是在存储空间还是处理速度方面。 位串可以以两种方式之一存储,作为压缩字符串或整数。如果在没有上下文的情况下听到术语“位串”,则表示位序列存储为压缩字符串。本文向介绍了这两种类型的位串,然后介绍了一些可用于操作它们的技术。 将位序列存储为位串 存储位序列的最常见方式是在位串中,这是一种特殊的压缩字符串。除了节省存储空间外,还可以使用 ObjectScript 系统函数有效地操作位串。 这样的系统函数是 $factor,它将整数转换为位串。我们可以通过执行以下语句将整数 11744 转换为位串: set bitstring = $factor(11744) 要查看位串内容的表示,可以使用 zwrite 命令: #SQL #Caché 0 0 0 99
文章 姚 鑫 · 六月 22, 2022 阅读大约需 4 分钟 第七章 操作位和位串(三) 第七章 操作位和位串(三) 操作位串 要创建新的位串,请使用 $bit 函数将所需位设置为 1: kill bitstring set $bit(bitstring, 3) = 1 set $bit(bitstring, 6) = 1 set $bit(bitstring, 11) = 1 使用 $bit 将现有位串中的位设置为 1: set $bit(bitstring, 5) = 1 使用 $bit 将现有位串中的位设置为 0: set $bit(bitstring, 5) = 0 由于位串中的第一位是位 1,因此尝试设置位 0 会返回错误: #SQL #Caché 0 0 0 99
文章 姚 鑫 · 五月 29, 2022 阅读大约需 1 分钟 第156章 SQL函数 USER 第156章 SQL函数 USER 返回当前用户的用户名的函数。 大纲 USER {fn USER} {fn USER()} 描述 USER 不接受任何参数并返回当前用户的用户名(也称为授权 ID)。通用函数不允许括号; ODBC 标量函数可以指定或省略空括号。 用户名是使用 CREATE USER 命令定义的。 USER 的典型用途是在 SELECT 语句选择列表或查询的 WHERE 子句中。在设计报告时,USER 可用于打印正在为其生成报告的当前用户。 示例 以下示例返回当前用户名: #SQL #Caché 0 0 0 98
文章 姚 鑫 · 十一月 11, 2021 阅读大约需 8 分钟 第七十三章 SQL命令 SET OPTION 第七十三章 SQL命令 SET OPTION 设置执行选项。 大纲 SET OPTION option_keyword = value 描述 SET OPTION语句用于设置执行选项,如编译模式、SQL配置设置和控制日期、时间和数字约定的区域设置。 每个set option语句只能设置一个关键字选项。 SET OPTION支持以下选项: #SQL #Caché 0 0 0 98
文章 姚 鑫 · 四月 26, 2021 阅读大约需 9 分钟 第六章 SQL性能分析工具包 第六章 SQL性能分析工具包 本章介绍可用于主动分析特定SQL语句的分析工具。这些工具收集有关这些SQL语句执行的详细信息。使用这些信息,开发人员可以采取措施提高低效SQL语句的性能。 根据请求的详细程度,此活动分析可能会显著增加服务器上的负载。因此,SQL性能分析工具包旨在进行协调一致的代码分析工作。它不是用来连续监视执行代码的。 分析工具界面 SQL性能分析工具包为开发人员和支持专家提供了分析特定SQL语句或语句组的能力。通过在执行特定SQL语句期间使用这些工具,它们可以收集详细信息,这些信息可用于单独或跨活动工作负载分析有问题的语句。 要记录的细节级别是可配置的,最细粒度的设置在模块级别收集信息,为语句的查询计划中的不同“步骤”提供信息。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 98
文章 姚 鑫 · 一月 19, 2022 阅读大约需 3 分钟 第二十八章 SQL函数 CHAR_LENGTH 第二十八章 SQL函数 CHAR_LENGTH 返回表达式中的字符数的函数。 大纲 CHAR_LENGTH(expression) 参数 expression - 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHAR或VARCHAR)、数字或数据流。 CHAR_LENGTH返回整数数据类型。 描述 CHAR_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。 #SQL #Caché 0 0 0 98
文章 姚 鑫 · 六月 15, 2022 阅读大约需 5 分钟 第一章 锁定和并发控制制(一) 第一章 锁定和并发控制(一) 任何多进程系统的一个重要特征是并发控制,即防止不同进程同时更改特定数据元素的能力,从而导致损坏。 提供了一个锁管理系统。本文提供了一个概述。 此外,%Persistent 类提供了一种控制对象并发访问的方法,即 %OpenId() 的并发参数和该类的其他方法。这些方法最终使用本文讨论的 ObjectScript LOCK 命令。所有持久对象都继承这些方法。同样,系统会自动对 INSERT、UPDATE 和 DELETE 操作执行锁定(除非指定 %NOLOCK 关键字)。 %Persistent 类还提供方法 %GetLock()、%ReleaseLock()、%LockId()、%UnlockId()、%LockExtent() 和 %UnlockExtent()。 #SQL #Caché 0 0 0 97
文章 姚 鑫 · 四月 3, 2021 阅读大约需 12 分钟 第十五章 使用管理门户SQL接口(二) 第十五章 使用管理门户SQL接口(二) 过滤模式内容 Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容 1. 通过单击SQL interface页面顶部的Switch选项,指定希望使用的名称空间。 这将显示可用名称空间的列表,可以从中进行选择。 2. 应用筛选器或从模式下拉列表中选择模式。 可以使用Filter字段通过输入搜索模式来筛选列表。 可以在一个模式或多个模式中筛选模式,或筛选表/视图/过程名(项)。 搜索模式由模式名、点(.)和项目名组成——每个名称由文字和通配符的某种组合组成。字面值不区分大小写。 通配符是: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 97