文章
· 三月 28, 2021 阅读大约需 7 分钟
第十三章 使用动态SQL(六)

第十三章 使用动态SQL(六)

%ObjectSelectMode = 1 Swizzling字段名称属性

下面的示例使用%ObjectSelectMode = 1进行准备,当使用字段名称属性返回值时,其类型类别为可Swizzle类型的字段(持久性类,序列类或流类)将自动发生Swizzle。转换字段值的结果是相应的对象参考(oref)。使用%Get()%GetData()方法访问字段时,InterSystems IRIS不会执行此筛选操作。在此示例中,rset.Home处于Swizzle状态,而引用同一字段的rset.%GetData(2)处于not swizzled状态:

0 0
0 129
文章
· 四月 15, 2021 阅读大约需 10 分钟
第二章 定义和构建索引(三)

#

第二章 定义和构建索引(三)

# 位图索引

位图索引是一种特殊类型的索引,它使用一系列位串来表示与给定索引数据值相对应的一组ID值。

位图索引具有以下重要功能:

  • 位图是高度压缩的:位图索引可以比标准索引小得多。这大大减少了磁盘和缓存的使用量。
  • 位图操作针对事务处理进行了优化:与使用标准索引相比,可以在表中使用位图索引,而不会降低性能。
  • 位图上的逻辑操作(countingANDOR)经过优化以获得高性能。
  • SQL引擎包括许多可以利用位图索引的特殊优化。

位图索引的创建取决于表的唯一标识字段的性质:

0 0
0 88
文章
· 五月 2, 2021 阅读大约需 5 分钟
第一章 简介global

第一章 简介global

InterSystems IRIS®的核心功能之一是其多维存储引擎。此功能允许应用程序以紧凑、高效的多维稀疏数组存储数据。这些数组称为全局数组。

本章介绍:
- 什么是全局变量(globals ),以及可以对其执行的操作。
- 全局变量的逻辑和物理结构,包括在分布式数据库体系结构中使用全局变量。
- 如何使用全局变量在应用程序中存储和检索数据。
- 如何使用全局变量。

特点

全局变量提供了一种在持久的多维数组中存储数据的易于使用的方法。

例如,可以使用名为^Settings的全局变量将值“Red”与键“Color”相关联:

SET ^Settings("Color")="Red"

可以利用全局变量的多维特性来定义更复杂的结构:

0 0
0 183
文章
· 五月 15, 2021 阅读大约需 4 分钟
第一章 单元测试概述

第一章 单元测试概述

本教程的第一部分概述了单元测试。完成本教程的这一部分后,将能够:
- 定义单元测试并区分单元测试和集成测试
- 列出单元测试的几个好处
- 描述InterSystems IRIS %UnitTest包和xUnit测试框架之间的相似性。
- 列出软件开发中测试优先方法经常声称的几个好处。

什么是单元测试?

单元测试是对单个代码模块的正确性的测试,例如,方法或类的测试。通常,开发人员在开发代码时为其代码创建单元测试。典型的单元测试是一种执行方法的方法,该方法测试并验证该方法是否为给定的一组输入生成了正确的输出。

单元测试不同于集成测试。集成测试验证了一组代码模块交互的正确性。单元测试仅单独验证代码模块的正确性。一组代码模块的集成测试可能会失败,即使每个模块都通过了单元测试。

为什么要进行单元测试?

单元测试提供了许多好处,包括:

0 0
0 72
文章
· 九月 15, 2021 阅读大约需 10 分钟
第十六章 SQL命令 CREATE TABLE(三)

第十六章 SQL命令 CREATE TABLE(三)

字段数据约束

数据约束控制字段允许使用的值、字段的默认值以及数据值使用的排序规则类型。所有这些数据约束都是可选的。可以按任何顺序指定多个数据约束,并以空格分隔。

NULL和NOT NULL

