你好,开发者!

你们中的许多人在 Open Exchange 和 Github 上发布了 InterSystems ObjectScript 库。

但对于开发者来说,如何简化项目的使用和协作呢?

在本文中,我想介绍一种简单方法,只需将一组标准文件复制到你的仓库中,就可以启动任何 ObjectScript 项目和对其做出贡献。

我们开始吧!

0 0
0 70
InterSystems 开发者社区汇聚了 11,619 位出色的开发者
程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
文章
Hao Ma · 一月 10, 2021 阅读大约需 17 分钟
RESTful API (cn)

RESTful 应用程序编程接口 (API) 设计和文档编制初学者指南。 通过示例,您将学习一些常见的 RESTful API 模式。

在阅读之前

您需要知道

  • 如何在 Ensemble 中创建 RESTful Web 服务
  • 如何在 Ensemble 中使用 RESTful Web 服务
  • 如何传递服务参数
  • 如何返回服务结果

什么是服务 API?

什么是应用程序编程接口? 是具体化的东西吗? 是单一编程单元吗? API 的作用是什么? 在我看来,API 是由程序代码以间接方式决定的。 但完全定义的 API 是由运行可执行程序的容器(由部署设置控制)提供的。 因此,我宁愿将 API 定义为服务的公共描述。 该描述可以是人类可读的,也可以仅机器可读, 或者两者均可。 API 用于与将要使用服务的人员共享有关服务的基本信息。 API 说明了服务的作用、使用环境、功能以及管理的数据结构等。

0 0
0 82
文章
Nicky Zhu · 一月 11, 2021 阅读大约需 3 分钟
类、表和Globals——工作原理

当我向技术人员介绍InterSystems IRIS时,我一般会先讲其核心是一个多模型DBMS。

我认为这是其主要优势(在DBMS方面)。数据仅存储一次。您只需访问您想用的API。
- 您想要数据的概要?用SQL!
- 您想用一份记录做更多事情?用对象!
- 想要访问或设置一个值,并且您知道键?用Globals!

乍一看挺好的,简明扼要,又传达了信息,但当人们真正开始使用InterSystems IRIS时,问题就来了。类、表和Globals是如何关联的?它们之间有什么关系?数据是如何存储的?

本文我将尝试回答这些问题,并解释这些到底是怎么回事。

第一部分 模型偏见

处理数据的人往往对他们使用的模型有偏见。

开发者们把数据视为对象。对他们而言,数据库和表都是通过CRUD(增查改删,最好是基于ORM)交互的盒子,但底层的概念模型都是对象(当然这对于我们大多数使用面向对象编程语言的开发者来说没错)。

而DBA大部分时间都在搞关系型DBMS,他们把数据视为表。对象只是行的封装器。

对于InterSystems IRIS,持久类也是一个表,将数据存储在Global中,因此需要进行一些澄清。

1 0
0 60
文章
姚 鑫 · 二月 3, 2021 阅读大约需 2 分钟
第二十三章 Caché 变量大全 $Y 变量

第二十三章 Caché 变量大全 $Y 变量

包含光标的当前垂直位置。

大纲

$Y

描述

$Y包含光标的当前垂直位置。当字符写入设备时,Caché会更新$Y以反映垂直光标位置。

输出的每个换行符(换行符)(ASCII 10)将$Y递增1。换页符(ASCII 12)将$Y重置为0。

$Y是16位无符号整数。当其值达到65536时,$Y换行为0。换句话说,如果$Y为65535,则下一个输出字符将其重置为0。

0 0
0 50
文章
姚 鑫 · 二月 16, 2021 阅读大约需 2 分钟
第三十六章 Caché 变量大全 $ZORDER 变量

第三十六章 Caché 变量大全 $ZORDER 变量

包含下一个全局节点的值。

大纲

$ZORDER
$ZO

描述

$ZORDER包含当前全局引用之后的下一个全局节点的值(在$QUERY序列中,而不是$ORDER序列中)。如果没有下一个全局节点,访问$ZORDER将导致<unfined>错误,指示$ZORDER成功访问的最后一个全局节点。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

示例

下面的示例使用WHILE循环重复调用$ZORDER以遍历一系列下标节点:

1 0
0 39
文章
姚 鑫 · 四月 2, 2021 阅读大约需 13 分钟
第十五章 使用管理门户SQL接口(一)

第十五章 使用管理门户SQL接口(一)

