文章
· 五月 10, 2021 阅读大约需 5 分钟
第四章 多维存储的SQL和对象使用(二)

第四章 多维存储的SQL和对象使用(二)

索引

持久化类可以定义一个或多个索引;其他数据结构用于提高操作(如排序或条件搜索)的效率。InterSystems SQL在执行查询时使用这些索引。InterSystems IRIS对象和SQL在执行INSERTUPDATEDELETE操作时自动维护索引内的正确值。

标准索引的存储结构

标准索引将一个或多个属性值的有序集与包含属性的对象的对象ID值相关联。

例如,假设我们定义了一个简单的持久化MyApp.Person类,该类具有两个文本属性和一个关于其Name属性的索引:

0 0
0 72
InterSystems 开发者社区汇聚了 21,051 位出色的开发者
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!

提到临床医生与信息系统的交互,除外“病历书写”,恐怕最常见的临床场景就是“医嘱开具”了。医嘱是临床医生根据患者病史、体征、检验检查结果下达的医学指令,是医疗过程的重要环节和医疗质量的决定因素。在传统纸质医嘱时代,医生每天花费在医嘱开具、修改和确认等环节上的时间甚至接近于其与患者沟通的时间;且尽管上级医生、药剂师、护士等角色都会在不同阶段参与医嘱审核,依然难以避免医嘱差错的发生。因此,医学信息系统被广泛应用后,提升医嘱开具的便捷性和准确性成为其首当其冲的职责。那么,哪些系统功能是临床医生眼中的医嘱“助力神器”呢?

1 1
0 488
文章
· 五月 9, 2021 阅读大约需 6 分钟
第四章 多维存储的SQL和对象使用(一)

第四章 多维存储的SQL和对象使用(一)

本章介绍InterSystems IRIS®对象和SQL引擎如何利用多维存储(全局变量)来存储持久对象、关系表和索引。

尽管InterSystems IRIS对象和SQL引擎会自动提供和管理数据存储结构,但了解其工作原理的详细信息还是很有用的。

数据的对象视图和关系视图使用的存储结构是相同的。为简单起见,本章仅从对象角度介绍存储。

数据

每个使用%Storage.Persistent存储类(默认)的持久化类都可以使用多维存储(全局变量)的一个或多个节点在InterSystems IRIS数据库中存储其自身的实例。

每个持久化类都有一个存储定义,用于定义其属性如何存储在全局变量节点中。这个存储定义(称为“默认结构”)由类编译器自动管理。

0 0
0 74
文章
· 五月 8, 2021 阅读大约需 7 分钟
第三章 使用多维存储(全局变量)(四)

第三章 使用多维存储(全局变量)(四)

管理事务

InterSystems IRIS提供了使用全局变量实现完整事务处理所需的基本操作。
InterSystems IRIS对象和SQL自动利用这些特性。
如果直接将事务性数据写入全局变量,则可以使用这些操作。

事务命令是TSTART,它定义事务的开始;
TCOMMIT,它提交当前事务;
TROLLBACK,它将中止当前事务,并撤消自事务开始以来对全局变量所做的任何更改。

例如,下面的ObjectScript代码定义了事务的开始,设置了一些全局变量节点,然后根据ok的值提交或回滚事务:

0 0
0 78

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