NOT NULL数据约束关键字指定该字段不接受空值;换句话说,每条记录都必须为该字段指定一个值。NULL和空字符串('') IRIS中是不同的值。可以在接受字符串的字段中输入空字符串,即使该字段定义了NOT NULL限制也是如此。不能在数值字段中输入空字符串。

NULL数据约束关键字显式指定此字段可以接受空值;这是字段的默认定义。

0 0
0 251
文章
· 十二月 18, 2021 阅读大约需 5 分钟
第十九章 SQL谓词 %STARTSWITH(一)

第十九章 SQL谓词 %STARTSWITH(一)

用指定初始字符的子字符串匹配值。

大纲

scalar-expression %STARTSWITH substring

参数

  • scalar-expression - 将其值与子字符串进行比较的标量表达式(最常见的是数据列)。
  • substring - 解析为包含与标量表达式中的值匹配的第一个或多个字符的字符串或数字的表达式。

描述

%STARTSWITH谓词允许选择以子字符串中指定的字符开头的数据值。
如果substring不匹配任何标量表达式值,%STARTSWITH返回空字符串。
无论显示模式如何,这个匹配总是在逻辑(内部存储)数据值上执行。

下面的示例选择所有以“M”开头的名称:

0 0
0 142
文章
· 一月 5, 2022 阅读大约需 3 分钟
第十五章 SQL窗口函数概述(二)

第十五章 SQL窗口函数概述(二)

ROW子句

ROW子句可以与FIRST_VALUE(字段)和SUM(字段)窗口函数一起使用。
可以为其他windows函数指定它,但不执行任何操作(有或没有ROWS子句的结果相同)。

ROWS子句有两种语法形式:

ROWS framestart
ROWS BETWEEN framestart AND frameend

Framestartframeend有五个可能的值:

0 0
0 77
文章
· 一月 23, 2022 阅读大约需 1 分钟
第三十二章 SQL函数 COS

第三十二章 SQL函数 COS

标量数值函数,返回一个角的余弦值(以弧度为单位)。

大纲

{fn COS(numeric-expression)}

参数

  • numeric-expression - 数值表达式。
    这是一个用弧度表示的角。

COS返回NUMERICDOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, COS返回DOUBLE;
否则,返回NUMERIC

0 0
0 35
文章
· 二月 7, 2022 阅读大约需 2 分钟
第四十七章 SQL函数 DAYNAME

第四十七章 SQL函数 DAYNAME

Date函数,它返回日期表达式的星期几的名称。

大纲

{fn DAYNAME(date-expression)}

参数

  • date-expression - 计算结果为日期整数、ODBC日期或时间戳的表达式。该表达式可以是列名、另一个标量函数的结果或日期或时间戳文字。

描述

DAYNAME返回与指定日期对应的日期的名称。返回值为字符串,最大长度为15。默认返回的日期名称为:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

要更改这些默认日期名称值,请使用带有WEEKDAY_NAME选项的SET OPTION命令。

0 0
0 39
文章
· 二月 21, 2022 阅读大约需 3 分钟
第六十一章 SQL函数 GREATEST

第六十一章 SQL函数 GREATEST

从一系列表达式中返回最大值的函数。

大纲

GREATEST(expression,expression[,...])

参数

  • expression - 解析为数字或字符串的表达式。
    对这些表达式的值进行比较。
    表达式可以是字段名、文字、算术表达式、主机变量或对象引用。
    最多可以列出140个逗号分隔的表达式。

描述

GREATEST返回逗号分隔的一系列表达式中的最大值。
表达式按从左到右的顺序求值。
如果只提供一个表达式,则GREATEST返回该值。
如果任何表达式为NULL,则GREATEST返回NULL

0 0
0 69
文章
· 三月 9, 2022 阅读大约需 1 分钟
第七十六章 SQL函数 LEN

第七十六章 SQL函数 LEN

返回字符串表达式中字符数的字符串函数。

大纲

LEN(string-expression)

参数

  • string-expression - 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。

LEN 返回 INTEGER 数据类型。

