(ECP) Caché 出色的可用性和扩展特性之一是企业缓存协议 (ECP)。 在应用程序开发过程中,如对使用 ECP 的分布式处理加以考虑,可以横向扩展 Caché 应用程序的架构。 应用程序处理可以调整为非常高的速率,处理能力从单个应用程序服务器扩展到最多 255 个应用程序服务器,并且不需要任何应用程序更改。

在我参与的 TrakCare 部署中,ECP 已广泛使用多年。 十年前,主要供应商之一的一台“大型”x86 服务器可能总共只有八个核心。 对于大型部署来说,ECP 是横向扩展商业服务器处理能力的方式,不适合单台昂贵的大型企业服务器。 即使是高核心数的企业服务器也有限制,因此 ECP 也用于扩展这些服务器上的部署。

如今,大多数的新 TrakCare 部署或升级到当前硬件不需要 ECP 即可扩展。 目前的双插槽 x86 生产服务器可以拥有数十个核心和巨大容量的内存。 我们看到,在最近的 Caché 版本中,TrakCare 以及许多其他 Caché 应用程序具有可预测的线性扩展能力,能够随着单台服务器中 CPU 核心数量和内存的增加而支持逐渐增多的用户和事务。 在现场,我看到大多数的新部署都是虚拟化的,即使如此,虚拟机也可以根据需要扩展到主机服务器的规模。 如果资源需求超过单个物理主机可以提供的资源,则使用 ECP 进行横向扩展。

0 0
0 208
文章
· 六月 13, 2021 阅读大约需 6 分钟
第六章 控制名称空间的使用

第六章 控制名称空间的使用

控制名称空间的使用

如将对象投射到XML中所述,可以将类分配给名称空间,以便相应的XML元素属于该名称空间,还可以控制类的属性是否也属于该名称空间。

将类中的对象导出为XML时,%XML.Write提供其他选项,例如指定元素是否为其父级的本地元素。本节包括以下主题:

  • 默认情况下,%XML.Writer如何处理命名空间
  • 如何指定本地元素是否合格
  • 如何指定元素是否为其父元素的本地元素
  • 如何指定属性是否合格
  • 命名空间分配方式的摘要

注意:在InterSystems IRIS XML支持中,可以按类指定名称空间。通常,每个类都有自己的命名空间声明;但是,通常只需要一个或少量的命名空间。还可以在逐个类的基础上指定相关信息(而不是以某种全局方式)。这包括控制元素是否为其父元素的本地元素以及子元素是否合格的设置。为简单起见,建议使用一致的方法。

0 0
0 98
文章
· 六月 25, 2021 阅读大约需 10 分钟
第十八章 签署XML文档

第十八章 签署XML文档

本章介绍如何向XML文档添加数字签名。

关于数字签名文档

数字签名的XML文档包括一个或多个<Signature>元素,每个元素都是数字签名。
每个<Signature>元素对文档中的特定元素进行如下签名:

0 0
0 151
文章
· 七月 18, 2021 阅读大约需 4 分钟
第七章 将文件内容复制到另外文件

第七章 将文件内容复制到另外文件

示例

本例显示了一个使用本文前面介绍的几个%Library.File方法的样例类。

在示例类Demo.FileDemo中,ProcessFile()方法接受输入文件和输出文件,并调用SetUpInputFile()SetUpOutputFile()打开文件,一个用于读取,另一个用于写入。然后,它逐行读取输入文件,并调用ProcessLine()对每行的内容执行一个或多个替换,将每行的新内容写入输出文件。

0 0
0 113
文章
· 八月 12, 2021 阅读大约需 3 分钟
属性关键字Aliases,Calculated,Cardinality,ClientName

第九十三章 属性关键字 - Aliases

指定此属性的其他名称,以便通过对象访问使用。

用法

要为属性指定其他名称,请使用以下语法:

Property name As classname [ Aliases=othernames ]; 

其中othernames是用逗号分隔的有效属性名列表,用大括号括起来。

详解

如果指定别名关键字,编译器会创建一个或多个给定的别名,这些别名指向原始属性所指向的同一基础数据。例如,重新定义Sample.PersonName属性,如下所示:

Property Name As %String(POPSPEC = "Name()") [ Aliases = {Alternate}, Required ];

然后,代码可以使用Name属性或等效的Alternate属性,如以下终端会话所示:

0 0
0 53
文章
· 八月 24, 2021 阅读大约需 2 分钟
触发器关键字UpdateColumnList,Internal,MimeType,SchemaSpec

第141章 触发器关键字 - UpdateColumnList

指定一个或多个列,其修改将导致SQL触发触发器。
仅对TSQL可用。

用法

要指定其修改触发触发器的列,请使用以下语法:

