2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以:
- 先睹为快:2021 年虚拟峰会体验实验室
- 使用自适应分析(Adaptive Analytics)解决方案来组建你的第一个数据模型
- 免费试用 InterSystems IRIS 社区版
- 查看 InterSystems 文档中的分析
- 申请即将举行的线上技术课程
注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。
2021 年 8 月的学习资料现在可以在learning.intersystems.com上独家获取!您可以:
注意:老是错过最新消息?别担心,我们会在9月恢复正常的邮件发送。
开发者们好!
我们很高兴地宣布推出InterSystems公司的合作伙伴名录!
这里是寻找基于InterSystems产品的商业服务 和 解决方案 的地方。
为什么选择InterSystems合作伙伴目录?
修改用户密码。
ALTER USER user-name IDENTIFY BY password
ALTER USER user-name IDENTIFIED BY password
| 参数 | 描述 |
|---|---|
| user-name | 待修改密码的已有用户名。用户名不区分大小写。 |
| password | 用户的新密码。密码必须至少包含3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。 |
ALTER USER命令允许更改用户的密码。可以随时更改自己的密码。要更改其他用户的密码,必须拥有%Admin_Secure:USE系统权限。
IDENTIFY BY和IDENTIFIED BY关键字是同义词。
user-name必须是已存在的用户。
指定一个不存在的用户将生成一个带有%msg的SQLCODE -400错误,如下所示:ERROR #838: User badname does not exist。可以通过调用$SYSTEM.SQL.Security.UserExists()方法来确定用户是否存在。
作为分隔标识符指定的用户名可以是SQL保留字,可以包含逗号(,)、句号(.)、插入符号(^)和两个字符的箭头序列(->)。
它可以以除星号(*)以外的任何有效字符开头。
密码可以是字符串字面值、数字或标识符。
DROP COLUMN可以删除指定为逗号分隔列表的多个列定义。每个列出的列名后面必须紧跟其RESTORY或CASCADE(如果未指定,则默认为RESTRICE)和%DELDATA或%NODELDATE(如果未指定,则默认为%NODELDATA)选项。
默认情况下,删除列定义不会从数据映射中删除存储在该列中的任何数据。
要同时删除列定义和数据,请指定%DELDATA选项。
删除列定义并不删除相应的列级特权。 例如,授予用户在该列上插入、更新或删除数据的权限。 这将产生以下后果:
由于这些原因,通常建议在删除列定义之前使用REVOKE命令从列中撤销列级特权。
RESTRICT关键字(或无关键字):如果列出现在索引中,或者定义在外键约束或其他唯一约束中,则不能删除该列。
为该列尝试DROP COLUMN失败,并出现SQLCODE -322错误。
默认为RESTRICT。
CASCADE关键字:如果该列出现在索引中,该索引将被删除。
可能有多个索引。
如果列出现在外键中,则将删除外键。
可能有多个外键。
如果列在COMPUTECODE或COMPUTEONCHANGE子句中使用,则不能删除该列。
1 磁盘空间不足的常见情形
1)Journal所在磁盘空间不足。造成这种情况的原因有多种,比如,Mirror中备机未处于宕机状态,因此主机保留了Journal文件。
2)数据库所在磁盘空间不足。比如,集成平台上Ensemble/Health Connect/IRIS for Health的消息从未清除过,导致消息数据库DAT文件不断增大,直至将磁盘空间用尽。
我们可以看到以上两种情形下,Mirror都帮不上忙,也就是说一旦问题出现,主机和备机都没有办法立即承担起业务系统的运行,
第1)种,备机可能在故障出现前就已经宕机很长一段时间而没被发现,备机的数据很可能已经与主机严重不一致。实际上,主机之所以保留了大量的journal文件没有删除,就是为了让备机同步数据时使用。
第2)种,虽然配置了Mirror,但是消息主库正常情况下都是镜像库,在一个健康的Mirror中,备机和主机的镜像库数据保持同步,镜像库大小应当是相同的,假设主备机的硬件配置相同(这也是我们推荐的方式)那么磁盘空间不足在备机上同样存在。
2 应急措施
切忌手动从文件系统中删除Journal文件!
InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分
转载自Forester 报告:
InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。"
Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report
.png)
修改表。
大家好,我简单的自我介绍一下,我是姚鑫,
首先Caché,M这门技术相对比较冷门,资料方面都是英文,没有系统的相关资料,记得刚入职时学习的东西都是很基础的,稍微有一些复杂的结构变化,就不知道如何下手。之后,群里的小伙伴总有人问我,希望我出一个系统的Caché视频,这件事我也酝酿了很久,目的就是帮助到更多的同学,让每个小伙伴在日后的工作学习中能更加的得心应手。遇到困难或问题时,大家可以随时在群里咨询,群里的氛围很和谐,有很多热心的大佬,不会说有那种自己觉得简单的问题,不好意思问,没人回答的情况。只要你觉得是个问题就可以发出来。
因为这段时间比较忙,准备的比较仓促,可能有一些内容会有遗漏,大家有啥想法可以群里留言,会后可以答疑,大家可以提出来,一起探讨一下,后续的会准备的更加充分一些。
请教一下,我使用两个iris实例搭建了镜像,再将数据库同步后,备机出现了数据库无法激活的问题,报错:Database could not be activated because Write Daemon could not update mirror block。该如何解决
SQL中用作运算符等的字符表
每个符号的名称后跟其ASCII十进制代码值。
| 符号 | 名称和用法 |
|---|---|
[space] or [tab] |
空白(制表符(9)或空格(32)):关键字、标识符和变量之间的一个或多个空白字符。 |
! |
感叹号(33):条件表达式中谓词之间的或逻辑运算符。用于WHERE子句、HAVING子句和其他地方。在SQL Shell中!命令用于发出ObjectScript命令行。 |
!= |
感叹号/等号:不等于比较条件。 |
" |
引号(34):包含一个分隔的标识符名称。在动态SQL中,用于将类方法参数的文字值括起来,例如将SQL代码作为%Prepare()方法的字符串参数,或者将输入参数作为%Execute()方法的字符串参数。在%PATTERN中,用于将文字值包含在模式字符串中。例如,'3L1"L".L'(意思是3个小写字母,后面跟着大写字母“L”,后面跟着任意数量的小写字母)。在XMLELEMENT中,用于括起标记名字符串。 |
"" |
两个引号:本身是无效的分隔标识符。在分隔标识符内,文字引号字符的转义序列。例如,"a""good""id"。 |
# |
井号(35):有效的标识符名称字符(不是第一个字符)。前后带有空格的模算术运算符。对于嵌入式SQL,是ObjectScript宏预处理器指令前缀。例如,#include |
指定SQL RowId属性。
<SqlRowIdProperty>prop</SqlRowIdProperty>
该元素的值是一个SQL标识符。
此元素仅由从早期InterSystems产品迁移的类使用。
元素的默认值为空字符串。
指定内部SQL表号。
<SqlTableNumber>123</SqlTableNumber>
该元素的值是一个表号。
此元素仅由从早期InterSystems产品迁移的类使用。
元素的默认值为空字符串。
指定用于串行对象的数据定义。
<State>state</State>
此元素的值是此存储定义中的数据定义的名称。
对于串行(嵌入式)类,此关键字指示使用哪个数据定义来定义对象的序列化状态(序列化时对象属性的排列方式)。这也是默认数据定义,默认结构生成器将向其添加未存储的属性。
元素的默认值为空字符串。
指定流属性的默认存储位置。
<StreamLocation>^Sample.PersonS</StreamLocation>
此元素的值是带有可选前导下标的全局名称。
指定使用默认存储为持久类分配新ID值的系统函数。
<IdFunction>increment</IdFunction>
这个元素的值可以是increment(使用$increment函数)或sequence(使用$sequence函数)。
如果持久化类不使用IdKey来确定对象ID值,则该元素允许指定用于分配ID值的函数($increment函数或$sequence函数)。
如果类使用$increment函数,则通过对元素中定义的全局位置中存储的值进行递增来创建新的id。
如果类使用$sequence函数,它可能会保留id块,以便在快速数据摄入的情况下获得更快的速度。
如果没有使用所有保留的ID,则可能导致ID号之间的空白。
当随后的数据被吸收时,这些空白可能会也可能不会被填补。
一个副作用是,具有较高ID的类的实例不一定比具有较低ID的类的实例更新。
此外,在元素中定义的全局位置上的值与当前分配的任何id都不直接相关。
元素的默认值是使用类定义创建的类的递增值。
元素的默认值是使用DDL CREATE TABLE语句创建的类的序列。
指定ID计数器的位置。
<IdLocation>^Sample.SAM(系统警报和监视)以“功能齐全”的 docker-compose 容器集的形式提供,只要启动就可以开始以默认的仪表板监视 IRIS 实例。 使用初始配置就可以很好地了解 SAM 功能并开始对 IRIS 系统进行基本监视。 但是,当开始监视多个系统并收集大量指标数据时,需要更改一些默认设置。 为了从 SAM 获取更多价值,您还会想要添加来自其他数据源(目标)的指标。 以下技巧将帮助您在生产环境中部署 SAM,从多个目标收集指标并将这些指标组合到您自己的仪表板和图表中。 此外,您还将看到一些可能有助于探索 SAM 容器和应用程序的命令。
*注意:*我应该指出,其中一些技巧和提示可能不是最佳做法;这更像是一个日志,记录了我第一次如何配置 SAM 来监视相同系统上的多个服务器和非 IRIS 目标的基准。 如果您有建议,请在评论中指教 ;) 所以,记住本帖可能会随着时间的推移而有所变化,让我们开始吧;
在下面的技巧中,有重启 docker 以及启动和停止 SAM 的操作。 请通读这些技巧,确定哪些适合您,然后按照下面的相同顺序执行。
默认情况下,docker 容器将文件存储在根 (/) 文件系统。 SAM 不需要很多 CPU 或内存资源;但是,指标收集将占用空间。
Object Script(二)
ObjectScript没有定义任何保留字:你可以自由地使用任何字作为标识符(如变量名)。为了达到这个目的,ObjectScript使用了一组内置的命令以及特殊的字符(比如函数名的"$"前缀),以便将标识符与其他语言元素区分开来。
指定XData块所属的XML名称空间。
要指定XData块所属的XML名称空间,请使用如下语法:
XData name [ XMLNamespace = "namespaceURL" ] { }
其中namespaceURL是XML名称空间的URI。
注意,这一项是用双引号括起来的。
该关键字指定XData块所属的XML名称空间。
如果省略这个关键字,则该XData块的内容不属于任何名称空间。
XData MyXData [ XMLNamespace = "http://www.mynamespace.org" ]
{
}
指定该类的数据存储位置。
<DataLocation>^Sample.PersonD</DataLocation>
element的值是一个全局变量名称,具有可选的前导下标。
一个表达式,它是存储该类数据的位置。
通常这将是一个全局变量引用,如^User.PersonD。
全局变量引用还可以包含一个或多个前导下标。
例如, ^User.Data("Person")。
在从属类(父-子关系中的子类)中使用{%%PARENT}代替全局或局部变量名也是有效的。
例如,{%%PARENT}(ChildData)