搜索​​​​

清除过滤器
文章
Louis Lu · 十一月 2, 2021

IRIS 2021 技术文档 First Look 15 -- 使用 XEP 实例化存储 Java 对象

本文档介绍了 XEP API(com.intersystems.xep),它提供了在 InterSystems IRIS®数据平台上极其快速的对Java 对象存储和检索的能力。文档概述了使用 XEP 将 Java 对象持久化的方法,并引导您通过一个简单的场景来演示该API 的主要功能。 这些演示的内容、只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节问题。有关 XEP 的完整文档,请参见 Persisting Java Objects with InterSystems XEP(《使用 InterSystems XEP 持久化 Java 对象》)。 要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。 快速的 Java 对象存储和检索 Java 是一种面向对象的语言,因此对于 Java 应用程序来说,将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会出现问题。如果您使用 JDBC 来存储和检索对象,您就面临着将对象数据转换为一组关系表,然后再将查询结果集转化为对象的问题。这个问题的通常解决方案是使用对象-关系映射(ORM)框架——如 Hibernate——来自动化这个过程。InterSystems IRIS 提供了一个标准的 Hibernate 接口,InterSystems 推荐它用于大型、复杂的对象层次结构。 另一方面,对于执行实时数据采集等任务的应用程序,主要问题是速度而不是数据复杂性。虽然 Hibernate 绝对不慢(如果适当优化的话),但对于需要极其快速地存储和检索简单或中等复杂数据的任务来说,XEP 是一个更好的选择。在大多数情况下,它将比 Hibernate 或 JDBC 快得多。 XEP 是如何工作的? XEP 是一个轻量级的 Java API,它将 Java 对象数据作为持久化事件(persistent event)来处理。持久化事件(persistent event)是 InterSystems IRIS 类(通常是 %Persistent 的子类)的一个实例,包含 Java 对象中数据字段的副本。与任何此类实例一样,可以通过对象访问、SQL 查询或直接 global 访问来检索它。 在创建和存储持久化事件(persistent event)之前,XEP 必须分析相应的 Java 类,并将 schema 导入数据库。Schema 定义了用于存储 Java 对象的持久化事件类的结构。如果持久化事件类还不存在,导入 schema 将自动为其创建数据库定义。来自分析的信息可能是 XEP 导入 schema 所需要的全部信息。对于更复杂的结构,您可以提供额外的信息,允许 XEP 生成索引并覆盖导入字段的默认规则。 在为类创建 schema 之后,您可以使用各种 XEP 方法来存储、更新或删除事件、运行 SQL 查询,并遍历查询结果集。 试一试!XEP 的实际操作 现在是您自己尝试 XEP 的时候了。这个 XepSimple 演示是一个非常小的程序,但它提供了大多数重要的XEP 功能的示例,并概述了如何使用 XEP API。 想试试 InterSystems IRIS Java 开发和互操作性功能的在线视频演示吗?请查看 Java QuickStart(Java 快速入门)! 用前须知 要使用该程序,您需要在一个系统上安装 JDK 1.8 版本和任意的 Java IDE,并连接一个正在运行的 InterSystems IRIS 实例。您对 InterSystems IRIS 的选择包括多种已授权的和免费的评估实例;实例不需要是您正在工作的系统(尽管它们必须具有网络访问权限)。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。使用同一文档中的 InterSystems IRIS Connection Information(InterSystems IRIS 连接信息)和 Java IDE 中的信息,将 IDE 连接到您的 InterSystems IRIS 实例。 添加示例代码 下面的演示向您演示如何使用 XEP 和 InterSystems IRIS。XepSimple 演示是一个非常小的程序,但它提供了大多数关键 XEP 功能的示例,并概述了如何使用 XEP API。 您可以阅读这里列出的代码,或者您可以从 InterSystems GitHub 存储库下载并自己运行它。下载的内容包括一个 ReadMe,其中包含开始时需要的所有信息。 演示程序分为四个部分,每个部分演示四个主要 XEP 类中的一个:EventPersister、Event、EventQuery 和 EventQueryIterator: class XepSimple package xepsimple; import com.intersystems.xep.*; import xep.samples.SingleStringSample; public class XepSimple { public static void main(String[] args) throws Exception { // Generate 12 SingleStringSample objects for use as test data SingleStringSample[] sampleArray = SingleStringSample.generateSampleData(12); // EventPersister EventPersister xepPersister = PersisterFactory.createPersister(); xepPersister.connect("127.0.0.1",51773,"User","_SYSTEM","SYS"); // connect to localhost xepPersister.deleteExtent("xep.samples.SingleStringSample"); // remove old test data xepPersister.importSchema("xep.samples.SingleStringSample"); // import flat schema // Event Event xepEvent = xepPersister.getEvent("xep.samples.SingleStringSample"); for (int i=0; i < sampleArray.length; i++) { SingleStringSample sample = sampleArray[i]; // array initialized on line 8 sample.name = "Sample object #" + i; xepEvent.store(sample); System.out.println("Persisted " + sample.name); } // EventQuery String sqlQuery = "SELECT * FROM xep_samples.SingleStringSample WHERE %ID BETWEEN ? AND ?"; EventQuery<SingleStringSample> xepQuery = xepEvent.createQuery(sqlQuery); xepQuery.setParameter(1,3); // assign value 3 to first SQL parameter xepQuery.setParameter(2,12); // assign value 12 to second SQL parameter xepQuery.execute(); // get resultset for IDs between 3 and 12 // EventQueryIterator EventQueryIterator<SingleStringSample> xepIter = xepQuery.getIterator(); while (xepIter.hasNext()) { SingleStringSample newSample = xepIter.next(); newSample.name = newSample.name + " has been updated"; xepIter.set(newSample); System.out.println(newSample.name); } xepQuery.close(); xepEvent.close(); xepPersister.close(); } // end main() } // end class XepSimple XepSimple 执行以下任务: 首先,通过调用示例数据类(sample data class) xep.samples.SingleStringSample 的方法生成一些示例对象。 EventPersister 是 XEP 的主要入口点(main entry point),并提供到数据库的连接。 它创建一个名为 xepPersister 的实例,该实例建立到数据库的连接并删除任何现有的示例数据。然后调用 importSchema() 来分析示例类并将 schema 发送到数据库,进而扩展空间保存持久化 SingleStringSample 对象。 EventPersister 包含连接 InterSystems IRIS 实例所需信息——主机名、端口、IRIS命名空间、用户名和密码。使用实例的正确信息更新它们,如 InterSystems IRIS Basics:Connecting an IDE( 《InterSystems IRIS 基础:连接一个 IDE》)中的 InterSystems IRIS Connection Information(InterSystems IRIS 连接信息)所述,这与您用来连接 IDE 和实例的信息相同。可以指定使用 USER 命名空间,或者使用您在已安装的实例中创建的另一个命名空间。如果实例是本地安装的,并且连接使用 localhost 作为服务器地址,程序将使用本地共享内存连接,这比标准的 TCP/IP 连接还要快。 Event 封装了(encapsulate) Java 对象和相应的数据库对象之间的接口。 一旦生成了 schema ,xepPersister 就可以为示例类创建一个名为 xepEvent 的 Event 对象。在循环中,SingleStringSample 的每个实例都将被修改,然后被持久化到数据库中。 xepEvent store() 方法使用了xepPersister 中定义的连接和 schema。 EventQuery 用于准备和执行 SQL 查询。 名为 xepQuery 的 EventQuery<SingleStringSample> 对象是通过将查询字符串传递给 xepEvent 对象的 createQuery() 方法创建的。 该字符串定义了一个接受两个参数(? 字符)的 SQL 查询。 参数值是通过调用 setParameter() 定义的,调用 execute() 可查询结果集。 EventQueryIterator 用于从结果集中读取行,并更新或删除相应的持久化对象。 现在 xepQuery 包含了查询结果集,可以通过调用 getIterator() 为它创建一个名为 xepIter 的迭代器。在循环中,迭代器的 next() 方法被用来获取每一行数据并将其分配给 SingleStringSample 对象。然后修改对象,迭代器的 set() 方法更新数据库中相应的持久化对象。 当处理完成后,它通过调用 XEP 对象的 close() 方法进行清理。 SingleStringSample 类 如果您感兴趣,下面是我们的示例类列表: 了解有关 XEP 和对象持久化的更多信息 xep.samples.SingleStringSample public class SingleStringSample { public String name; public SingleStringSample() {} SingleStringSample(String str) { name = str; } public static SingleStringSample[] generateSampleData(int objectCount) { SingleStringSample[] data = new SingleStringSample[objectCount]; for (int i=0;i<objectCount;i++) { data[i] = new SingleStringSample("single string test"); } return data; } } 之所以选择这个类,部分原因是在 XEP 生成 schema 之前不需要添加标注 annotation。大多数类都需要一个或多个标注来进行 schema 优化(这超出了本文的讨论范围)。 下一步 XepSimple 演示的目的是让您体验 XEP,而又不陷入细节困境,它并非用于实际生产代码的模型——它甚至没有进行异常检查。最重要的简化是在示例数据中。您不需要标注或其他机制来帮助 schema 的生成和优化,类持久化了一些很小的 Java 对象。实际应用程序通常需要一些标注(尽管通常比 Hibernate 少)。 当您把 XEP 引入生产系统时,您将需要了解 XEP 为提要优化、索引控制、批量加载和其他重要任务提供的全部工具 。主要的 XEP 书籍 Persisting Java Objects with InterSystems XEP (《使用 InterSystems XEP 持久化 Java 对象》)对这些功能进行了全面描述。本文档末尾列出的参考资料描述了 InterSystems IRIS 对 Java 支持的其他方面。 了解有关 XEP 和对象持久化的更多信息 要了解有关 Java 对象持久化和其他 InterSystems Java 互操作性技术的更多信息,请参见: First Look: JDBC and InterSystems Databases(《技术概要:JDBC 和 InterSystems 数据库》)介绍了如何通过 JDBC 连接到 InterSystems IRIS:它提供了产品简介、特殊功能介绍,以及一个亲自尝试的机会。这是一个简单了解并熟悉 InterSystems IRIS 对 Java 支持的起点。 Using Java with the InterSystems JDBC Driver (《在 InterSystems JDBC 驱动程序中使用 Java》)中的 “InterSystems Java Connectivity Options(InterSystems Java 连接选项)”概述了 JDBC 驱动程序支持的所有 InterSystems IRIS Java 技术。 InterSystems IRIS 提供了 Java API,通过 SQL 表、对象和多维存储轻松访问数据库。有关每种类型访问的详细信息,请参见以下书籍: Using Java with the InterSystems JDBC Driver(《在 InterSystems JDBC 驱动程序中使用 Java》)进行 SQL 表访问。InterSystems JDBC 驱动程序允许 InterSystems IRIS 建立到外部应用程序的 JDBC 连接,并通过 SQL 提供对外部数据源的访问。 Using the Native API for Java(《使用 Native API for Java》)进行本机多维存储访问。InterSystems IRIS 本机 API 允许您直接访问本机基于树的多维存储数据结构,这些结构是 InterSystems IRIS 对象和 SQL 表接口的基础 Persisting Java Objects with InterSystems XEP(《使用 InterSystems XEP 持久化 Java 对象》)进行对象访问。XEP 针对事务处理应用程序进行了优化,这些应用程序处理简单到中等复杂的对象层次结构,并需要极快的对象数据持久化和检索。 Implementation Reference for Java Third Party APIs(《Java 第三方 API 的实施参考 》)中的 "Hibernate Support(Hibernate 支持)"描述了 InterSystems IRIS 的 Hibernate 实现。这个实现了对 Java Persistence Architecture(JPA)的支持,这是推荐用于 Java 项目中大型、复杂对象层次结构的持久化技术。
公告
Claire Zheng · 三月 10, 2021

诚邀您参加 InterSystems编程大奖赛获奖成员线上见面会!

亲爱的社区开发者, 我们诚挚邀请您参加 InterSystems编程大奖赛获奖成员线上见面会! 时间: 周五(2021年3月12日)-22:00(北京时间) 在此次线上见面会,您可以: 了解获胜者的个人履历 观看获奖应用的简短demo 针对此次大奖赛使用到的技术、奖金和各类疑问,您可以畅所欲言,各抒己见,为下一次竞赛做准备! 线上见面会参与成员: @Dmitriy Maslennikov, CaretDev Corp联合创始人、首席技术官和开发者倡导者, @José Roberto Pereira, Shift Consultoria e Sistemas Ltda BI开发者 @Henrique Dias, Sao Paulo Federal Court 系统管理专家/数据库管理员 @Botai Zhang, 中国开发者 @Weiwei Yang, 中国开发者 @Evgeny Shvarov, InterSystems 开发者生态系统经理 您还将有机会在一个特别的网络研讨会上向我们的开发人员提出任何问题。 欢迎您参加线上见面会! 现在就来报名吧! 什么时候搞中国自己的? Good question! 想围观中国获奖成员线上见面会的给Michael点赞
文章
he hf · 十月 8, 2022

10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用

安装InterSystems IRIS数据库的ODBC驱动,在Windows系统中配置数据源后,可以使用Microsoft Visual Studio 开发工具 中的服务器资源管理器很方便地连接到InterSystems IRIS数据库服务器,利用数据库连接的可视化视图,可以非常方便快捷地进行连接到InterSystems IRIS数据库的应用开发。本文将展示一个利用以上方式实现的例子,开发工具为Microsoft Visual Studio 2019,开发语言为C#,10分钟快速开发实现一个连接到InterSystems IRIS数据库的C#应用,在本例子中,可以通过选择日期和科室,查询指定日期和科室的就诊日志。 1、在成功安装InterSystems IRIS数据库的ODBC驱动后,从Windows的“控制面板”中选择“管理工具”,在“管理工具”中选择“ODBC数据源”。 2、在ODBC数据源管理的“用户DSN”标签下,选择“添加”,在随后弹出的“创建新数据源”窗口中选择“InterSystems ODBC”,点击“完成”进入下一步。 3、在弹出的“InterSystems ODBC数据源设置”窗口中,为数据源命名,填写连接数据库的信息,访问用户名和密码,点击“测试连接”,成功后点击“OK”保存。 4、打开Microsoft Visual Studio 2019,选择“文件”->“新建”->“项目” ,在弹出的创建新项目窗口中,选择C#语言、Windows窗体应用。 5、新建项目完成后,在 Microsoft Visual Studio 2019开发工具的菜单栏选择“视图”->“服务器资源管理器”,右键“服务器资源管理器”视图中的“数据连接”,在弹出的“添加数据库连接”窗口中,指定在3中已经新建好的数据源,点击“测试连接”,测试连接成功后,点击“确定”关闭窗口,在“服务器资源管理器”视图中的“数据连接”中可以看到添加成功的数据库连接,选中数据库后可以展开其中的表。 6、在本例子中,将介绍两种数据库查询操作方式,其一为常见使用SQL语句的方式,其二为添加数据集的方式,添加数据集的操作如下:从菜单栏选择“视图”->“其他窗口”->“数据源”,在“数据源”视图中点击“添加新数据源”,选择数据库后,可以为数据集添加绑定数据库的表,如为本例中Loc1(科室)数据集成功添加绑定CT_Loc表后,可以在可视化视图中查看数据表数据,并可以被Form可视化窗体中添加的控件直接使用。 7、在Form可视化窗体设计器中,通过工具箱视图添加3个Label控件,分别显示应用标题、日期和科室,再添加1个DateTimePicker日期/时间选择器,并在其CustomFormat属性中设置日期/时间格式“yyyy-MM-dd”,用于选择查询日期;1个ComboBox下拉列表选择框,用于选择查询科室;1个Button按钮,用于执行查询;一个DataGridView数据网格视图,用于显示查询结果。 8、选中ComboBox下拉列表选择框控件,点击控件中右上角出现的箭头,弹出ComboBox数据绑定窗口,勾选“使用数据绑定项”,之后选择6中添加的数据集Loc1,设置“显示成员”为“科室名称”字段,“值成员”为“科室ID”字段,“选定值”为“科室ID”,上述操作便完成了ComboBox控件直接使用数据集的设置。 9、点击项目启动按钮,点击选择科室的下拉列表框,可以看到科室列表,由此可以看出,通过上面6、7、8三个步骤的简单操作,即完成了C#窗体控件与已添加的数据集的快速绑定,实现了查询IRIS数据库的快速操作。 10、最后双击窗体中的“查询科室日志”按钮,在按钮点击事件函数中,添加通过SQL语句查询IRIS数据库的代码,并通过DataGridView的DataSource属性将SQL语句的查询结果绑定到DataGridView数据网格视图。完成后,再次运行项目,可以实现通过选择日期和科室,查询指定日期和科室的就诊日志。 附上项目的核心代码,少部分细节地方参见代码中注释部分: Form1.cs //C#窗体及控件加载和操作代码 using System; using System.Windows.Forms; namespace QuickApp1 { public partial class Form1 : Form { //新建IRIS数据库的ODBC连接对象 ODBCHelper1 dBCHelper1 = new ODBCHelper1(); //避免comboBox数据未绑定时的异常退出 bool cmbFlag = false; public Form1() { InitializeComponent(); } private void Loc_comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //排除窗体未加载时comboBox数据未绑定时的异常退出错误 try { if (cmbFlag && !String.IsNullOrEmpty(Loc_comboBox1.SelectedValue.ToString())) { string selectLoc = Loc_comboBox1.SelectedValue.ToString(); } } catch (Exception) { ; } } //按钮点击事件 private void findAdmListBtn1_Click(object sender, EventArgs e) { //取日期选择器的日期 string selectDate = dateTimePicker1.Text.ToString(); //取科室下拉选择框的科室 string selectLoc = Loc_comboBox1.SelectedValue.ToString(); //通过SQL语句查询IRIS数据库 string sql = "SELECT A.PAADM_DepCode_DR->CTLOC_Desc 科室, A.PAADM_PAPMI_DR->PAPMI_Name 患者姓名,decode(A.PAADM_PAPMI_DR->PAPMI_Sex_DR,1,'女',2,'男','未知') 性别,A.PAADM_AdmDocCodeDR->CTPCP_Desc 医生姓名, A.PAADM_ADMNo 就诊流水号,A.PAADM_AdmDate 就诊日期,A.PAADM_AdmTime 就诊时间 FROM PA_Adm A WHERE A.PAADM_AdmDate =" + "'" + selectDate + "'" + "AND A.PAADM_DepCode_DR = " + "'" + selectLoc + "'"; //通过DataGridView的DataSource属性将SQL语句的查询结果绑定到DataGridView数据表格视图 this.dataGridView1.DataSource = dBCHelper1.CacheExeQuery(sql); } private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { //为DataGridView数据表格添加行序号 try { for (int i = 0; i < dataGridView1.Rows.Count; i++) this.dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString(); } catch { MessageBox.Show("处理异常:表格行序号添加异常"); } } private void Form1_Load(object sender, EventArgs e) { //窗体加载时处理 // TODO: 这行代码将数据加载到表“loc1.CT_Loc”中。您可以根据需要移动或删除它。 this.cT_LocTableAdapter.Fill(this.loc1.CT_Loc); cmbFlag = true; } } } ODBCHelper1.cs //ODBC数据库连接公共类 using System.Data; using System.Data.Odbc; namespace QuickApp1 { internal class ODBCHelper1 { //ODBC连接格式化字符串,将Dsn(连接名称)、Server(IRIS服务器IP)、Port(端口)、DataBase(数据库)、Uid(用户名)、Pwd(用户名)换成你自己的。 public static string conString = "Dsn=irisxxx;Server=xxx.xxx.xxx.xxx;Port=xxxx;DataBase=xxxx;Authentication method=0;Uid=xxxxxx;Pwd=******;static cursors=0;query timeout=0;unicode sqltypes=0;"; public DataTable CacheExeQuery(string sql) { using (OdbcConnection con = new OdbcConnection(conString)) { using (OdbcCommand cmd = new OdbcCommand(sql, con)) { using (OdbcDataAdapter da = new OdbcDataAdapter(cmd)) { DataTable dt = new DataTable(); con.Open(); da.Fill(dt); return dt; } } } } } } 好文! 快速开发、快速接入、快速应用、良好兼容,轻量级开发的好平台。 感谢分享 赞,值得学习 简单实用,学习了。 感谢分享!刚上班的小白接触感觉很有用
文章
Michael Lei · 十月 10, 2022

如何在 CI/CD 里管理InterSystems API Manager (IAM)/ Kong API GATEWAY 配置?

Kong提供了一个开源的配置管理工具(用Go语言编写),称为decK(即声明式Kong,declarative Kong)。 通过deck ping检查deck是否能识别你的Kong Gateway安装 deck ping Successfully connected to Kong! Kong version: 2.3.3.2-enterprise-edition 通过deck dump把 Kong Gateway 配置导出到一个叫 "kong.yaml" 的文件 deck dump 修改kong.yaml文件后, 通过 deck diff 显示区别 deck diff updating service alerts { "connect_timeout": 60000, - "host": "172.24.156.176", + "host": "192.10.10.18", "id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64", "name": "alerts", "path": "/alerts", "port": 50200, "protocol": "http", "read_timeout": 60000, "retries": 5, "write_timeout": 60000 } Summary: Created: 0 Updated: 1 Deleted: 0 通过 deck sync 应用变化 deck sync updating service alerts { "connect_timeout": 60000, - "host": "172.24.156.176", + "host": "192.10.10.18", "id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64", "name": "alerts", "path": "/alerts", "port": 50200, "protocol": "http", "read_timeout": 60000, "retries": 5, "write_timeout": 60000 } Summary: Created: 0 Updated: 1 Deleted: 0 deck sync -s workspace1.yaml --workspace workspace1 deck sync -s workspace2.yaml --workspace workspace2 需要更多信息 : https://docs.konghq.com/deck/1.11.x/guides/getting-started/ https://docs.konghq.com/deck/1.11.x/guides/best-practices/
文章
Louis Lu · 四月 9, 2022

基于Redhat Linux安装InterSystems IRIS 的服务器内存相关参数配置建议

注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。 主要需要设置下面几个内存相关配置: (下面比例适用于服务器仅运行单实例InterSystems IRIS)数据库缓存Database cache: 建议小于64G内存设置总内存50%,大于等于64G内存设置70%总内存程序缓存routine cache: 建议设置1023MBgmheap: 建议设置1048576KB(1024MB)LockSize: 建议最少设置134217728 Bytes (128MB),如果在系统日志中提示locksize相关错误或警报,应相应增加。 如果在一台服务器上安装了多个InterSystems IRIS 实例,那么要保证 所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值小于 Hugepage设定的值 hugePages : 建议设置值大于系统所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值再往上取整+1G。之后监控cache efficiency 调整设置大小。 要注意对于繁忙的系统,需要为除IRIS之外系统预留足够内存。比如主要负责系统集成、使用JavaGateway等会使用多个外部进程,需要为其预留足够内存。 比如要设置Huge pages 大小为12G。 如果Hugepagessize为2048KB,那么设置HugePage_Total=12*1024*1024/2048=6144 echo "vm.nr_hugepages=6144" >> /etc/sysctl.conf 禁用Transparent HugePages (THP) 检查状态 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 或者 # cat /sys/kernel/mm/transparent_hugepage/enabled 设置禁用THP 1. 在/etc/grub.conf文件中添加 transparent_hugepage = never 2. 重启服务器 Kernel shared Memory Limit: 检查该值设置要大于hugePages的值,在/etc/sysctl.conf 文件中查找kernel.shmmax 的内容 swappiness 建议该值设置为5 echo "vm.swappiness=5" >> /etc/sysctl.conf Dirty Page Cleanup echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
文章
Michael Lei · 八月 31, 2021

InterSystems被独立研究机构Forrester评为多模型数据平台领导者

InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分 转载自Forester 报告: InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。" Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report
公告
jieliang liu · 五月 21, 2021

Java业务主机现在已经不再使用

随着InterSystems IRIS 2020.1和InterSystems IRIS for Health 2020.1中PEX的发布,客户有了比Java Business Host更好的方式来构建Java的产品。PEX为构建互操作性组件提供了一套完整的API,并有Java和.NET两种版本。 从InterSystems IRIS和InterSystems IRIS for Health的2020.4版本开始,Java Business Host已经被删除。 我们鼓励使用Java商业主机的客户迁移到PEX。 PEX的优势 * 允许开发人员在Java或.NET中创建任何生产组件 * 组件之间可以传递更复杂的消息结构 * 简化设置 * S简化了开发工作流程,无需使用ObjectScript。 关于迁移到PEX的更多信息,请参见从Java Business Host迁移到PEX。
文章
Claire Zheng · 一月 4, 2023

【GS22 视频】智能数据编织:重塑数据利用方式,激活创新!

InterSystems 2022年全球峰会上,InterSystems 数据平台负责人 Scott Gnau解读了智能数据编织(smart data fabric)及其实现方式。Scott 同时也是一位钢笔收藏家,他分享了自己学习收藏的过程,认为这种过程与智能数据编织有着异曲同工之妙。InterSystems IRIS数据平台的诸多优秀能力可以帮助用户实现智能数据编织,重塑数据利用方式!
公告
jieliang liu · 七月 5, 2023

[视频] 为什么横向扩展就像团队合作

嗨,开发者, 欣赏InterSystems Bilibili上的新视频: ⏯为什么水平可扩展性就像团队合作 @ 2022 年全球峰会 借助 InterSystems IRIS,您可以跨节点集群分配数据和工作负载、扩展和扩展以及根据需要动态重新平衡。在本次会议中,您将了解有关该技术和我们的一些部署的更多信息。 🗣演讲者:@Benjamin.DeBoe,InterSystems 产品经理 享受它并保持关注! 👍
问题
Michael Lei · 三月 1, 2022

如何重置 Web Gateway 用户名和密码

Hi Community, C:\InterSystems\IRISHealth\CSP\bin.csp.cni 有用户名, 但密码被加密了,如何解密或者重置? 谢谢! 1. Open <IRIS>\CSP\bin\CSP.ini 2. Edit Username/Password in [LOCAL] section. 3. Using Management Portal or ^SECURITY routine set the same user as (2) if they do not match. 4. Restart InterSystems IRIS.
问题
nianpeng qu · 五月 11

VSCode中安装InterSysTems Language Server后,EXPLORER资源树中如何快速检索文件

VSCode中安装InterSystems Language Server后,EXPLORER资源树使用Ctrl+F可以打开文件检索框,快速检索文件。 不知是VSCode版本更新不支持了,还是InterSystems Language Server更新,导致在EXPLORER资源树无法快速检索文件
公告
Claire Zheng · 十一月 30, 2022

荣誉!InterSystems被独立研究机构Forrester评为“事务分析型数据平台领导者”

2022 年 12 月 1 日,中国,北京——致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商 InterSystems 今天宣布,在Forrester日前公布的《The Forrester Wave™:事务分析型数据平台(2022年第4季度)》报告中,InterSystems IRIS® 数据平台被评为领导者。 Forrester 将事务分析型数据平台(Translytical data platform)定义为“构建在单一数据库引擎上来支持多种数据类型和数据模型的下一代数据平台,旨在支持事务、操作和分析工作负载,而不牺牲数据完整性、性能和分析规模”。 InterSystems 认为实时(real-time)功能对事务分析型平台至关重要,是智能数据编织(smart data farics)的一个关键组成部分。这种方法基于数据和实时分析,为业务线用户提供洞察,使组织能够更快地管理中断(manage disruption),并在充满不确定和竞争日益激烈的环境中发现新的机会。 在评估过程中,Forrester 根据三个类别的标准对供应商进行了评分:当前产品、战略和市场占有率。InterSystems 在以下这些标准中均获得了最高分:建模/工具;可延展性(扩展平台的功能);可扩展性;产品愿景(与客户当前和未来需求一致);执行路线图;公司业绩以及工程师数量。 InterSystems IRIS® 数据平台 使企业能够快速开发、部署和执行数据密集型分析应用程序。通过让构建高性能、支持机器学习的应用程序变得更容易(这些应用程序可以连接数据和应用孤岛),InterSystems IRIS 简化了架构,赋能关键任务应用程序——当今企业需要这些应用程序快速解决棘手的业务难题。 InterSystems 数据平台副总裁 Scott Gnau 表示:“我们知道,在一个竞争更激烈、更动荡的世界中,企业需要更快地获得洞察以改进决策。InterSystems为客户提供了一些全新视角,这些视角只能来自于对所有相关数据的深入分析。” 通过创建智能数据编织(smart data fabric)架构,InterSystems IRIS 使企业能够做出更智能的决策,实现更好的结果。目前,一家管理着超过1万亿美元资产的全球投资银行正在使用 InterSystems IRIS 为其实时多资产交易平台提供动力,与之前的实施相比,InterSystems IRIS 令平台的可靠性、可扩展性和成本效益都得到了提升。得益于 InterSystems IRIS,银行表现提高了 10 倍,运营成本降低了 75%,吞吐量增加了 5 倍。 InterSystems IRIS 拥有如 InterSystems IRIS 自适应分析(可实现业务用户的自助服务)、IntegratedML(可用于公众数据科学),以及在编程工作流中执行实时分析的极端性能等优秀功能。InterSystems IRIS 部署在全球各地,可在多个公共云市场上使用,包括 Amazon Web Services、Microsoft Azure 和谷歌云平台。 点击“这里”,下载《The Forrester Wave™:事务分析型数据平台(2022年第4季度)》。
文章
TZ Zhuang · 八月 6, 2021

FAQ 常见问题系列--系统管理篇 如何使用命令在Journal日志文件中搜索指定的Global

可以使用%SYS.Journal.File类中的ByTimeReverseOrder查询,以及%SYS.Journal.Record类中的List查询来实现。 下面是这两个查询的具体作用: A) %SYS.Journal.File类中的ByTimeReverseOrder查询这个查询会获取journal日志文件名并按降序排列 USER>set rs=##class(%ResultSet).%New("%SYS.Journal.File:ByTimeReverseOrder") USER>do rs.Execute() USER>while rs.Next() { write rs.Name,! } c:\intersystems\cache\mgr\journal\20190620.003 c:\intersystems\cache\mgr\journal\20190620.002 c:\intersystems\cache\mgr\journal\20190620.001 c:\intersystems\cache\mgr\journal\20190610.001 B) %SYS.Journal.Record类中的List查询这个查询可以从指定journal日志文件中获取日志记录 USER>set rs2=##class(%ResultSet).%New("%SYS.Journal.Record:List") USER>do rs2.Execute("c:\intersystems\cache\mgr\journal\20190620.003") USER>while rs2.Next() { if rs2.Get("GlobalReference")["TEST" write rs2.Get("GlobalReference"),!} ^["^^c:\intersystems\cache\mgr\user\"]TEST(1) ...... ^["^^c:\intersystems\cache\mgr\user\"]TEST(9) ^["^^c:\intersystems\cache\mgr\user\"]TEST(10) 这里我们可以把从A查询获得的结果传到B查询里。如果想了解从B查询里还能获得哪些字段的内容,请参考文档里的%SYS.Journal.Record类定义 下面是一个把A和B查询合并在一起的例子: ///参数 globalname: 需要查询的Global名字(不包括^) ClassMethod SearchAllJournals(globalname As %String) { if $get(globalname)="" { write "请指定Global名字",! quit } //从当前所有journal日志文件中搜索指定的global set rs1=##class(%ResultSet).%New() set rs1.ClassName="%SYS.Journal.File" set rs1.QueryName="ByTimeReverseOrder" do rs1.%Execute() while rs1.%Next() { set jrnfile=rs1.%Get("Name") set size=rs1.%Get("Size") write "Journal file:",jrnfile,!," File size:",size/1024/1024," MB",! do ..SearchGlobal(globalname,jrnfile) } do rs1.Close() } ///第一个参数 globalname: 需要查询的Global名字(不包括^) ///第二个参数 jrnfile: 指定的journal日志文件名字(包括路径) ClassMethod SearchGlobal(globalname As %String, jrnfile As %String) { set rs1=##class(%ResultSet).%New() set rs1.ClassName="%SYS.Journal.Record" set rs1.QueryName="List" //打开journal日志文件并搜索指定的Global do rs1.%Execute(jrnfile,"GlobalReference,NewValue",,,$lb("GlobalReference","[",globalname)) while rs1.%Next() { set glo=rs1.%Get("GlobalReference") write " ",glo," = ",rs1.%Get("NewValue"),! } do rs1.Close() }
问题
Yufeng Li · 四月 19, 2021

Nginx 怎么配置成IRIS web服务器

现在有windows上的 编译好的nginx 可以做为iris 的web 服务器吗? ngx_http_csp_module_sa.c , cspapi.h 这两个文件在哪下载? 请从Nginx官网:nginx.org 下载,InterSystems不提供nginx 下载。 文中提到的文件可以在InterSystems IRIS 安装目录的 \dev\csp\nginx 文件夹下找到。
公告
Claire Zheng · 一月 17, 2022

了解如何使用IRIS医疗版构建您的首款FHIR应用!

为了帮助您开始使用FHIR,我们发布了一个新的学习路径: Building Basic FHIR Integrations with InterSystems IRIS for Health. 通过这个路径,您可以学习FHIR的基础知识,学习如何在InterSystems IRIS医疗版中设置FHIR端点,将数据应用到FHIR存储库并转换FHIR数据,使用InterSystems API管理器管理FHIR API,以及使用客户端应用查询FHIR资源。该路径包括一些建议,例如使用SDA-FHIR转换将其他数据格式转换为FHIR。 我们还在考虑如何创建额外的内容,以指导您启用现有的应用程序并利用存储在FHIR存储库之外的数据。这些对您有用吗?关于如何使用FHIR和InterSystems产品,您还想学习什么?