文章 Jingwei Wang · 六月 20, 2022 8m read

安装Arbiter

为了将自动故障转移扩展到尽可能广泛的故障情况,InterSystems建议你为每个镜像配置一个仲裁机。

要充当仲裁者,系统必须有一个正在运行的ISCAgent进程。由于ISCAgent是与InterSystems IRIS一起安装的,任何承载一个或多个InterSystems IRIS实例的系统都符合这一要求,可以被配置为仲裁者而无需进一步准备;但是,承载一个或多个故障转移或DR异步镜像成员的系统不应该被配置为该镜像的仲裁者。

没有托管InterSystems IRIS实例的系统可以通过安装Arbiter方式的作为仲裁者。请从InterSystems公司下载适合你的仲裁者系统平台的ISCAgent安装包,然后,安装ISCAgent。

注意:Arbiter的版本要和InterSystems IRIS安装版本保持一致。

在Windows上安装Arbiter

在Windows系统上,只需执行安装文件,例如ISCAgent-2020.1.0.540.0-win_x64.exe。

在Linux上安装Arbiter

0
1 603
文章 姚 鑫 · 六月 19, 2022 3m read

第四章 锁定和并发控制(四)

避免死锁

增量锁定具有潜在危险,因为它可能导致称为死锁的情况。当两个进程各自对已被另一个进程锁定的变量断言增量锁定时,就会出现这种情况。因为尝试的锁是增量的,所以现有的锁不会被释放。结果,每个进程在等待另一个进程释放现有锁的同时挂起。

举个例子:

  1. 进程 A 发出此命令:lock + ^MyGlobal(15)
  2. 进程 B 发出此命令:lock + ^MyOtherGlobal(15)
  3. 进程 A 发出此命令:lock + ^MyOtherGlobal(15)

LOCK 命令不返回;进程被阻塞,直到进程 B 释放这个锁。

  1. 进程 B 发出此命令:lock + ^MyGlobal(15)

LOCK 命令不返回;进程被阻塞,直到进程 A 释放这个锁。但是,进程 A 被阻塞,无法释放锁。现在这些进程都在等待对方。

有几种方法可以防止死锁:

  • 始终包含 timeout 参数。
  • 对于发出增量 LOCK 命令的顺序,请遵循严格的协议。只要所有进程都遵循相同的锁名称顺序,就不会发生死锁。一个简单的协议是按排序顺序添加锁。
  • 使用简单锁定而不是增量锁定;也就是说,不要使用 + 运算符。如前所述,对于简单锁定,LOCK 命令首先释放进程持有的所有先前锁定。 (然而,在实践中,简单的锁定并不经常使用。)

如果发生死锁,可以使用管理门户或 ^LOCKTAB

锁的实际用途

0
0 151
文章 姚 鑫 · 六月 17, 2022 7m read

第三章 锁定和并发控制(三)

升级锁

使用升级锁来管理大量锁。当锁定数组的节点时,它们是相关的,特别是当将多个节点锁定在同一下标级别时。

当给定进程在同一数组中的给定下标级别创建了超过特定数量(默认为 1000)的升级锁时, 将删除所有单独的锁名称并用新锁替换它们。新锁位于父级,这意味着数组的整个分支被隐式锁定。示例(如下所示)演示了这一点。

应用程序应在合适的情况下尽快释放特定子节点的锁(与非升级锁完全相同)。当释放锁时, 会减少相应的锁计数。当的应用程序移除足够多的锁时,会移除父节点上的锁。第二小节显示了一个示例。

锁升级示例

假设有 1000^MyGlobal("sales","EU",salesdate) 形式的锁,其中 salesdate 表示日期。锁表可能如下所示:

注意 Owner 19776 的条目(这是拥有锁的进程)。 ModeCount 列指示这些是共享的、升级的锁。

当同一进程试图创建另一个相同形式的锁时, 会升级它们。它会移除这些锁并用名称为 ^MyGlobal("sales","EU") 的单个锁替换它们。现在锁表可能如下所示:

ModeCount 列表明这是一个共享的升级锁,它的计数是 1001