本章介绍如何在InterSystems IRIS®数据平台管理门户上执行SQL操作。
管理门户界面使用动态SQL,这意味着在运行时准备和执行查询。
Management Portal界面旨在帮助针对小型数据集开发和测试SQL代码。
它不打算用作在生产环境中执行SQL的接口。

管理门户还提供了各种配置SQL的选项。

有关使用管理门户的一般信息,请选择左上角的Help按钮。
通过使用左上角的Contact按钮,可以从管理门户向InterSystems Worldwide Response Center (WRC)报告有关InterSystems软件的问题。

管理门户SQL工具

InterSystems IRIS允许使用SQL工具从InterSystems IRIS管理门户检查和操作数据。
此操作的起点是Management Portal System Explorer选项。
从这里选择SQL选项。
这将显示SQL接口,它允许:

0 0
0 79
文章
姚 鑫 · 四月 12, 2021 阅读大约需 3 分钟
第一章 SQL性能优化简介

第一章 SQL性能优化简介

InterSystems SQL支持几个特性来优化InterSystems IRIS®数据平台的SQL性能。

表定义优化

SQL性能从根本上取决于良好的数据架构。
将数据划分为多个表并在这些表之间建立关系对于高效的SQL是必不可少的。

描述了以下优化表定义的操作。
这些操作要求定义表,但不要求用数据填充表:

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

#

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

# 位图索引

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

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

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

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

0 0
0 32
文章
姚 鑫 · 四月 24, 2021 阅读大约需 12 分钟
第五章 优化查询性能(三)

第五章 优化查询性能(三)

查询执行计划

可以使用解释或显示计划工具来显示SELECTDECLAREUPDATEDELETETRUNCATE TABLE和一些INSERT操作的执行计划。这些操作统称为查询操作,因为它们使用SELECT查询作为其执行的一部分。InterSystems IRIS在准备查询操作时生成执行计划;不必实际执行查询来生成执行计划。

默认情况下,这些工具显示InterSystems IRIS认为的最佳查询计划。对于大多数查询,有多个可能的查询计划。除了InterSystems IRIS认为最佳的查询计划外,还可以生成和显示备用查询执行计划。

0 0
0 38
文章
姚 鑫 · 四月 28, 2021 阅读大约需 11 分钟
第八章 解释SQL查询计划(一)

第八章 解释SQL查询计划(一)

SQL语句

这个SQL语句列表为每个表提供了SQL查询和其他操作的记录,包括插入、更新和删除。
这些SQL语句链接到一个查询计划,该链接提供冻结该查询计划的选项。

系统为每个SQL DML操作创建一条SQL语句。
这提供了一个按表、视图或过程名称列出的SQL操作列表。
如果更改表定义,可以使用此SQL Statements列表来确定每个SQL操作的查询计划是否会受到此DDL更改的影响,以及/或是否需要修改某个SQL操作。
然后,可以:

  • 确定每个SQL操作使用哪个查询计划。
    可以决定使用反映对表定义所做更改的修改后的查询计划。
    或者可以冻结当前查询计划,保留在更改表定义之前生成的查询计划。
  • 根据对表定义所做的更改,确定是否对对该表执行SQL操作的例程进行代码更改。

注意:SQL语句是一个SQL例程列表,它们可能会受到表定义更改的影响。
它不应该用作表定义或表数据更改的历史记录。

创建SQL语句操作

下面的SQL操作会创建相应的SQL语句:

0 0
0 36

亲爱的社区开发者们,大家好!

欢迎积极参与新一轮InterSystems开发者竞赛!

🏆 InterSystems 编程大赛:FHIR 加速器 🏆