描述

注意:LEN 函数是 LENGTH 函数的别名。

SELECT len("yaoxin")  

6
0 0
0 70
文章
· 五月 22, 2022 阅读大约需 5 分钟
第150章 SQL函数 TRUNCATE

第150章 SQL函数 TRUNCATE

标量数值函数,按指定位数截断一个数。

大纲

{fn TRUNCATE(numeric-expr,scale)}

参数

  • numeric-expr - 要截断的数字。数字或数字表达式。
  • scale - 计算结果为一个整数的表达式,该整数指定要截断的位数,从小数点开始计算。可以是零、正整数或负整数。如果比例是小数,会将其舍入为最接近的整数。

Truncate返回NUMERICDOUBLE数据类型。如果NUMERIC-EXPR的数据类型为DOUBLE,则TRUNCATE返回DOUBLE;否则返回NUMERIC

0 0
0 188
文章
· 六月 10, 2022 阅读大约需 8 分钟
第五章 数据类型(四)

第五章 数据类型(四)

Strings

%Library.String 数据类型支持的最大字符串长度为 3,641,144 个字符。通常,极长的字符串应分配为 %Stream.GlobalCharacter 数据类型之一。

因为 IRIS 支持 xDBC 协议 50 和更高版本,所以没有强制执行 ODBC 或 JDBC 字符串长度限制。如果 IRIS 实例和 ODBC 驱动程序支持不同的协议,则使用两个协议中较低的一个。实际使用的协议记录在 ODBC 日志中。

请注意,默认情况下 IRIS 建立系统范围的 ODBC VARCHAR 最大长度为 4096;此 ODBC 最大长度是可配置的。

0 0
0 124
文章
· 六月 27, 2022 阅读大约需 7 分钟
第十二章 信号(二)- 生产者消费者示例

第十二章 信号(二)- 生产者消费者示例

下面是一系列使用信号量实现生产者/消费者场景的类。 “主”进程初始化信号量并等待用户指示活动已全部完成。生产者在循环中随机增加一个信号量值,更新之间的延迟可变。消费者尝试在随机时间从信号量中删除随机数量,也是在循环中。该示例由 5 个类组成:
- Main – 初始化环境并等待信号量上的活动完成的类。
- Counter – 实现信号量本身的类。它记录它的创建以及由于信号量在等待列表中而发生的任何回调。
- Producer – 一个类,其主要方法增加信号量值。增量是一个随机选择的小整数。完成增量后,该方法会在下一个增量之前延迟一小段随机数秒。
- Consumer 消费者——这是对生产者的补充。此类的主要方法尝试将信号量减少一个随机选择的小整数。它将递减请求添加到其等待列表中,等待时间也是随机选择的秒数。
- Util - 这个类有几个方法被示例的其他类使用。几种方法解决了为所有活动维护公共日志的问题;其他人解决了多个消费者和多个生产者的命名问题。

0 0
0 66
文章
· 七月 14, 2022 阅读大约需 13 分钟
InterSystems SQL 的使用 - 第三部分 - 表

创建表

可以通过以下方式定义表:

  1. 通过DDL定义表
    • 使用任意数据库管理工具执行DDL(使用ODBC,JDBC连接)

    MyApp.Person表可以使用DDL CREATE TABLE语句来定义,指定SQL schema.table名称。成功执行这个SQL语句会生成一个相应的持久化类,包名MyApp,类名Person。当使用DDL命令定义一个表时,你不需要指定USEEXTENTSET或创建一个位图范围索引。InterSystems SQL会自动应用这些设置,并将它们包含在预测的持久化类中。默认情况下,CREATE TABLE在相应的类定义中指定了Final类的关键字,表示它不能有子类。

0 0
0 280
文章
· 二月 13, 2023 阅读大约需 3 分钟
何时使用列存储