Trigger name [ Event = sqlevent, UpdateColumnList = updatecolumnlist ]  {    //implementation }

其中updatecolumnlist是一个列名或用逗号分隔的列名列表,用括号括起来。

详情

该关键字指定一个或多个列,其修改将触发触发器。
注意,此关键字仅对TSQL可用。

第142章 XData关键字 - Internal

指定这个XData块是否是内部的(不在类文档中显示)。
注意,类文档目前根本没有显示XData

0 0
0 72

本地库 在打开studio、studio编译类、关闭studio等操作系统卡死,关闭后连接超时。

打开cconsole.log报错日志,提示***严重的磁盘读写错误,I/O错误***,对数据库做了一致性检查,也未发现错误,必须重启电脑或者force库后恢复使用。

请问是什么问题造成的。。。

0 1
0 202
文章
· 九月 21, 2021 阅读大约需 9 分钟
第二十二章 SQL命令 CREATE TRIGGER(二)

第二十二章 SQL命令 CREATE TRIGGER(二)

SQL触发器代码

如果LANGUAGE SQL(默认),被触发的语句是一个SQL过程块,包括一个SQL过程语句后跟一个分号,或者关键字BEGIN后跟一个或多个SQL过程语句,每个SQL过程语句后跟一个分号,最后以END关键字结束。

被触发的操作是原子的,它要么完全应用,要么根本不应用,并且不能包含COMMITROLLBACK语句。
关键字BEGIN ATOMIC与关键字BEGIN是同义词。

0 0
0 79
文章
· 十一月 6, 2021 阅读大约需 4 分钟
第六十八章 SQL命令 SAVEPOINT

第六十八章 SQL命令 SAVEPOINT

在事务中标记一个点。

大纲

SAVEPOINT pointname

参数

  • pointname - 保存点的名称,指定为标识符。

描述

SAVEPOINT语句标记事务中的一个点。建立保存点使能够执行事务回滚到保存点,撤消在此期间完成的所有工作并释放在此期间获得的所有锁。在长期运行的事务或具有内部控制结构的事务中,通常希望能够回滚事务的一部分,而不撤消在事务期间提交的所有工作。

0 0
0 53
文章
· 十一月 21, 2021 阅读大约需 9 分钟
第八十三章 SQL命令 UPDATE(二)

第八十三章 SQL命令 UPDATE(二)

显示到逻辑数据转换

数据以逻辑模式格式存储。
例如,日期存储为整数天数,时间存储为从午夜开始的秒数,%List存储为编码字符串。
大多数其他数据,如字符串和数字,不需要转换;
无论当前模式如何,它们都以相同的格式输入、更新和存储。

对于已转换的数据,可以在LOGICAL模式(默认)中更新数据值,或者通过指定选择模式,使用更易于阅读的格式(DISPLAY模式或ODBC模式)更新数据值。
例如,通过指定选择模式,可以以DISPLAY格式(例如2/22/2018)、ODBC格式(例如2018-02-22)或逻辑格式(例如64701)更新日期。
对于某些数据类型,还可以在ODBC或DISPLAY选择模式下以LOGICAL格式指定数据。

0 0
0 37
文章
· 十二月 6, 2021 阅读大约需 1 分钟
第六章 SQL谓词 EXISTS

第六章 SQL谓词 EXISTS

检查表中是否至少存在一个对应行。

大纲

EXISTS select-statement

参数

  • select-statement - 一种简单的查询,通常包含一个条件表达式。

描述

EXISTS谓词测试指定的表,通常至少测试一行是否存在。
因为EXISTS后面的SELECT语句正在被检查是否包含某些内容,所以子句通常是这样的形式:

0 0
0 65
文章
· 十二月 21, 2021 阅读大约需 7 分钟
第一章 聚合函数概述

第一章 聚合函数概述

计算列的所有值并返回单个聚合值的函数。

支持聚合函数

聚合函数执行与单个列中的一个或多个值相关的任务,并返回单个值。
支持的功能有:

0 0
0 76
文章
· 一月 6, 2022 阅读大约需 1 分钟
第十六章 SQL函数 ABS

第十六章 SQL函数 ABS

返回数值表达式的绝对值的数值函数。

大纲

ABS(numeric-expression)

{fn ABS(numeric-expression)}

参数

  • numeric-expression - 要返回其绝对值的数字。

ABS返回与数字表达式相同的数据类型。

描述

ABS返回绝对值,它总是0或正数。
如果数值表达式不是一个数字(例如,字符串'abc',或空字符串''),ABS返回0
当传递null值时,ABS返回<null>

请注意,ABS可以用作ODBC标量函数(带有花括号语法),也可以用作SQL通用函数。

0 0
0 43
文章
· 一月 22, 2022 阅读大约需 8 分钟
第三十一章 SQL函数 CONVERT

第三十一章 SQL函数 CONVERT

将给定表达式转换为指定数据类型的函数。

CONVERT(datatype,expression[,format-code])

{fn CONVERT(expression,datatype)}

参数

  • expression - 要转换的表达式。
  • datatype - 要将表达式转换为的数据类型。
  • format - 可选-指定日期和时间格式的整数代码,用于在日期/时间/时间戳数据类型和字符数据类型之间进行转换。
    此参数仅用于通用标量语法形式。

描述

这里描述了CONVERT函数的两种不同实现。
两者都将一种数据类型中的表达式转换为另一种数据类型中的相应值。
两者都执行日期和时间转换。

0 0
0 73
文章
· 二月 18, 2022 阅读大约需 6 分钟
SQL语句与数据模式(Select Mode)

在InterSystems IRIS和InterSystems Caché 里,是否您遇到过执行一个SQL Insert/Update语句,明明给的是正确的日期值,但被告知“值‘2022-01-01’ 校验失败”的类似情况,并感到困惑?

如果有,那么您需要了解一下InterSystems IRIS和InterSystems Caché保存和显示数据的模式。



一 数据模式

InterSystems IRIS和InterSystems Caché里,数据有3种模式,称之为SELECT MODE:
逻辑模式:这是数据被保存到InterSystems IRIS和InterSystems Cache'时的格式。例如,%Date类型的数据,在数据库里被保存为一个整数,即从1840年12月31号到这个日期的天数,而不是YYYY-MM-DD的格式。

ODBC模式:这是ODBC对数据定义的格式。在这个模式下,%Date类型的数据就会显示为YYYY-MM-DD的格式。

0 0
0 169
文章
· 三月 4, 2022 阅读大约需 2 分钟
第七十一章 SQL函数 LAST_DAY

第七十一章 SQL函数 LAST_DAY

日期函数,它为日期表达式返回一个月的最后一天的日期。

大纲

LAST_DAY(date-expression)

参数

  • date-expression - 表达式,它是列的名称、另一个标量函数的结果或日期或时间戳文字。

描述

LAST_DAY以整数形式返回指定月份的最后一天,格式为$HOROLOG
计算闰年差异,包括世纪日调整:2000是闰年,19002100不是闰年。

日期表达式可以是一个日期整数、一个$HOROLOG$ZTIMESTAMP值、一个ODBC格式的日期字符串或一个时间戳。

0 0
0 36
文章
· 三月 14, 2022 阅读大约需 5 分钟
第八十一章 SQL函数 $LISTBUILD

第八十一章 SQL函数 $LISTBUILD

从字符串构建列表的列表函数。

大纲

$LISTBUILD(element [,...])

参数

  • element - 任何表达式,或逗号分隔的表达式列表

描述

$LISTBUILD 接受一个或多个表达式,并为每个表达式返回一个包含一个元素的列表。

以下函数可用于创建列表:

0 0
0 34
文章
· 三月 27, 2022 阅读大约需 2 分钟
第九十四章 SQL函数 %MINUS

第九十四章 SQL函数 %MINUS

将数字转换为规范整理格式,然后反转符号的整理函数。

大纲

%MINUS(expression)

%MINUS expression

参数

  • expression - 表达式,可以是列名、数字或字符串文字、算术表达式或另一个函数的结果,其中基础数据类型可以表示为任何字符类型。

描述

%MINUS 将数字或数字字符串转换为规范形式,反转符号,然后以数字排序规则返回这些表达式值。

%MINUS%PLUS 在功能上是相同的,只是 %MINUS 反转了符号。它为解析为正数的任何数字添加减号前缀,并从解析为负数的任何数字中删除减号。零从不签名。

0 0
0 45
文章
· 四月 18, 2022 阅读大约需 3 分钟
第116章 SQL函数 REPLACE

第116章 SQL函数 REPLACE

字符串函数,用于替换字符串中的子字符串。

大纲

REPLACE(string,oldsubstring,newsubstring)

参数

  • string - 作为子字符串搜索目标的字符串表达式。
  • oldsubstring - 字符串中要匹配的子字符串。
  • newsubstring - 用于替换 oldsubstring 的子字符串。

描述

REPLACE 在字符串中搜索子字符串并替换所有匹配项。匹配区分大小写。如果找到匹配项,它将用 newsubstring 替换 oldsubstring 的每个实例。替换子串可能比它替换的子串长或短。如果找不到子字符串,则 REPLACE 将原样返回原字符串。

0 0
0 99
问题
· 四月 29, 2022
Cache 动态 SQL 分页

我想知道是否有更好的方法来使用动态SQL对数据集进行分页,而不是我下面使用的方法。问题是,当潜在的数据池变大时,这段代码就会变慢,以至于无法使用。在分析下面的每一行代码时,似乎速度变慢与最初的rset.%Next()迭代有关。 有没有什么不需要子查询/%VID的可用方法,比如简单的LIMIT/OFFSET?

我的代码类似于:

s sql=##class(%SQL.Statement).%New()

s query="SELECT *,%VID FROM (SELECT prop FROM table WHERE prop=x) WHERE %VID BETWEEN 1 AND 100"

s sc=sql.%Prepare(query)

s rset=sql.%Execute()

while rset.%Next() {.....

0 1
1 244
文章
· 六月 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 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 会返回错误:

0 0
0 36