提交在AWS上使用InterSystems的IRIS FHIR-as-a-service的应用程序,或帮助使用InterSystems IRIS FHIR加速器开发的解决方案。点击这篇文章,了解如何在AWS上申请应用InterSystems IRIS FHIR 加速器服务 (FHIRaaS) 。

    时间:2021年5月10日-6月6日

    奖金总额: $8,750 

    👉  点击登录活动页面 👈

    0 0
    0 83
    文章
    Nicky Zhu · 五月 20, 2021 阅读大约需 7 分钟
    互操作消息统一管理系列:SearchTable加速检索

    在上一篇文章《互操作消息统一管理系列:Message Bank》中,我们了解到在Message Bank中,消息均以半结构化(XML)或非结构化(Stream)的形式保存,因此无法与客户端的结构化消息一样,直接支持基于索引的检索。为此,需要在Message Bank中定义Search Table以支持查询。关于Search Table的定义和作用,请查阅https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI...

    0 0
    0 52
    文章
    姚 鑫 · 五月 31, 2021 阅读大约需 4 分钟
    第十二章 IBM WebSphere MQ检索邮件

    第十二章 IBM WebSphere MQ检索邮件

    检索邮件

    要检索邮件,请执行以下操作:

    1. 按照“创建连接对象”中的说明创建连接对象。在这种情况下,请创建%Net.MQRecv的实例。Connection对象有一个消息队列,可以从中检索消息。
    2. 根据需要调用以下方法:

    - %Get()-通过引用返回字符串消息作为第一个参数。
    - %GetStream()-给定初始化的文件字符流,此方法从队列中检索消息,并将其放入与该流关联的文件中。请注意,必须设置流的Filename属性才能对其进行初始化。不支持二进制流。

    0 0
    0 52
    文章
    Michael Lei · 六月 23, 2021 阅读大约需 15 分钟
    最低限度的监控和警报解决方案

    InterSystems 数据平台包括了用于系统监视和警报的实用程序及工具,但对于不熟悉构建于 InterSystems 数据平台(又名 Caché)的解决方案的系统管理员来说,他们需要知道从何处下手以及需要配置什么。

    本指南以在线文档和开发者社区帖子为参考,介绍了实现最低限度的监视和警报解决方案的途径,以及如何启用和配置以下组件:

    1. Caché Monitor:扫描控制台日志并发送电子邮件警报。

    2. System Monitor:监视系统状态和资源,根据固定参数生成通知(警报和警告),同时跟踪整体系统运行状况。

    3. Health Monitor:对主要的系统和用户定义指标进行采样,并将它们与用户可配置的参数和既定的标准值进行比较,在样本超过适用或学习的阈值时生成通知。

    4. History Monitor:维护性能指标和系统使用情况指标的历史数据库。

    5. pButtons:每天按计划收集操作系统指标和 Caché 指标。

    请记住,本指南是最低配置,所包含的工具灵活且可扩展,因此可在需要时提供更多功能。 本指南跳过了文档,让您直接上手。 您需要更深入地研究文档才能充分利用监视工具,同时,请考虑将本指南作为启动和运行的速查表。

    0 0
    0 106
    文章
    姚 鑫 · 六月 12, 2021 阅读大约需 6 分钟
    第五章 生成XML元素

    第五章 生成XML元素

    生成XML元素

    如果使用RootElement()启动文档的根元素,则负责生成该根元素内的每个元素。有三个选择:

    将对象生成为元素

    可以从InterSystems IRIS对象生成输出作为元素。在本例中,使用object()方法,该方法写入支持XML的对象。输出包括该对象中包含的所有对象引用。可以指定此元素的名称,也可以使用在对象中定义的默认值。

    只能在RootElement()EndRootElement()方法之间使用object()方法。

    此示例为给定启用XML的类的所有已保存实例生成输出:

    0 0
    0 45
    文章
    姚 鑫 · 七月 14, 2021 阅读大约需 5 分钟
    第三章 处理文件和目录名

    第三章 处理文件和目录名

    %Library.File类提供了几个可用于处理文件名和目录名的类方法。在大多数情况下,文件和目录不需要存在即可使用这些方法。

    获取文件名和目录名

    %Library.File类提供可用于获取部分文件名和目录名的类方法。

    在给定完整路径名的情况下,使用GetDirectory()GetFilename()分别获取目录和短文件名。对于此方法,不允许使用部分目录名。

    DHC-APP>set filename = "e:\temp\config.txt"
    
    DHC-APP>write ##class(%File).GetDirectory(filename)
    E:\temp\
    DHC-APP>write ##class(%File).GetFilename(filename)
    config.txt
    

    在给定文件名的情况下,使用CanonicalFilename()从根目录获取完整路径:

    0 0
    0 35
    文章
    姚 鑫 · 七月 26, 2021 阅读大约需 3 分钟
    类关键字NoExtent,OdbcType,Owner,ProcedureBlock

     

    # <center> 第二十五章 类关键字 - NoExtent

    指定是否阻止编译器为此类生成继承类(如果不这样做的话)。

    # 用法

    要防止编译器为此类生成继承类,请使用以下语法:

    ```
    Class MyApp.MyClass [ NoExtent ]  { //class members }
    ```

    否则,省略此关键字或将单词`Not`放在关键字的前面。

    # 详解

    如果该关键字为真,则该类没有 `extent`。不能创建此类的实例。通常,这样的类会扩展或覆盖从`%Library.Persistent`继承的标准持久接口。

    # 对子类的影响

    此关键字不是继承的。

    # 默认

    如果省略此关键字,类可以有一个`extent`。

     

    # <center> 第二十六章 类关键字 - OdbcType

    指定通过`ODBC`或`JDBC`公开此数据类型时使用的类型。每个数据类型类都必须指定一个`ODBC`类型。此关键字仅适用于数据类型类。

    # 用法

    0 0
    0 32
    文章
    姚 鑫 · 八月 3, 2021 阅读大约需 3 分钟
    索引关键字Unique,Abstract,ClientName,CodeMode

    第五十七章 索引关键字 - Unique

    指定索引是否应强制唯一性。

    用法

    要指定IRIS应强制此索引所基于的属性具有唯一性,请使用以下语法:

    Index name On property_expression_list [ Unique ];
    

    否则,请省略此关键字或将该词放在该关键字之前。

    详情

    如果存在UNIQUE关键字,则表示这是唯一索引。

    由唯一索引索引的属性(或多个属性)被约束为在定义索引的类(表)的范围(所有对象的集合)内具有唯一值(即,没有两个实例可以具有相同的排序值)。

    唯一索引不能也是位图索引。

    示例

    Index SSNIdx On SSN [ Unique ] ;
    

    默认

    如果省略此关键字,IRIS不会强制此索引所基于的属性具有唯一性。

    第五十八章 方法关键字 - Abstract

    指定这是否是抽象方法。

    0 0
    0 29

    1 磁盘空间不足的常见情形
    1)Journal所在磁盘空间不足。造成这种情况的原因有多种,比如,Mirror中备机未处于宕机状态,因此主机保留了Journal文件。
    2)数据库所在磁盘空间不足。比如,集成平台上Ensemble/Health Connect/IRIS for Health的消息从未清除过,导致消息数据库DAT文件不断增大,直至将磁盘空间用尽。

    我们可以看到以上两种情形下,Mirror都帮不上忙,也就是说一旦问题出现,主机和备机都没有办法立即承担起业务系统的运行,
    第1)种,备机可能在故障出现前就已经宕机很长一段时间而没被发现,备机的数据很可能已经与主机严重不一致。实际上,主机之所以保留了大量的journal文件没有删除,就是为了让备机同步数据时使用。
    第2)种,虽然配置了Mirror,但是消息主库正常情况下都是镜像库,在一个健康的Mirror中,备机和主机的镜像库数据保持同步,镜像库大小应当是相同的,假设主备机的硬件配置相同(这也是我们推荐的方式)那么磁盘空间不足在备机上同样存在。

    5 0
    0 97
    文章
    姚 鑫 · 九月 22, 2021 阅读大约需 3 分钟
    第二十三章 SQL命令 CREATE USER

    第二十三章 SQL命令 CREATE USER

    创建用户帐户。

    大纲

    CREATE USER user-name IDENTIFY BY password
    
    CREATE USER user-name IDENTIFIED BY password
    

    参数

    • user-name - 要创建的用户的名称。名称是最多128个字符的标识符。它可以包含Unicode字母。用户名不区分大小写。
    • password - 此用户的密码。密码必须至少为3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。

    描述

    CREATE USER命令使用指定的密码创建用户帐户。

    0 0
    0 33
    文章
    姚 鑫 · 九月 29, 2021 阅读大约需 9 分钟
    第二十九章 SQL命令 DISTINCT

    第二十九章 SQL命令 DISTINCT

    指定仅返回不同值的SELECT子句。

    大纲

    SELECT [DISTINCT [BY (item {,item2})] ]  |  [ALL]
      select-item {,select-item2}
    

    参数

    • DISTINCT - 可选-返回组合选择项值唯一的行。
    • DISTINCT BY (item {,item2}) - 可选-返回按(项)值唯一的行的选择项值。
    • ALL - 可选-返回结果集中的所有行。默认设置。

    描述

    可选DISTINCT子句出现在SELECT关键字之后、可选TOP子句和第一个SELECT-ITEM之前。

    0 0
    0 133