在 InterSystems IRIS 2022.2 中,我们引入了列存储作为持久化 IRIS SQL 表的新选项,可以将您的分析查询性能提高一个数量级。该功能在 2022.2 和 2022.3 中标记为实验性,但将在即将发布的 2023.1 版本中“升级”为完全支持的生产能力。

产品文档和这个介绍性视频已经描述了行存储(仍然是 IRIS 上的默认设置并在我们的整个客户群中使用)与列表存储之间的区别,并提供了有关为您的用例选择合适的存储布局的高级指导。在本文中,我们将详细阐述这个主题,并根据行业实践建模原则、内部测试和抢先体验计划参与者的反馈分享一些建议。

0 0
0 98
文章
· 四月 10 阅读大约需 7 分钟
IRIS/Caché SQL优化经验分享 - 查询计划(Query Plan)

为什么要读Query Plan, 在线文档中有句话是这么说的:

While the SQL compiler tries to make the most efficient use of data as specified by the query, sometimes the author of the query knows more about some aspect of the stored data than is evident to the compiler. In this case, the author can make use of the query plan to modify the original query to provide more information or more guidance to the query compiler.

翻译一下是这样:系统给你的查询计划并不总是最好的,如果您能对查询计划,可以人工做更精细的优化。

0 0
0 73
文章
· 三月 12, 2021 阅读大约需 5 分钟
第九章 SQL查询数据库(一)

第九章 SQL查询数据库

查询类型

查询是执行数据检索并生成结果集的语句。查询可以包含以下任意项:
- 一个简单的SELECT语句,用于访问指定表或视图中的数据。
- 具有JOIN语法的SELECT语句,用于访问多个表或视图中的数据。
- 合并多个SELECT语句的结果的UNION语句。
- 使用SELECT语句为封闭的SELECT查询提供单个数据项的子查询。
- 在嵌入式SQL中,这是一个使用SQL游标通过FETCH语句访问多行数据的SELECT语句。

使用SELECT语句

SELECT语句从一个或多个表或视图中选择一行或多行数据。下面的示例显示了一个简单的SELECT

0 0
0 243
文章
· 三月 29, 2021 阅读大约需 16 分钟
第十三章 使用动态SQL(七)

第十三章 使用动态SQL(七)

SQL元数据

动态SQL提供以下类型的元数据:
- 在“准备”之后,描述查询类型的元数据。
- 在“准备”之后,描述查询中选择项的元数据(“列”和“扩展列信息”)。
- 在准备之后,描述查询参数的元数据:参数,:var参数和常量。 (语句参数,形式参数和对象)
- 执行之后,描述查询结果集的元数据。在执行Prepare操作(%Prepare()%PrepareClassQuery()%ExecDirect())之后,可以使用%SQL.StatementMetadata属性值。
- 可以直接为最新的%Prepare()返回%SQL.Statement元数据属性。
- 可以返回包含%SQL.StatementMetadata属性的oref的%SQL.Statement%Metadata属性。这使可以返回多个准备操作的元数据。

0 0
0 184
文章
· 四月 16, 2021 阅读大约需 12 分钟
第二章 定义和构建索引(四)

第二章 定义和构建索引(四)

位片索引

当数字数据字段用于某些数值运算时,位片索引用于该字段。位片索引将每个数值数据值表示为二进制位串。位片索引不是使用布尔标志来索引数值数据值(如在位图索引中那样),而是以二进制值表示每个值,并为二进制值中的每个数字创建一个位图,以记录哪些行的该二进制数字具有1。这是一种高度专门化的索引类型,可以显著提高以下操作的性能:

  • SUMCOUNTAVG Aggregate计算。(位片索引不用于COUNT(*)计算。)。位片索引不用于其他聚合函数。
  • 指定的字段 TOP n ... ORDER BY field
  • 在范围条件运算中指定的字段,WHERE field > nWHERE field BETWEEN lownum AND highnum

SQL优化器确定是否应该使用定义的位片索引。通常,优化器仅在处理大量(数千)行时才使用位片索引。

0 0
0 94