文章
Qiao Peng · 三月 5, 2021 阅读大约需 3 分钟
Global 扫描和切片

Global 扫描和切片

这是一个在 IRIS 2020.1 和 Caché 2018.1.3 上工作的代码示例
不会与新版本保持同步
也不会获得 InterSystems 提供的支持服务!   

大多数情况下,默认存储使用的 global 只有 1 个表示 IDKEY 的下标级别。 对于索引 global,可能有 2 个或更多下标级别。

数组、父子关系或扩展了基础数据类的持久化类 是具有更多下标级别的示例。 但所有这些 global 都非常统一。

1 1
0 65
文章
姚 鑫 · 三月 10, 2021 阅读大约需 5 分钟
第七章 SQL表之间的关系

第七章 SQL表之间的关系

要在表之间强制执行引用完整性,可以定义外键。修改包含外键约束的表时,将检查外键约束。

定义外键

有几种方法可以在InterSystems SQL中定义外键:

  • 可以定义两个类之间的关系。定义关系会自动将外键约束投影到SQL。
  • 可以在类定义中添加显式外键定义(对于关系未涵盖的情况)。
  • 可以使用CREATE TABLEALTER TABLE命令添加外键。可以使用ALTER TABLE命令删除外键。

用作外键引用的RowID字段必须是公共的。引用隐藏的RowID?有关如何使用公用(或专用)RowID字段定义表的信息。

一个表(类)的外键最大数目为400。

0 0
0 65
文章
Johnny Wang · 十二月 12, 2021 阅读大约需 3 分钟
Ensemble 和 Caché 应该迁移至 InterSystems IRIS 的五个原因

您可能已经听说,我们目前正在为所有正在使用 Caché 和 Ensemble 的客户提供限时免费迁移到我们的下一代数据平台 InterSystems IRIS 的机会。

虽然我们依旧如往常一样全力支持那些正在使用 Caché 数据库和 Ensemble 集成引擎的客户,但我们还是认为 InterSystems IRIS 是未来的关键。它结合了 Caché 和 Ensemble 的所有功能,并添加了大量令人兴奋的强大功能,从机器学习到原生 Python。

这也正是我们为现有客户提供迁移到 InterSystems IRIS 并使用这些新功能的原因。 我们也通过就地迁移支持轻松迁移,这意味着无需数据库转换、分步迁移指南、教程等。

听起来挺有趣对吗? 以下是我针对当前 Caché 和 Ensemble 应迁移到 InterSystems IRIS 的五个主要原因。

0 0
0 64
文章
姚 鑫 · 三月 20, 2021 阅读大约需 5 分钟
第十二章 使用嵌入式SQL(四)

第十二章 使用嵌入式SQL(四)

SQL游标

游标是指向数据的指针,该数据允许嵌入式SQL程序对所指向的记录执行操作。通过使用游标,Embedded SQL可以遍历结果集。嵌入式SQL可以使用游标执行查询,该查询从多个记录返回数据。嵌入式SQL还可以使用游标更新或删除多个记录。

0 0
0 64
文章
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 63
文章
姚 鑫 · 三月 19, 2021 阅读大约需 11 分钟
第十二章 使用嵌入式SQL(三)

第十二章 使用嵌入式SQL(三)

主机变量

主机变量是将文字值传入或传出嵌入式SQL的局部变量。 最常见的是,主机变量用于将本地变量的值作为输入值传递给Embedded SQL,或者将SQL查询结果值作为输出主机变量传递给Embedded SQL查询。

主机变量不能用于指定SQL标识符,例如架构名称,表名称,字段名称或游标名称。主机变量不能用于指定SQL关键字。

  • 输出主机变量仅在嵌入式SQL中使用。它们在INTO子句中指定,INTO子句是仅嵌入式SQL支持的SQL查询子句。
  • 输入主机变量可以在嵌入式SQL或动态SQL中使用。在动态SQL中,还可以使用“?”向SQL语句输入文字。输入参数。这 ”?”语法不能在Embedded SQL中使用。

在嵌入式SQL中,可以在可以使用文字值的任何位置使用输入主机变量。使用SELECT或FETCH语句的INTO子句指定输出主机变量。

0 0
0 63

大家好!

不久前,我将SQL Runtime 统计中的配置更改为“Turn on Stats code generation to gather stats at the Open and Close of a query 。进行此更改后, CACHE的基础( cache / mgr / cache / )增长了很多,达到198GB