请注意以下关键点:

0
0 100
文章 姚 鑫 · 六月 16, 2022 4m read

第二章 锁定和并发控制(二)

关于零超时的说明

如上所述,如果您将 timeout 指定为 0, 会添加锁。但是,如果使用零超时锁定父节点,并且已经在子节点上锁定,则忽略零超时并使用内部 1 秒超时。

删除锁

要删除默认类型的锁,请使用 LOCK 命令,如下所示:

LOCK -lockname

如果执行此命令的进程拥有具有给定名称的锁(默认类型),则此命令将删除该锁。或者,如果进程拥有多个锁(默认类型),此命令将删除其中一个。

或者删除另一种类型的锁:

LOCK -lockname#locktype

其中 locktype 是一串锁类型代码。

LOCK 命令的其他基本变体

为了完整起见,本节讨论 LOCK 命令的其他基本变体:使用它来创建简单的锁并使用它来删除所有锁。这些变化在实践中并不常见。

创建简单的锁

对于 LOCK 命令,如果省略 + 运算符,LOCK 命令首先会删除该进程持有的所有现有锁,然后尝试添加新锁。在这种情况下,锁称为简单锁而不是增量锁。一个进程可以拥有多个简单的锁,如果该进程使用如下语法同时创建它们:

 LOCK (^MyVar1,^MyVar2,^MyVar3)

简单的锁在实践中并不常见,因为通常需要持有多个锁并在代码的不同步骤中获取它们。因此使用增量锁更实用。

0
0 64
文章 姚 鑫 · 六月 15, 2022 5m read

第一章 锁定和并发控制(一)

任何多进程系统的一个重要特征是并发控制,即防止不同进程同时更改特定数据元素的能力,从而导致损坏。 提供了一个锁管理系统。本文提供了一个概述。

此外,%Persistent 类提供了一种控制对象并发访问的方法,即 %OpenId() 的并发参数和该类的其他方法。这些方法最终使用本文讨论的 ObjectScript LOCK 命令。所有持久对象都继承这些方法。同样,系统会自动对 INSERTUPDATEDELETE 操作执行锁定(除非指定 %NOLOCK 关键字)。

%Persistent 类还提供方法 %GetLock()%ReleaseLock()%LockId()%UnlockId()%LockExtent()%UnlockExtent()

介绍

基本的锁定机制是 LOCK 命令。此命令的目的是延迟一个进程中的活动,直到另一个进程发出可以继续进行的信号。

锁本身并不能阻止活动行为。锁定仅按约定起作用:它要求相互竞争的进程都使用相同的锁定名称实现锁定。例如,下面描述了一个常见的场景:

0
0 97
公告 Claire Zheng · 六月 15, 2022

Hi 开发者们,
你或许已经知道了,今年InterSystems全球峰会线下会议再次开启!我们非常期待能在现场见到诸位! 

然而,并不是所有的开发者社区成员都有机会参加(我也是!)所以我们决定制作一个很酷的视频收集来自社区成员们问候🎥 
无论身在何方,让我们一同以虚拟方式来参加这次伟大的盛会吧!🌏 

⬆️要求:您录制一句2-3秒的短视频,视频内容是向我们的社区成员说 “Hi From your country (来自XX的问候,英语视频最佳)”,然后将视频上传至 这里 ,这样,我们可以把来自各地的许多视频剪辑在一起,在2022年全球峰会上展示。您也可以通过开发者社区联系我,将视频直接分享给我。

截止日期:美东时间6月18日(周五)

期待见到你!

0
0 87
文章 姚 鑫 · 六月 14, 2022 5m read

第九章 其他参考资料(二)

特殊变量 (SQL)

系统提供的变量。

$HOROLOG
$JOB
$NAMESPACE
$TLEVEL
$USERNAME
$ZHOROLOG
$ZJOB
$ZPI
$ZTIMESTAMP
$ZTIMEZONE
$ZVERSION

SQL直接支持许多对象脚本特殊变量。这些变量包含系统提供的值。只要可以在SQL中指定文字值,就可以使用它们。