欢迎积极参与新一轮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 132
    文章
    · 五月 8, 2021 阅读大约需 5 分钟
    InterSystems IRIS 上的 COVID-19 分析

    大家好!

    约翰·霍普金斯大学每天都会发布有关 COVID-19 疫情的新数据。

    我在部署于 GCP Kubernetes 上的 docker 中使用 InterSystems IRIS Community Edition 构建了一个简单的 InterSystems IRIS Analytics 仪表板,可显示疾病爆发的关键指标。

    0 0
    0 265
    文章
    · 五月 8, 2021 阅读大约需 8 分钟
    将 Python JDBC 连接到 IRIS 数据库 - 快速笔记

    关键字:Python,JDBC,SQL,IRIS,Jupyter Notebook,Pandas,Numpy ,机器学习

    1. 目的

    这是一个用于演示的 5 分钟快速笔记,通过 Jupyter Notebook 中的 Python 3 调用 IRIS JDBC 驱动程序,以经由 SQL 语法从 IRIS 数据库实例读取数据和向 IRIS 数据库实例写入数据。

    去年,我发表了关于将 Python 绑定到 Cache 数据库的简要笔记(第 4.7 节)。 如何使用 Python 挂入 IRIS 数据库以将其数据读入 Pandas 数据框和 NumPy 数组进行常规分析,然后再将一些经过预处理或标准化的数据写回 IRIS 中,准备进一步用于 ML/DL 管道,现在可能是时候回顾一些选项和讨论了。

    一些立即浮现的快速选项

    0 0
    0 343
    文章
    · 五月 7, 2021 阅读大约需 7 分钟
    第三章 使用多维存储(全局变量)(三)

    第三章 使用多维存储(全局变量)(三)

    在全局变量中复制数据

    若要将全局变量(全部或部分)的内容复制到另一个全局变量(或局部数组)中,请使用ObjectScript Merge命令。

    下面的示例演示如何使用Merge命令将OldData全局变量的全部内容复制到NewData全局变量中:

     Merge ^NewData = ^OldData
    

    如果合并命令的source参数有下标,则复制该节点及其后代中的所有数据。如果Destination参数有下标,则使用目标地址作为顶级节点复制数据。例如,以下代码:

     Merge ^NewData(1,2) = ^OldData(5,6,7)
    

    ^OldData(5,6,7)及其下的所有数据复制到^NewData(1,2)

    0 0
    0 126
    公告
    · 五月 7, 2021
    开发者社区改版, April 2021

    Hi Developers!

    看看2021年4月的开发者社区新版本有些什么改善, 主要的新特性包括:

    This is a release of how did we improve the Developer Community in April 2021. The key features:

    • 代码块里的‘拷贝到剪贴板’按钮
    • 帖子翻译页
    • 私信帖子作者
    • InterSystems官方版本和安全警示

    以下是详细介绍。

    1 0
    0 93
    文章
    · 五月 6, 2021 阅读大约需 5 分钟
    第三章 使用多维存储(全局变量)(二)

    第三章 使用多维存储(全局变量)(二)

    遍历全局变量中的数据

    有许多方法可以遍历(迭代)存储在全局变量中的数据。

    $ORDER(下一个/上一个)函数

    ObjectScript $Order函数允许顺序访问全局中的每个节点。

    $ORDER函数返回给定级别(下标编号)的下一个下标的值。例如,假设定义了以下全局设置:

     Set ^Data(1) = ""
     Set ^Data(1,1) = ""
     Set ^Data(1,2) = ""
     Set ^Data(2) = ""
     Set ^Data(2,1) = ""
     Set ^Data(2,2) = ""
     Set ^Data(5,1,2) = ""
    

    要查找第一个第一级下标,我们可以使用:

    0 0
    0 116
    文章
    · 五月 5, 2021 阅读大约需 6 分钟
    第三章 使用多维存储(全局变量)(一)

    第三章 使用多维存储(全局变量)(一)

    本章描述了使用多维存储(全局变量)可以执行的各种操作。

    以全局变量存储数据

    在全局节点中存储数据很简单:像对待任何其他变量一样对待全局变量。
    区别在于对全局变量的操作是自动写入数据库的。

    创建全局变量

    创建新的全局变量不需要设置工作;只需将数据设置为全局变量即可隐式创建新的全局结构。可以创建全局变量(或全局变量下标)并通过单个操作将数据放入其中,也可以创建全局变量(或下标)并通过将其设置为空字符串将其保留为空。在ObjectScript中,这些操作是使用SET命令完成的。

    下面的例子定义了一个名为Color(如果还不存在)的全局变量,并将值“Red”与之关联。
    如果已经存在一个名为Color的全局变量,那么这些示例将其修改为包含新信息。

    在ObjectScript中:

    0 0
    0 71
    文章
    · 五月 4, 2021 阅读大约需 7 分钟
    第二章 全局变量结构(二)

    第二章 全局变量结构(二)

    全局变量物理结构

    全局变量使用高度优化的结构存储在物理文件中。管理此数据结构的代码也针对运行InterSystems IRIS的每个平台进行了高度优化。这些优化确保全局操作具有高吞吐量(每单位时间的操作数)、高并发性(并发用户总数)、缓存的高效使用,并且不需要与性能相关的持续维护(例如频繁的重建、重新索引或压缩)。

    用于存储全局变量的物理结构是完全封装的;应用程序不会以任何方式担心物理数据结构。

    全局变量存储在磁盘上的一系列数据块中;每个块的大小(通常为8KB)是在创建物理数据库时确定的。为了提供对数据的高效访问,InterSystems IRIS维护了一种复杂的B树状结构,该结构使用一组指针块将相关数据块链接在一起。InterSystems IRIS维护一个缓冲池-经常引用的块的内存缓存-以降低从磁盘获取块的成本。

    0 0
    0 110
    文章
    · 五月 3, 2021 阅读大约需 6 分钟
    第二章 全局变量结构(一)

    第二章 全局变量结构(一)

    本章描述全局变量的逻辑视图,并概述全局变量是如何在磁盘上物理存储的。

    全局变量的逻辑结构

    全局变量是存储在物理InterSystems IRIS®数据库中的命名多维数组。
    在应用程序中,全局变量到物理数据库的映射基于当前名称空间——名称空间提供一个或多个物理数据库的逻辑统一视图。

    全局命名约定和限制

    全局名称指定其目标和用途。有两种类型的全局变量和一组单独的变量,称为“进程私有全局变量”:
    - 全局变量 - 这就是所谓的标准全局变量;通常,这些变量被简称为全局变量。它是驻留在当前命名空间中的永久性多维数组。
    - 扩展全局引用-这是位于当前命名空间以外的命名空间中的全局引用。
    - 进程私有全局变量-这是一个数组变量,只有创建它的进程才能访问。

    全局变量的命名约定如下:

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

    第一章 简介global

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

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

    特点

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

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

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

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

    0 0
    0 202
    文章
    · 四月 30, 2021 阅读大约需 12 分钟
    第八章 解释SQL查询计划(二)

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

    SQL语句的详细信息

    有两种方式显示SQL语句的详细信息:

    • 在SQL Statements选项卡中,通过单击左侧列中的Table/View/Procedure Name链接选择一个SQL Statement。
      这将在单独的选项卡中显示SQL语句详细信息。
      该界面允许打开多个选项卡进行比较。
      它还提供了一个Query Test按钮,用于显示SQL Runtime Statistics页面。
    • 从表的Catalog Details选项卡(或SQL Statements选项卡)中,通过单击右边列中的Statement Text链接选择一个SQL语句。
      这将在弹出窗口中显示SQL语句详细信息。

    可以使用“SQL语句详细信息”显示来查看查询计划,并冻结或解冻查询计划。

    0 0
    0 143
    文章
    · 四月 29, 2021 阅读大约需 10 分钟
    第九章 冻结计划

    第九章 冻结计划

    大多数SQL语句都有一个关联的查询计划。查询计划是在准备SQL语句时创建的。默认情况下,添加索引和重新编译类等操作会清除此查询计划。下次调用查询时,将重新准备查询并创建新的查询计划。冻结计划使可以跨编译保留(冻结)现有查询计划。查询执行使用冻结的计划,而不是执行新的优化并生成新的查询计划。

    对系统软件的更改也可能导致不同的查询计划。通常,这些升级会带来更好的查询性能,但软件升级可能会降低特定查询的性能。冻结计划使可以保留(冻结)查询计划,以便查询性能不会因系统软件升级而改变(降级或提高)。

    0 0
    0 100
    文章
    · 四月 29, 2021 阅读大约需 3 分钟
    WebGateway系列(4): 配置HTTPS访问IRIS的Web服务

    经常被问到有关IRIS如何支持SSL,HTTPS的问题,有必要写个东西介绍一下。

    HTTPS的原理

    简单的说,https实现两个目的:一是访问网站加密,2是确认被访问的网站是真的。

    首先,被访问的网站要申请一个证书,这个证书必须是权威机构发放的,比如google, VeriSign等等,所有的浏览器里有预装了这些组织的公钥(Public Key),因此能确认你提供的证书真是这些组织给出的,而这个证书可以证明你的网站的身份。注意证书证明的是提供服务的组织和服务的真实性,和用什么设备没关系,也就是说,IRIS不管证书的事儿。

    接下去,被访问的服务器可以生成公钥和私钥,和客户端交换key,生成整个世界只有两者知道的security code,用来两者之间数据的交换。详细的过程和消息交互可以在网上找到很多很好的文章和视频,比如这个: How does HTTPS work? What's a CA? What's a self-signed Certificate?

    0 0
    0 345
    文章
    · 四月 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 110
    文章
    · 四月 27, 2021 阅读大约需 5 分钟
    第七章 解释SQL查询计划

    第七章 解释SQL查询计划

    本章介绍由ShowPlan生成的InterSystems SQL查询访问计划中使用的语言和术语。

    存储在映射中的表

    SQL表存储为一组映射。
    每个表都有一个包含表中所有数据的主映射;
    表还可以有其他的映射,如索引映射和位图。
    每个映射可以被描绘成一个多维全局,其中一些字段的数据在一个或多个下标中,其余字段存储在节点值中。
    下标控制要访问的数据。

    • 对于主映射,RowIDIDKEY字段通常用作映射下标。
    • 对于索引映射,通常将其他字段用作前导下标,将RowID/IDKEY字段用作附加的较低级别的下标。
    • 对于位图,可以将位图层视为附加的RowID下标级别。但是,位图只能用于为正整数的RowID

    发展计划

    编译SQL查询会生成一组指令来访问和返回查询指定的数据。
    这些指令表示为. int例程中的ObjectScript代码。

    0 0
    0 125
    文章
    · 四月 26, 2021 阅读大约需 9 分钟
    第六章 SQL性能分析工具包

    第六章 SQL性能分析工具包

    本章介绍可用于主动分析特定SQL语句的分析工具。这些工具收集有关这些SQL语句执行的详细信息。使用这些信息,开发人员可以采取措施提高低效SQL语句的性能。

    根据请求的详细程度,此活动分析可能会显著增加服务器上的负载。因此,SQL性能分析工具包旨在进行协调一致的代码分析工作。它不是用来连续监视执行代码的。

    分析工具界面

    SQL性能分析工具包为开发人员和支持专家提供了分析特定SQL语句或语句组的能力。通过在执行特定SQL语句期间使用这些工具,它们可以收集详细信息,这些信息可用于单独或跨活动工作负载分析有问题的语句。

    要记录的细节级别是可配置的,最细粒度的设置在模块级别收集信息,为语句的查询计划中的不同“步骤”提供信息。

    0 0
    0 86
    问题
    · 四月 24, 2021
    HealthConnect的启动问题

    修改过用户门户之后,重新启动就报这个错,然后使用自带的修复功能,修复之后依然报错,日志中显示没有C:\InterSystems\HealthConnect\mgr\IRIS.WIJ,我复制了别人的过来依然报错,由于代码没有做备份我不能重装,有没有什么办法修复一下,或者把代码备份一下,我再重装。

    0 2
    0 129
    文章
    · 四月 25, 2021 阅读大约需 10 分钟
    第五章 优化查询性能(四)

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

    注释选项

    可以在SELECTINSERTUPDATEDELETETRUNCATE表命令中为查询优化器指定一个或多个注释选项。
    注释选项指定查询优化器在编译SQL查询期间使用的选项。
    通常,注释选项用于覆盖特定查询的系统范围默认配置。

    语法

    语法/*#OPTIONS */(在/*#之间没有空格)指定了一个注释选项。
    注释选项不是注释;
    它为查询优化器指定一个值。
    注释选项使用JSON语法指定,通常是“key:value”对,例如: /*#OPTIONS {"optionName":value} */
    支持更复杂的JSON语法,比如嵌套值。

    0 0
    0 125

    数据库日志经常性出现如下日志,希望遇到过的朋友给出解决方法!

    04/13/21-07:21:28:522 (191540) 0 ECP: Lost net connection: Error 104=(Connection reset by peer)
    04/13/21-07:21:28:522 (191540) 1 ECP: connection from 'ECP1:HIS-AAA4:CACHE' dropped (1.1.1.1:14400)
    04/13/21-07:21:28:672 (198470) 0 ECP: Mirror Connection request from 'ECP1:HIS-AAA:CACHE' (1.1.1.1:14419)

    0 3
    0 154