昨天,我将SQL运行时统计信息的配置恢复为默认值“关闭统计信息代码生成” ,并且缓存基数不再增长。

我的问题是?

如何删除在CACHE基础(cache / mgr / cache /)中创建的此数据,以及可以删除哪些数据而不影响系统。

谢谢,
法比奥(FábioLouly)。

0 0
0 63


InterSystems SQL为存储在IRIS数据库中的数据提供不折不扣的、标准的关系型访问。

InterSystems SQL具有以下优点。

高性能和可扩展性 - InterSystems SQL的性能和可扩展性优于其他关系型数据库产品。

与IRIS对象技术的集成 - InterSystems SQL与IRIS对象技术紧密集成。你可以混合使用关系型和对象型的数据访问,而不牺牲任何一种方法的性能。

低维护 - 与其他关系型数据库不同,IRIS应用程序不需要在部署的应用程序中重建索引和压缩表。

支持标准SQL查询 - InterSystems SQL支持SQL-92标准语法和命令。

0 0
0 61
文章
Jingwei Wang · 七月 14 阅读大约需 13 分钟
InterSystems SQL 的使用 - 第三部分 - 表

创建表

可以通过以下方式定义表:

  1. 通过DDL定义表
    • 使用任意数据库管理工具执行DDL(使用ODBC,JDBC连接)

    MyApp.Person表可以使用DDL CREATE TABLE语句来定义,指定SQL schema.table名称。成功执行这个SQL语句会生成一个相应的持久化类,包名MyApp,类名Person。当使用DDL命令定义一个表时,你不需要指定USEEXTENTSET或创建一个位图范围索引。InterSystems SQL会自动应用这些设置,并将它们包含在预测的持久化类中。默认情况下,CREATE TABLE在相应的类定义中指定了Final类的关键字,表示它不能有子类。

0 0
0 58
文章
姚 鑫 · 九月 9, 2021 阅读大约需 7 分钟
第十一章 SQL命令 CREATE PROCEDURE(二)

第十一章 SQL命令 CREATE PROCEDURE(二)

characteristics

用于创建方法的特征与用于创建查询的特征不同。

如果指定的特征无效,系统将生成SQLCODE -47错误。
指定重复的特征将导致SQLCODE -44错误。

可用的方法特征关键字如下:

0 0
0 56
文章
姚 鑫 · 三月 25, 2021 阅读大约需 11 分钟
第十三章 使用动态SQL(三)

第十三章 使用动态SQL(三)

执行SQL语句

有两种使用%SQL.Statement类执行SQL语句的方法:
- %Execute(),它执行以前使用%Prepare()%PrepareClassQuery()准备的SQL语句。
- %ExecDirect(),它同时准备和执行一条SQL语句。

也可以通过使用$SYSTEM.SQL.Execute()方法执行SQL语句而无需创建对象实例。此方法既准备又执行SQL语句。它创建一个缓存的查询。下面的终端示例显示Execute()方法:

0 0
0 56

你好!

我想知道,如果在没有运行%BuildIndices()方法的情况下向表中插入索引,是否会有问题。

需要注意的是,在索引之前插入的数据对于检索来说并不重要,所以在索引之前插入的数据在查询中不显示并不是问题。

我问这个问题的原因是,我想避免在需要插入这种索引的大表中进行索引重建。

我正在使用Cache 2018.1。

谢谢。

José

Hi!

I'd like to know if there are any issues if an index is inserted into a table without running the %BuildIndices() method.

It's important to note that data inserted before the index is not important for retrieval, so it's not a problem data inserted before the index don't show up in queries.

0 2
0 55

我有一个SQL查询,我想使用SQL外向适配器从Caché Ensemble针对MS SQL运行。如果我直接从MS SQL Studio运行此查询,则最多需要7秒钟的时间,并返回大约50万行。该行仅包含一列,它是一个大小均相同的数字,如果我在Ensemble生产环境中运行此查询,它将一直运行但不会返回响应。同样的查询在Enssemble环境外的caché中运行,将结果写入文件,返回的结果大约需要3分钟完成。但是如果我把结果加载到一个列表或记录图(Record Map)中,它就会一直运行下去。 能加载到记录图或列表中的数据行数是否有限制,是什么原因导致了这种情况的发生?这个查询所返回的文件大约是5.7MB。

SQL ODBC Connection query running longer than expected