SQL特殊变量名不区分大小写。大多数可以使用缩写来指定。

0
0 95
文章 Lilian Huang · 六月 14, 2022 3m read

这篇文章是上一篇文章的延续https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么?

在上一篇文章:https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么?  我们查验了什么是Production. 我们运行了示例代码,并在Visual Trace 页面查验了如何将流动消息的内容引入进Production中。

本文将回顾消息messages的概念和定义,和消息如何在系统集成所需的开发内容中用于组件之间发送和接收数据。

在创建一个Message消息之前,让我们回顾一个案例研究。

一家公司经营着一个购物网站,并且正在为了适应季节而改变显示的产品信息顺序。

0
0 211
文章 姚 鑫 · 六月 13, 2022 5m read

第八章 其他参考资料(一)

默认用户名和密码(SQL)

IRIS® 数据平台提供了用于登录数据库和开始使用的默认用户名和密码。默认用户名为“_SYSTEM”(大写),密码为“sys”。

SQLCODE错误代码(SQL)

执行大多数 SQL操作都会发出SQLCODE值。发出的SQLCODE值为0100和负整数值。

  • SQLCODE=0表示SQL操作成功完成。对于SELECT语句,这通常意味着从表中成功检索数据。但是,如果SELECT执行聚合操作(例如:SELECT SUM(Myfield)),则聚合操作成功,即使myfield中没有数据,也会发出SQLCODE=0;在这种情况下,SUM返回NULL%ROWCOUNT=1
  • SQLCODE=100表示SQL操作成功,但没有找到可操作的数据。发生这种情况的原因有很多。对于SELECT,这些包括:指定表不包含数据;表不包含满足查询条件的数据;或者行检索已到达表的最后一行。对于UPDATEDELETE,它们包括:指定的表不包含数据;或者表不包含满足WHERE子句条件的数据行。在这些情况下,%ROWCOUNT=0
  • SQLCODE=-n表示错误。负整数值指定发生的错误类型。SQLCODE=-400是通用的致命错误代码。

字段约束(SQL)

字段约束指定管理字段允许的数据值的规则。一个字段可能有以下约束:

0
0 187
文章 Frank Ma · 六月 13, 2022 2m read

这是一个在InterSystems IRIS中用python和objectscript建立的对比测试。

测试目的是比较在python和objectscript中从BP到BO来回发送一千条请求/消息的速度。

更多信息,请访问 https://github.com/LucasEnard/benchmark-python-objectscript

重要提示 : 这里用的是python, graph objectscipt和objectscript从一个BP到一个BO来回发送1000条消息的时间,单位是秒。

字符串信息是由十个字符串变量组成。

对象信息由十个对象变量组成,每个对象都是它自己的int、float、str和List(str)。

消息字符串1000条消息来回的时间 (秒)
Python BP1.8
BPL1.8
ObjectScript1.4
消息对象1000条消息来回的时间 (秒)
Python BP3.2
BPL2.1
ObjectScript1.8

行中函数的时间是列中函数的x倍 :

消息字符串PythonBPLObjectScript
Python111.3
BPL111.3
ObjectScript0.760.761
0
0 106
文章 Frank Ma · 六月 13, 2022 6m read

孕产妇风险可以通过一些医学界众所周知的参数来测量。这样,为了帮助医学界和计算机系统,特别是人工智能,科学家Yasir Hussein Shakir发布了一个非常有用的数据集,用于训练检测/预测孕产妇风险的机器学习(ML)算法。这份出版物可以在最大和最知名的ML数据库Kaggle上找到,网址是 https://www.kaggle.com/code/yasserhessein/classification-maternal-healt….

关于数据集