0 0
0 55
文章
姚 鑫 · 三月 18, 2021 阅读大约需 6 分钟
第十二章 使用嵌入式SQL(二)

第十二章 使用嵌入式SQL(二)

嵌入式SQL代码

简单的SQL语句

可以将简单的SQL语句(单个嵌入式SQL语句)用于各种操作,包括:

  • INSERTUPDATEINSERT OR UPDATEDELETE语句。
  • `DDL语句。
  • GRANTREVOKE语句。
  • 只返回一行的SELECT语句(或者如果只对返回的第一行感兴趣)。

简单的SQL语句也被称为非基于游标的SQL语句。本章稍后将介绍基于游标的嵌入式SQL。

例如,以下语句查找ID为43的(唯一的)患者的姓名:

 &sql(SELECT Name INTO :name
    FROM Patient
    WHERE %ID = 43)

如果对可以返回多行的查询使用简单语句,则只返回第一行:

0 0
0 54
文章
姚 鑫 · 四月 22, 2021 阅读大约需 8 分钟
第五章 优化查询性能(一)

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

InterSystems SQL自动使用查询优化器创建在大多数情况下提供最佳查询性能的查询计划。该优化器在许多方面提高了查询性能,包括确定要使用哪些索引、确定多个AND条件的求值顺序、在执行多个联接时确定表的顺序,以及许多其他优化操作。可以在查询的FROM子句中向此优化器提供“提示”。本章介绍可用于评估查询计划和修改InterSystems SQL将如何优化特定查询的工具。

InterSystems IRIS®Data Platform支持以下优化SQL查询的工具:

0 0
0 51

关键字:IRIS, IntegratedML, 机器学习, Covid-19, Kaggle

目的

最近,我注意到一个用于预测 Covid-19 患者是否将转入 ICU 的 Kaggle 数据集。 它是一个包含 1925 条病患记录的电子表格,其中有 231 列生命体征和观察结果,最后一列“ICU”为 1(表示是)或 0(表示否)。 任务是根据已知数据预测患者是否将转入 ICU。

这个数据集看起来是所谓的“传统 ML”任务的一个好例子。数据看上去数量合适,质量也相对合适。它可能更适合在 IntegratedML 演示套件上直接应用,那么,基于普通 ML 管道与可能的 IntegratedML 方法进行快速测试,最简单的方法是什么?

范围

我们将简要地运行一些常规 ML 步骤,如:

0 0
0 51
文章
姚 鑫 · 五月 25, 2021 阅读大约需 7 分钟
第六章 从POP3服务器提取电子邮件

第六章 从POP3服务器提取电子邮件

从POP3服务器提取电子邮件

与POP3服务器通信

如果拥有所需的权限,并且邮件服务器正在运行,则可以使用POP3协议从该服务器下载和处理电子邮件。通常,要与POP3服务器通信,请登录,执行一系列影响邮箱的操作,然后提交或回滚任何更改。要在系统间IRIS中执行此操作,请执行以下操作:

0 0
0 51
文章
姚 鑫 · 三月 29, 2021 阅读大约需 16 分钟
第十三章 使用动态SQL(七)

第十三章 使用动态SQL(七)

SQL元数据

动态SQL提供以下类型的元数据:
- 在“准备”之后,描述查询类型的元数据。
- 在“准备”之后,描述查询中选择项的元数据(“列”和“扩展列信息”)。
- 在准备之后,描述查询参数的元数据:参数,:var参数和常量。 (语句参数,形式参数和对象)
- 执行之后,描述查询结果集的元数据。在执行Prepare操作(%Prepare()%PrepareClassQuery()%ExecDirect())之后,可以使用%SQL.StatementMetadata属性值。
- 可以直接为最新的%Prepare()返回%SQL.Statement元数据属性。
- 可以返回包含%SQL.StatementMetadata属性的oref的%SQL.Statement%Metadata属性。这使可以返回多个准备操作的元数据。

0 0
0 50

在Ensemble中使用SQL进行批量插入
你好,社区。

我试图在一个表中插入多个值。下面是简单的SQL语句。

插入到表X中

values ('Name', 'Address', 'Phone')

我怎样才能在一条语句中进行多次插入(行)?

数值不在另一个表中,所以我不能使用选择进入。

谢谢。

吉米-克里斯蒂安

Hello Community,

I am trying to insert multiple values in a table. Below is the simple sql statement.

Insert Into TableX

values ('Name', 'Address', 'Phone')

0 1
0 50