由于缺乏怀孕期间和怀孕后的孕产妇保健信息,许多孕妇死于怀孕问题。这在农村地区和新兴国家的中下层家庭中更为常见。在怀孕期间,应时刻注意观察,以确保婴儿的正常成长和安全分娩 (来源: https://www.kaggle.com/code/yasserhessein/classification-maternal-healt…).

数据是通过基于物联网的风险监测系统,从不同的医院、社区诊所、孕产妇保健机构收集而来。

0
0 310
文章 Frank Ma · 六月 13, 2022 10m read

肾脏疾病可以从一些医学界熟知的参数中发现。这样,为了帮助医学界和计算机系统,特别是人工智能,科学家Akshay Singh发表了一个非常有用的数据集,用于训练肾脏疾病检测/预测方面的机器学习(ML)算法。这份出版物可以在最大和最知名的ML数据库Kaggle上找到,网址是https://www.kaggle.com/datasets/akshayksingh/kidney-disease-dataset

关于数据集

该肾脏疾病数据集有以下元数据信息(来源:https://www.kaggle.com/datasets/akshayksingh/kidney-disease-dataset):

0
0 203
文章 姚 鑫 · 五月 12, 2021 4m read

第五章 管理全局变量(一)

管理门户提供管理全局变量的工具,系统类提供执行某些相同任务的方法。本章介绍如何使用这些工具。

一般建议

与ObjectScript命令SETMERGEKILL和其他命令一样,这里描述的工具提供了直接访问操作全局变量的权限。如果通过全局访问删除或修改,则会绕过所有对象和SQL完整性检查,并且没有撤消选项。因此,在执行这些任务时要非常小心,这一点很重要。(查看和导出不会影响数据库,并且是安全活动。)

使用本章中介绍的工具时,请确保以下事项:

  • IRIS使用哪些全局变量。并不是所有这些都被视为“系统”全局变量-也就是说,即使没有选中“系统”复选框,它们中的一些也是可见的。其中一些全局变量存储代码,包括的代码。
  • 确保知道应用程序使用哪些全局变量。

即使应用程序从不执行任何直接全局访问,应用程序也会使用全局变量。请记住,如果创建持久类,则它们的数据和任何索引都存储在全局变量中,全局变量的名称基于类名(默认情况下)。

“全局变量”页简介

管理门户包括全局页面,该页面允许管理全局。在此页上,可以执行以下操作:

  • 在该全局的行中选择View以检查它。
  • 在该全局的行中选择编辑以对其进行修改。
  • 选择导出以导出全局变量。
  • 选择导入以导入全局变量。
  • 选择删除以删除全局变量。
  • 选择查找以查找全局变量中的值。

此页还包括用于查看例程和类的选项;此处不讨论这些选项。

1
0 128
公告 Claire Zheng · 六月 13, 2022

SUTA培训是InterSystems专为SUTA有效期客户提供的原厂产品技术服务,具体包括产品的基础管理、编程管理、高级管理和开发培训等。即日起2022 SUTA培训报名启动,本年度为针对InterSystems数据平台产品的线上培训,一共6期12个课程,其中每期两个课程,时间安排在周五下午半天(6月24日—8月5号),6期培训总时长共计三天。点击此处报名,或者扫描下图中的二维码报名,在您的报名信息经过审核后,我们会与您进一步沟通线上培训细节。快来报名吧!

0
0 103
文章 姚 鑫 · 六月 12, 2022 5m read

第七章 日期和时间构造

验证和转换 ODBC 日期、时间或时间戳。

大纲

{d 'yyyy-mm-dd'}
{d nnnnnn}

{t 'hh:mm:ss[.fff]'}
{t nnnnn.nnn}

{ts 'yyyy-mm-dd [hh:mm:ss.fff]'}
{ts 'mm/dd/yyyy [hh:mm:ss.fff]'}
{ts nnnnnn}

描述

这些构造采用 ODBC 日期、时间或时间戳格式的整数或字符串,并将其转换为相应的 IRIS 日期、时间或时间戳格式。他们执行数据输入以及值和范围检查。

{d 'string'}

{d 'string'}日期构造验证 ODBC 格式的日期。如果日期有效,它将以 IRIS $HOROLOG 日期格式存储(逻辑模式)作为 1840-12-31 的整数计数值。 IRIS 不附加默认时间值。要支持早于 1840-12-31 的日期,必须在表中定义数据类型为 %Library.Date(MINVAL=-nnn) 的日期字段,其中 MINVAL 是从 1840-12-31 倒数的负天数(第 0 天)最大为 -672045 (0001-01-01)

0
0 194
文章 姚 鑫 · 六月 11, 2022 4m read

第六章 数据类型(五)

数据类型的整数代码

在查询元数据和其他上下文中,为列定义的数据类型可以作为整数代码返回。 CType(客户端数据类型)整数代码列在 %SQL.StatementColumnclientType 属性中。

ODBC 和 JDBC 使用 xDBC 数据类型代码 (SQLType)。 ODBC 数据类型代码由 %SQL.Statement.%Metadata.columns.GetAt() 方法返回,如上例所示。 SQL Shell 元数据还返回 ODBC 数据类型代码。 JDBC 代码与 ODBC 代码相同,除了时间和日期数据类型的表示。下面列出了这些 ODBC 和 JDBC 值:

0
0 85
文章 Michael Lei · 六月 11, 2022 2m read

在检查我们的^pButtons(在IRIS中改名为^SystemPerformance)性能监控工具的文档时,一位客户告诉我。"我理解所有内容,但我希望它能更简单......更容易定义配置文件,管理它们等等"。

在这次会议之后,我认为尝试为其提供一些更简单的人机界面是一个不错的试验。

这方面的第一步是在现有的pButtons例程上包裹一个基于类的API。

我还能够添加一些更多的 "功能",比如显示当前正在运行的配置文件,它们剩余的运行时间,以前运行的进程等等。

下一步是在这个API的基础上添加一个REST API类。

有了这个工件(pButtons REST API),人们就可以在上面建立一个比较时髦的用户界面。

举个🌰: -

0
0 161
文章 姚 鑫 · 六月 10, 2022 8m read

第五章 数据类型(四)

Strings

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

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

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

列表结构

IRIS 支持列表结构数据类型 %List(数据类型类 %Library.List)。这是一种压缩的二进制格式,不会映射到 SQL 的相应本机数据类型。在其内部表示中,它对应于数据类型 VARBINARY,默认 MAXLEN32749。 IRIS 支持列表结构数据类型 %ListOfBinary(数据类型类 %Library.ListOfBinary)对应于数据类型 VARBINARY,默认 MAXLEN4096

因此,动态 SQL 不能在 WHERE 子句比较中使用 %List 数据。也不能使用 INSERTUPDATE 来设置 %List 类型的属性值。

0
0 164
文章 姚 鑫 · 六月 9, 2022 6m read

第四章 数据类型(三)

日期、时间、PosixTime 和时间戳数据类型

可以定义日期、时间和时间戳数据类型,并通过标准 SQL 日期和时间函数相互转换日期和时间戳。例如,可以使用 CURRENT_DATECURRENT_TIMESTAMP 作为使用该数据类型定义的字段的输入,或者使用 DATEADDDATEDIFFDATENAMEDATEPART 来操作使用该数据类型存储的日期值。

数据类型类 %Library.Date%Library.Time%Library.PosixTime%Library.TimeStamp%MV.Date 对于 SqlCategory 的处理方式如下:

0
0 155
文章 Lucy Ma · 六月 9, 2022 3m read

当使用DeepSee工具来设计层级的时候,一个子级必须有且仅有一个父级。当出现一个子级对应两个父级的情况时,数据结果就有可能会不可靠。另一种情况是当两个相似的级别存在,它们的主键必须要做相应的变更以确保唯一性。我们接下来将通过两个案例来解释这两种情况是如何发生的以及如何避免。

案例1

在多个州里都会有一个城市叫做Boston。在我的样本数据里,我已经记录的与Boston对应的州有MA和Boston.NY。我的维度定义如下:

 

城市和州在这里都是简单的字符串格式。当构建到我的Cube中时,我会需要两个州级别成员:“MA”和“NY”,以及两个城市级别成员:“Boston”和“Boston”。为什么我需要两个Boston的城市级别成员而不是一个呢?因为一个级别成员不能有两个父级。所以我们需要创建两个分别的子级成员来对应各自的父级。遗憾的是,我们现在处于“糟糕的层级”场景,因为我们只有一个键值来对应两个不同的级别成员。

为了解决这个问题,我们需要使这个键值唯一。为了替代直接使用“城市”这个属性来作为这个级别的来源属性,我们可以使用来源表达式来将这个级别成员转化成唯一的。

 

这样就解决了唯一性的问题,但是会产程其他我们不想要的副作用。通过添加这样的表达式,我们可以在透视表中看到下面的结果:

 

0
0 242
文章 Michael Lei · 六月 9, 2022 2m read

业务服务Business Service/BS是能够支持我们从外部数据来源获取数据强大的组件,在在大多数情况下,内置的现成组件就已经可以完成这项工作,但有时候我们还是需要写编码来自定义业务服务。在这样做的时候,有一些最佳实践供大家参考。

 
  1. 精益求精--业务服务的代码应该是最小化处理。这是由于如果在业务服务中发生任何错误,将不发送任何消息,从而将不创建任何跟踪。这使得它很难进行故障排除。相反,要尽可能快地完成Ensemble消息,并将其传递给适当的目标。有些人认为,如果有一个流进来,Ensemble消息应该包括一个流属性,然后由一个业务流程来解析这个流。(见文档中的例子3)还有人说,只要包括良好的错误检查,最小的处理就可以了。在这两种情况下,请记住,数据转换是存在的,可以在业务流程中使用,以便对该数据做进一步的翻译。这些转换不应该被从业务服务中调用。(参见文档中的示例1)。
  2. 可配置的目标:--在大多数情况下,业务服务的代码应该是一个可配置的目标,而不是将其硬编码到业务服务中。要做到这一点,你可以在业务服务类中创建一个名为TargetConfigNames的属性,其类型为Ens.DataType.ConfigName,使用SETTINGS参数并将此设置放在配置页上。
0
0 176
文章 Jingwei Wang · 九月 28, 2021 5m read

本文档介绍了如何在 InterSystems IRIS®数据平台中使用 Java 网关(Gateway)与 Java 组件进行互操作。在本文中,您将首先创建一个示例 JAR 文件。然后,您将在 InterSystems IRIS 管理门户(Management Portal)中创建并启动 Java  网关(Gateway)。您将以编程方式导入创建的示例 JAR 文件。最后,您将在 ObjectScript 中创建并操作一些代理类(proxy class)和对象(object)。

为了让您体验 Java 网关(Gateway ),而又不陷入细节困境,我们保持了简单的探索。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 Java 网关(Gateway)引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 Java 网关(Gateway )的探索与真实的情况相混淆!本文档末尾提供的参考资料将使您对在生产中使用 Java 网关(Gateway)的情况有一个很好的了解。

要浏览所有的技术概要(First Look),包括下面描述的可以在免费的社区版(Community Edition)实例上执行的那些,请参见InterSystems 技术概要

为什么 Java 网关(Gateway)很重要

2
0 206
文章 姚 鑫 · 六月 8, 2022 4m read

第三章 数据类型(二)

SQL 系统数据类型映射

上表中为 DDL 和 IRIS 数据类型表达式显示的语法是为 SQL.SystemDataTypes 配置的默认映射。对于提供的系统数据类型和用户数据类型,有单独的映射表可用。

要查看和修改当前数据类型映射,请转到管理门户,选择系统管理、配置、SQL 和对象设置、系统 DDL 映射。

了解 DDL 数据类型映射

将数据类型从 DDL 映射到 IRIS 时,常规参数和函数参数遵循以下规则:

  • 常规参数 - 这些在 DDL 数据类型和 IRIS 数据类型中以 %# 格式标识。例如:
     VARCHAR(%1)

映射到:

     %String(MAXLEN=%1)

因此,DDL 数据类型为:

     VARCHAR(10)

映射到:

     %String(MAXLEN=10)
  • 函数参数 — 当 DDL 数据类型中的参数必须经过一些转换才能放入 IRIS 数据类型中时,使用这些参数。这方面的一个例子是将 DDL 数据类型的数值精度和比例参数转换为 IRIS 数据类型的 MAXVALMINVALSCALE 参数。例如:
     DECIMAL(%1,%2)

映射到:

0
0 101
文章 Hao Ma · 一月 30, 2021 4m read

IIS在Windows Server里是默认安装,在Windows7和Windows10里面需要用户到"控制面板>程序"里面找到"Turn Windows features on or off"的设置来启动。 本文假设IIS已经在用户的服务器上启动,并且正常工作。

通常情况下,当IRIS安装在Windows系统时,用户会在同一台机器上使用IIS,很少有单独安装一台IIS服务器给远程IRIS提供Web服务器的,当然这样也绝无问题。

有两个软件包可以安装CSP Gateway。一个是IRIS的安装包。在IRIS的安装过程中, 如果有IIS正在工作, 那么安装程序会自动的安装CSP Gateway。 2018年以前的Ensemble或者Cache'的版本的安装过程中会跳出一个询问框,让用户选择是否"安装CSP网关。。。”。而后来的版本大多不做询问而自动为用户做了选择。 如果需要强制安装或者不安装CSP Gateway,那么需要在安装中选"Customer Component"设置。

3
0 484
文章 Qiao Peng · 六月 8, 2022 7m read

01

智慧医院的本质

什么是智慧医院?

国家卫健委提出建设智慧医院的目的是要不断增强人民群众的获得感,要求医院的流程更便捷、服务更高效、管理更精细,主要聚焦于三大领域,面向医务人员的智慧医疗、面向患者的智慧服务以及面向管理的智慧管理。

如果从技术角度进行高度抽象,我们把智慧医院的本质浓缩为一点,就是为智慧的科学决策以及基于科学决策的业务执行闭环。在现实世界里,我们要从真实业务(调查研究)中获得决策依据,同时还要有决策的方法,把决策应用在现实世界上,来影响和改变现实世界。

 

02

科学决策的三个阶段

第一个时代是人工决策时代。我们医疗行业就是望闻问切,我们能拿到的数据非常有限,所以属于一个数据饥渴的时代。我们通过有限的数据来进行决策,非常容易落入我们经常批判的“三拍”型决策,“拍脑袋决策、拍胸脯保证、拍屁股走人”。显然这个决策效率不是很高。

人工决策时代:“数据稀缺”时代的决策

第二个时代是信息化时代。我们有了很多数据,能够把部分现实世界来进行数字化表达,我们也通过信息辅助人工决策进行智能决策,例如通过药品知识库推动合理用药,通过人工智辅助影像判断等等。

0
0 697
文章 姚 鑫 · 六月 7, 2022 9m read

第二章 数据类型(一)

指定 SQL 实体(如列)可以包含的数据类型。

描述

此处描述了以下主题:

  • 支持的 DDL 数据类型及其类属性映射表

  • 数据类型优先级用于从具有不同数据类型的数据值中选择最具包容性的数据类型

  • 日期、时间、PosixTime 和时间戳数据类型

    • 使用SqlCategory和用户定义的标准
    • 对 1840 年 12 月 31 日之前的日期的可配置支持
  • 支持字符串数据类型、列表数据类型和流数据类型

  • 支持 ROWVERSION 数据类型

  • IRIS® 数据平台 ODBC / JDBC 公开的数据类型

  • 使用查询元数据方法和数据类型整数代码确定列的数据类型

  • 创建用户定义的数据类型

  • 处理未定义的数据类型

  • 数据类型转换函数

数据类型指定列可以保存的值的种类。在使用 CREATE TABLEALTER TABLE 定义字段时指定数据类型。定义 SQL 字段时,可以指定下表(左列)中列出的 DDL 数据类型。当指定其中一种 DDL 数据类型时,它会映射到右侧列中列出的IRIS 数据类型类。在IRIS 中定义字段时,可以指定 DDL 数据类型或数据类型类。 DDL 数据类型名称不区分大小写。数据类型类名称区分大小写。 %Library 数据类型类可以通过全名(例如,%Library.String)或短名(%String)来指定。

0
0 147