清除过滤器
文章
Michael Lei · 七月 20, 2022
IRIS 命令qlist或list可以用来把输出结果输出到一个文件。
qlist的结果以文本格式输出,以^为分隔符。
第三部分,以^为界,包含运行状态数据。
$ iris qlist IRIS > iris.log
$ cat iris.log
IRIS^/Applications/iris^2022.1.0.164.0^running, since Thu Apr 7 16:37:03 2022^iris.cpf^1972^52773^0^alert^IRIS^^^/Applications/iris
在列表的情况下,以status:为前缀的一行包含运行状态数据。
对于基于Unix的操作系统
$ iris list IRIS > iris.log
$ cat iris.log
Configuration 'IRIS' (default)
directory: /Applications/iris
versionid: 2021.2.0.650.0
datadir: /Applications/iris
conf file: iris.cpf (SuperServer port = 1972, WebServer = 80)
status: running, since Thu Apr 7 16:37:03 2022
state: alert
product: InterSystems IRIS
Windows 环境下,不显示STATE行。
C:\InterSystems\IRIS\bin>iris listInstance 'IRIS' (Development installation) directory: 'C:\InterSystems\IRIS' versionid: '2021.2.0.650.0' conf file: 'c:\intersystems\iris\iris.cpf' (SuperServer port = 1972, WebServer port = 80) status : 'running, since Wed Jun 1 19:26:09 2022' Product : InterSystems IRIS
公告
Claire Zheng · 四月 8, 2021
InterSystems中国正在招聘SE,具体职位需求以英文发布,详情如下,欢迎将简历砸过来 (claire.zheng@intersystems.com)or 私信联系 :)
Job Details
Seniority Level
Mid-Senior level
Industry
Information Technology & Services
Computer Software
Employment Type
Full-time
Job Functions
Sales
Information Technology
About the job
Intersystems China 系联软件(北京)有限公司, is the trusted Healthcare IT solution provider for many World-Class hospitals and clinics in China, such as China’s largest foreign-invested hospital, United Family Healthcare 和睦家医疗, and one of China’s most prestige medical institution, Peking Union Medical College Hospital 北京协和医院。
The company has a small but collaborative team of talented and passionate individuals working the Greater China Region.
Due to China’s economic growth, aging population and the government’s determination in the Healthcare reform, China has become one of InterSystems’ most important strategic regions with unparalleled growth potentials in the years to come.
Based at our Beijing office, the Sales Engineer will provide guidance in the use of InterSystems' products as they best suit the requirements of the customer and its market. Product and business strategies are coordinated with the InterSystems Sales Team to apply existing and new products to customers' database and application needs. The role is very wide-ranging and challenging, requiring a mixture of design skills, hands-on coding, presentation skills, technical architecture, sales awareness, business acumen, evangelism, mentoring and training. This role requires regular travel across China and occasionally overseas.
Responsibilities
Investigate & demonstrate the use of InterSystems products with other 3rd party technologies.
Manage the technical relationship with customer accounts, ensuring that they are aware of the latest product capabilities.
Identify new opportunities within existing accounts.
Build and demonstrate Proof of Concepts (POCs) for prospects and customers to illustrate the suitability, ease of use, performance, features, and reliability and/or connectivity capabilities of InterSystems technology.
Participate in business and detailed technical discussions at all levels and in all departments of the customer's organisation to foster the adoption, use and deployment of InterSystems’ technologies.
Recommend technical architecture, database schema, design patterns, migration and upgrade strategies and operational best practices.
Install InterSystems software and assist with benchmarking exercises to determine optimal deployment configurations.
Work as a hands-on lead application developer to coach partners and prospects, particularly in the early stages of adoption or during particularly technically challenging projects.
Provide application programming in a variety of InterSystems technologies, and other technologies.
Give corporate presentations to InterSystems' customers and prospects at site visits, marketing events and such venues. Topics include strategic and tactical considerations across both technical and business directions. Provide technical product demonstrations.
Carry out formal training courses in InterSystems technologies.
Support customers and prospects during beta test programmes or pre-launch activities and provide feedback to the software development groups.
Assist with troubleshooting and interact with the World-wide Response Centre (WRC) to support resolution of technical problems.
Provide consulting services for the Sales Department and other InterSystems departments (Marketing, Support, Development, Documentation among others) as requested
Skills and Qualifications
Extensive previous experience as a Sales Engineer or related role, preferably in the Healthcare industry.
Outstanding interpersonal, communication and presentation skills
Demonstrated expertise in developing and implementing the functional specifications for integration projects in the healthcare marketplace, including routing and/or transformation engines
Demonstrated experience in all or most of the following: HTML, CSS, JavaScript, XML, XSLT, XPath, XSD, SAX, JSP/Servlets, ASP, SOAP, Web Services
Demonstrated expertise in SQL and ODBC / JDBC
Demonstrated experience in developing applications in various modern Object-oriented programming languages such as Java, C# and VB.Net
Understanding of all or most of the following: Network domains and network configurations, IP Addressing, DNS, WINS, FTP, HTTP, SFTP, SMTP, TELNET and SNMP
High level of understanding in Analytics and Business Intelligence concepts.
Experience
Broad knowledge of IT industry issues & trends including integration, data management, application development and cloud, with specific vertical market & technical knowledge in Integration (SOA, ESB, EAI, ETL, BI…).
Proven experience or technical management in an application development environment.
At least 4 years programming with demonstrable current hands-on expertise in object-oriented languages such as C#, C++ or Java / J2EE.
Knowledge of ESB, Enterprise Application Integration (EAI) experience using InterSystems Ensemble, Health Connece, BEA Software, IBM, Oracle, Microsoft or similar.
Ongoing experience within the design, development & deployment of complex applications.
Knowledge of application frameworks, application servers and server-less programming models.
Knowledge of agile software development processes and continuous development.
Extensive use of 2 or more databases such as InterSystems Caché, Oracle, SQLServer, Sybase, Informix or DB2/UDB, including designing logical and physical database schema, good SQL and JDBC/ODBC expertise, installation and configuration skills, and performance tuning.
Proven business analysis and problem-solving skills.
Strong presentation, influencing and communication skills.
Understanding of the business considerations of application development, support and deployment.
Software Engineering experience.
Familiarity with healthcare related integration in particular HL7 and FHIR standards and protocols.
Experience with Business Intelligence and Analytics technologies and approaches.
Familiarity with modern web-based development frameworks such as Angular, React, Vue.js or similar.
Familiarity with Machine Learning tools and languages
English language fluency.
欢迎简历继续砸过来。。。 我们又开始招人啦!
文章
Jingwei Wang · 一月 19, 2023
Python 已成为世界上使用最广泛的编程语言(来源:https://www.tiobe.com/tiobe-index/),SQL 作为数据库语言继续引领潮流。 Python 和 SQL 一起工作以提供 SQL 单独无法提供的新功能不是很好吗?毕竟,Python 拥有超过 380,000 个已发布的库(来源:https://pypi.org/),它们具有非常有趣的功能,可以在 Python 中扩展您的 SQL 查询。本文详细介绍了如何使用嵌入式 Python 在 InterSystems IRIS 数据库中创建新的 SQL 存储过程。
用作示例的 Python 库
本文将使用两个非常有用的库:Geopy 和 Chronyk。
Geopy 是一个用于将地理编码(地址和地理坐标的限定)应用于地址数据的库。有了它,就可以从街道名称中获取邮局格式的邮政编码和完整地址。非常有用,因为许多记录都有地址。
Chronyk 用于使用人类语言处理日期和时间。这非常有用,因为在内部,对于 IRIS 和 Python,日期是一个数字,表示自初始日期以来经过的时间量。对于人类来说,日期是 7 月 20 日,或者昨天,或者明天,或者两个小时前。 Chronyk 接受接收这样的日期,然后将其转换为通用日期格式。
InterSystems IRIS 中的 Python 支持
从 2021.1 版开始,可以使用 Python 以双向方式在 Python 和 IRIS (ObjectScript) 之间创建类方法、存储过程、互操作产品和Native调用。我不知道有任何其他数据平台可以如此深入地使用 Python。这个工作的要求是 Python 安装在与 IRIS 相同的物理或虚拟机或容器上。 更多详情请见:https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_epython。对于安装 python 运行:
# install libraries required for python and pip
RUN apt-get -y update \
&& apt-get -y install apt-utils \
&& apt-get install -y build-essential unzip pkg-config wget \
&& apt-get install -y python3-pip
Python 库支持 InterSystems IRIS
为了使 InterSystems IRIS 能够使用 Python 库,必须将其安装在 <installdir>/mgr/python 中。其中 installdir 是安装 IRIS 的文件夹。要安装新包运行:
# use pip3 (the python zpm) to install geopy and chronyk packages
RUN pip3 install --upgrade pip setuptools wheel
RUN pip3 install --target /usr/irissys/mgr/python geopy chronyk
Pip3 是 Python 最受欢迎的包管理器和安装程序 Pip。
Python语言创建存储过程
在 InterSystems IRIS 中使用 Python 的一种可能性是使用 Python 创建存储过程。有两种可能性:
Python使用Create Function or Procedure的SQL语句创建存储过程;
使用 sqlProc 和 language=Python 标记在 ObjectScript 类中创建 ClassMethod。
Python使用Create Procedure的SQL语句创建存储过程
根据 InterSystems 文档,您还可以通过在 CREATE 语句中指定 LANGUAGE PYTHON 参数,使用嵌入式 Python 编写 SQL 函数或存储过程,如下所示(来源:https://docs.intersystems.com/iris20221/csp/ docbook/DocBook.UI.Page.cls?KEY=AEPYTHON#AEPYTHON_runpython_sql):
CREATE FUNCTION tzconvert(dt TIMESTAMP, tzfrom VARCHAR, tzto VARCHAR)
RETURNS TIMESTAMP
LANGUAGE PYTHON
{
from datetime import datetime
from dateutil import parser, tz
d = parser.parse(dt)
if (tzfrom is not None):
tzf = tz.gettz(tzfrom)
d = d.replace(tzinfo = tzf)
return d.astimezone(tz.gettz(tzto)).strftime("%Y-%m-%d %H:%M:%S")
}
当您运行这个新的 SQL 函数时:
SELECT tzconvert(now(), 'US/Eastern', 'UTC')
该函数返回如下内容:
2022-07-20 15:10:05
使用 sqlProc 和 language=Python 标记在 ObjectScript 类中创建 ClassMethod
我承认我最喜欢这种方法:使用 sqlProc 和 language=Python 标记创建一个 ClassMethod。在我看来,它更容易维护,文档更好,明显并且源代码版本管理更好。对于这种方法,我发布了一个示例应用程序:https://openexchange.intersystems.com/package/Python-IRIS-SQL-Procedures-Sample。我将用它来详细演示第二种方法。
示例应用程序安装
要安装示例应用程序,请按照以下步骤操作:
clone/git 将 repo 拉入任何本地目录
$ git clone https://github.com/yurimarx/iris-sql-python-sample.git
在此目录中打开一个 Docker 终端并运行:
$ docker-compose build
运行 IRIS 容器:
$ docker-compose up -d
另一种安装可能性是使用 ZPM:
zpm "install iris-sql-python-sample"
使用 Python 的存储过程示例
第一个示例是处理地址地理编码的存储过程,请参阅源代码:
ClassMethod GetFullAddress(Street As %String, City As %String, State As %String)
As %String [ Language = python, SqlName = GetFullAddress, SqlProc ]
{
import geopy.geocoders
from geopy.geocoders import Nominatim
geopy.geocoders.options.default_timeout = 7
geolocator = Nominatim(user_agent="intersystems_iris")
location = geolocator.geocode(Street + ", " + City + ", " + State, country_codes="US")
return location.address
}
看到使用 [Language = python, SqlProc] 标记声明了一个 ClassMethod(在 dc.pythonsql.Company 类中)。SqlName 标签允许在 SQL 语句中为新的存储过程设置一个名称。
转到管理门户,系统 > SQL 并运行以下代码:
SELECT
ID, City, Name, State, Street, Zip, dc_pythonsql.GetFullAddress(Street, City, State) As FullAddress
FROM dc_pythonsql.Company
现在不完整的地址返回为“完整”地址(完整且合格)。
注意:如果没有返回执行#class(dc.pythonsql.Company).CreateFiveCompanies()。它将创建五家公司用于测试。
该软件包可以与主要的开放和市场地理编码服务一起使用。在此示例中,我们使用开放服务 Nominatim,但也可以使用 Bing、Google、ArcGIS 等。在 https://geopy.readthedocs.io/en/stable/#module-geopy.geocoders 上查看可能性。
第二个例子是人性化格式的日期和时间包,Chronyk。
它允许您发送“明天”、“昨天”、“4 小时后”、“2022 年 7 月 4 日”等句子,并以通用日期格式获取结果。查看存储过程的创建:
类方法 GetHumanDate (语句 作为 %字符串) 作为 %细绳 [ 语言 = 蟒蛇, 数据库名称 = 获取人类日期, SQLProc ]
ClassMethod GetHumanDate(Sentence As %String) As %String [ Language = python, SqlName = GetHumanDate, SqlProc ]
{
from chronyk import Chronyk
t = Chronyk(Sentence)
return t.ctime()
}
在管理门户 > 系统 > SQL 中执行以下调用:
SELECT
ID, City, Name, State, Street, Zip, dc_pythonsql.GetHumanDate('yesterday') As Datetime
FROM dc_pythonsql.Company
如果你只想调用存储过程,你可以使用这个 SQL 语句:
select dc_pythonsql.GetHumanDate('yesterday') as Datetime
该库具有多种人性化日期和时间的可能性,请参阅 https://github.com/KoffeinFlummi/Chronyk。
所以,很容易创建 Python 存储过程,尽情享受吧!
文章
Claire Zheng · 九月 13, 2021
针对新近面向中国推出的InterSystems IRIS医疗版互联互通套件,InterSystems将在9月17日(本周五)举办“InterSystems IRIS医疗版互联互通套件”线上发布会,会议详情如下,欢迎点击“此处”或扫描下方二维码报名。此次会议为邀请参会制,收到您的报名信息后,我们会及时与您确认参会资格并发送会议链接。
文章
Claire Zheng · 二月 13, 2023
在InterSystems 2022年全球峰会上,InterSystems 创始人兼 CEO Terry Ragon 分享了如何才能使企业获得持续发展。他是“愿景领导公司”的坚定信徒,他认为,愿景、热情与专注对于推动业务发展、保持企业创新活力至关重要。InterSystems 的愿景是:我们是一家提供创新数据技术服务的公司,对卓越和客户成功充满激情。
文章
Louis Lu · 十一月 2, 2021
本文档向您介绍 InterSystems IRIS®数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。
本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件,激活该密钥文件,然后用它来加密一个数据库。这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理那些离题的细节(尽管这些细节在执行实现时可能很重要)。有关数据库加密的完整文档,请参见 Encryption Guide(《加密指南》)。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
为什么数据库加密很重要
虽然加密并不能防止对机密或个人信息的所有不当或未经授权的使用或披露,但确保静止数据的加密为信息安全提供了一个重要的防御层。在数据库级别实施加密为您的信息保护控制提供了一个额外的维度。
此外,许多有关敏感信息或个人信息的法律和法规建议或要求处理数据的组织采用加密作为第一道防线。这些包括法律和法规,如:
《健康保险携带和责任法案》(Health Insurance Portability and Accountability Act,HIPAA )——要求安全保护健康(Secure Protected Health)信息是不可读、不可破译和不可恢复的
马萨诸塞州 201 《马萨诸塞州法规法典》(Code of Massachusetts Regulations,CMR) 17.00——要求个人信息在传输和静止时进行加密
纽约州 23 《纽约法典、规则和条例》 (NewYork Codes, Rules and Regulations,NYCRR) 500 部分——处理非公开信息的金融和其他涉及的组织必须利用加密作为保护数据的一种手段。
欧盟《通用数据保护条例》(General Data Protection Regulation,GDPR)——安全保障要求将加密作为一种保护控制考虑在内
意大利《个人数据保护法》(Personal Data Protection Code,PDPC)——《最低数据安全措施技术规范》(Technical Specifications on Minimum Data Security Measures)第 24 条要求对披露健康和性生活的数据进行加密处理
澳大利亚隐私原则(Australian Privacy Principles,APP)原则 4——强有力的加密实现解决了必要的隐私增强技术,以确保个人信息的安全
日本经济产业省(Ministry of Economy, Trade, and Industry,METI)指南——如果未加密的个人或机密信息遭到泄露,必须进行监管调查,因为根据《个人信息保护法》(Act on the Protection of Personal Information,APPI)第 20 条,个人信息的处理者有义务防止信息的泄漏、丢失或损坏
请注意,这些法律要求中有许多集中在数据泄露上,因为这是一种越来越普遍的现象,但目前的框架要求组织有义务通过适当的安全控制来解决风险,如基于角色的访问、密码保护、入侵检测、数据丢失预防和日志/审计 ——以及加密。加密本身并不能满足所有的强制性要求,但提供了一个安全的基础。数据库级别的加密
通过要求攻击者不仅要获得对系统或文件空间的访问权限,而且要有访问数据库的权限,从而加强了保护。这一附加层为组织、其客户和任何利益相关者提供了保证。
InterSystems IRIS 如何使用数据库加密
对于与数据库操作相关的活动,InterSystems IRIS 的加密和解密过程对用户是透明的。从终端用户或应用程序开发人员的角度来看,应用程序只需执行其常规活动(activity),数据就会自动在磁盘上加密。从系统管理员的角度来看,有几个简单的任务可以确保数据加密的发生;在执行这些任务后,加密的过程又是在背后执行的。
更重要的是,这些活动使用最少的处理器时间,所以它们对您的应用程序没有明显的影响。此外,由于我们数据库的构建方式,这些活动被高度优化。
加密和解密在密码块链接(Cipher Block Chaining,CBC)模式中使用美国政府高级加密标准(United States Government Advanced Encryption Standard,AES),通常简称为 AES CBC。InterSystems IRIS 支持 AES CBC 的所有合法密钥大小:128–、192–和 256–位密钥。
InterSystems IRIS 使用最快的可用实现(available implementation)执行加密和解密。只要有可能,加密和解密就会利用基于处理器的指令集及其固有的效率。现代英特尔(Modern Intel)和 IBM POWER8 处理器都有这样的指令。InterSystems IRIS 自动检测并使用这些指令,所以您不需要采取任何行动来实现它。在英特尔(Intel)处理器上,这些是高级加密标准新指令(Advanced Encryption Standard New Instructions,AES-NI);在 IBM 上,它们是 AES VMX 指令集。
您可以将数据库加密密钥存储在支持密钥管理互通协议(key management interoperability protocol,KMIP)的密钥管理服务器上,或者存储在包含数据库密钥加密副本的文件中。每个都有自己的优势:
KMIP 是一个 OASIS 标准协议,用于客户端与密钥管理系统通信。KMIP 服务器可以是专门的硬件设备,或是运行密钥管理软件的通用服务器。
当数据库加密密钥存储在文件中时,InterSystems 使用多层 AES 密钥封装算法对密钥进行加密,并使用 PBKDF2 算法派生出单个管理员密钥加密密钥,从而使字典攻击和暴力破解变得不切实际。
必须记住,虽然数据库加密是安全策略的一个组成部分,但它不能单独解决安全漏洞。其他工具,如动态数据保护,也是至关重要的。这就是为什么数据库加密是 InterSystems IRIS 为保护数据而提供的一整套工具的一部分。这些包括:
支持政府标准——您可以将 InterSystems IRIS 配置为使用经过验证符合联邦信息处理标准 140–2(Federal Information Processing Standards 140–2,FIPS 140-2)的库进行数据库加密。这在 Red Hat Linux 上是可用的。
保护选定的数据元素——被称为数据元素加密,该功能提供了一种编程方法,允许您只对记录的选定部分进行加密,如信用卡或身份识别号码。
保护动态数据——InterSystems IRIS 使用最新版本的传输层安全协议(Transport-Layer Security,TLS)保护动态数据。TLS 是保护数据通信的行业标准协议。
支持第三方授权——InterSystems IRIS 支持在第三方网站上使用资源的授权,就像在 web 上经常看到的通过 QQ 或微信登录以使用一个网站。这是通过开放授权框架(Open Authorization Framework)2.0 版(称为 OAuth 2.0)实现的,并可能包括通过另一层,称为 OpenID 连接(OpenID Connect)进行身份验证。
亲自尝试数据库加密
使用 InterSystems IRIS 数据库加密很容易。这个简单的程序将引导您完成设置加密数据库的基本步骤。
用前须知
要使用该程序,您需要一个运行中的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见 InterSystems IRIS Basics: Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中的 Deploying InterSystems IRIS(部署 InterSystems IRIS)。
创建加密密钥
首先,创建一个密钥文件,其中自动包含一个数据库加密密钥:
使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中URL described for your instance(为您的实例描述的 URL),在浏览器中打开您的实例的管理门户(Management Portal)。
导航到 Create Encryption Key File(创建加密密钥文件)页面(System Administration(系统管理) > Encryption(加密) > Create New Encryption Key File(创建新的加密密钥文件)):
在 Create Encryption Key File(创建加密密钥文件)页面上:
在 Key File(密钥文件)字段中,输入密钥文件的名称和路径。当您点击 Browse(浏览)按钮时,文件选择对话框(File Selection Dialog) 默认在实例的 install-dir/mgr 目录中打开(其中 install-dir 是 InterSystems IRIS 安装目录),例如, C:\InterSystems\IRIS\mgr\testkeys.key;您可以在所有类型的实例上使用此目录,或者在主机或容器文件系统中选择另一个位置。
在 Administrator Name(管理员名称) 、Password(密码)和 Confirm Password(确认密码)字段中,输入值如 testadmin 和 password。这只是一个示例,所以不要重复使用您在开发环境中使用的密码。
选择靠近页面顶部的 Save(保存) 按钮。
您刚刚在 C:\InterSystems\directory 里创建了 testkeys.key 密钥文件,其中有一个密钥,您可以用它来进行数据库加密。InterSystems IRIS 会显示一条带有密钥的信息,如
有关创建密钥文件及其初始密钥的详细信息,请参见 Create a Key File(《创建密钥文件》)。
激活加密密钥
接下来,激活您刚刚创建的密钥:
在管理门户(Management Portal)中,进入 Database Encryption(数据库加密)页面(System Administration(系统管理) > Encryption(加密) > Database Encryption(数据库加密))。
在数据库加密(Database Encryption)页面,选择 Activate Key(激活密钥) 按钮:
在 Key File(密钥文件) 字段中,输入您创建的密钥文件的位置,如 C:\InterSystems\IRIS\mgr\testkeys.key。
在 Administration Name(管理员名称) 和 Password(密码) 字段中,输入您指定的值(testadmin和 password)。
选择 Activate(激活) 按钮。
您可以在这个页面上看到密钥 ID:
有关激活密钥的详细信息,请参见 Activate a Database Encryption Key from a Key File(《从密钥文件中激活数据库加密密钥》)。
创建加密数据库
现在,您可以创建一个加密数据库:
再次在管理门户(Management Portal)中,进入 Namespaces(命名空间) 页面(System Administration(系统管理) > Configuration(配置) > System Configuration(系统配置) > Namespaces(命名空间))。
在 Namespaces(命名空间)页面上,选择 Create New Namespace(创建新的命名空间)。这将显示 New Namespace (新的命名空间) 页面:
在 New Namespace (新的命名空间)页面,输入您要创建的加密数据库的名称,如 ENCDB。
在 Select an existing database for Globals(为 Globals 选择现有的数据库)下拉菜单旁边,选择 Create New Database(创建新的数据库)按钮。这将显示 Database Wizard(数据库向导):
在 Database Wizard(数据库向导)的第一页,在 Enter the name of your database(输入您的数据库名称) 字段中,输入您要创建的数据库的名称,如 ENCDB。输入一个数据库的目录,如 C:\InterSystems\IRISmgr\ENCDB。在该页面上,选择 Next(下一步)。
在下一页,将 Encrypt database(加密数据库)的值从 No 更改为 Yes。在该页面上,选择 Finish(完成)。
回到 New Namespace(新的命名空间)页面,在 Select an existing database for Routines(为例程选择现有的数据库)下拉菜单中,选择您刚刚创建的数据库,如 ENCDB。
选择靠近页面顶部的 Save(保存)按钮,然后在生成的日志的末尾选择 Close(关闭)。
现在您已经创建了一个名为 ENCDB 的加密数据库,它使用 InterSystems IRIS 在您创建密钥文件时创建的密钥。您可以像使用未加密的数据库一样使用这个数据库。由于 InterSystems IRIS 隐藏了所有的加密和解密机制,您可以用通常的方式执行所有的操作,所有数据都会被加密。
有关创建命名空间及其相关数据库的更多详细信息,请参见 InterSystems IRIS System Administration Guide(《InterSystems IRIS 系统管理指南》)中"Configuring InterSystems IRIS(配置 InterSystems IRIS)"一章中的 "Create/Modify a Namespace(创建/修改命名空间)"。有关背景信息, 请参见 Orientation Guide for Server-Side Programming(《服务器端编程指导手册》)中的“Namespaces and Databases(命名空间和数据库)”。
查看加密数据
一旦您创建了加密数据库,您可以像使用其他未加密的数据库一样使用它。唯一的区别是数据的存储方式。要查看存储在加密数据库和未加密数据库中的数据的区别,您可以执行以下简单的测试:
使用 InterSystems IRIS Basics:Connecting an IDE(《InterSystems IRIS 基础:连接一个 IDE》)中为您的实例描述的程序 ,为您的 InterSystems IRIS 实例打开终端(Terminal )。
使用以下命令切换到加密数据库的命名空间:
%SYS>set $namespace="ENCDB" ENCDB>
在 ENCDB 命名空间中,运行以下命令:
ENCDB>for i=1:1:1000 set ^x(i)="This is test number "_i
这将创建一千个持久化变量(persistent variable),包含如下内容 This is test number 22。
要确认您已经成功,请看一个变量的值:
ENCDB>w ^x(22)
This is test number 22 ENCDB>
要打开数据库文件,进入您在上一节中创建的目录,如 C:\InterSystems\IRIS\mgr\ENCDB,并打开数据库文件 IRIS.DAT。您将会看到如下内容:
尝试在文件中搜索 "This is test number"这个字符串。您不会找到它——因为数据库是加密的。事实上,您会发现唯一未加密的字符串是数据库的名称或其加密密钥的标识符。
如果您在未加密的数据库上执行同样的测试,产生的文件将包含以下内容:
请注意,屏幕截图的最后一行包含了在终端(Terminal)设置的变量值。
与数据库加密有关的其他功能
InterSystems IRIS 还具有其他值得注意的数据库加密功能,这些功能对您的实现可能很重要:
KMIP——InterSystems IRIS 允许您在独立于托管实例的服务器上存储密钥。为了与这些服务器通信,InterSystems IRIS 支持密钥管理互通协议(key management interoperability protocol,KMIP)。这使得 InterSystems IRIS 能够从 KMIP 提供的标准化密钥管理方法中获益。
更改密钥和添加或删除加密——您可以轻松地更改数据库的加密密钥。如果需要这些操作,加密一个未加密的数据库或制作一个加密数据库的未加密副本也是很简单的。
对磁盘上的相关数据进行加密——InterSystems 允许您轻松加密其临时缓存数据库和其他用于保持最近事务记录为当前状态的磁盘内容(即其日志文件)。
基于芯片的加密——芯片可以将加密作为其活动的一部分,这为操作提供了更快的速度。InterSystems IRIS 支持使用这种芯片。有关基于芯片的加密的详细信息,请参见下一节。
了解有关数据库加密的更多信息
InterSystems 有很多参考资料可以帮助您了解有关数据库加密的更多信息:
Encryption Awareness(《加密意识》)——InterSystems 在线学习交互式课程,为我们的加密技术提供概念介绍。
Encryption Guide(《加密指南》)——InterSystems 有关数据库加密和相关功能的文档。
FIPS 140–2 Compliance for Database Encryption(《FIPS 140-2 数据库加密的遵从性》)——InterSystems 有关 InterSystems IRIS 支持 FIPS 140-2 标准的文档。
文章
Claire Zheng · 十月 18, 2022
在美国各地,当需要实现大规模的应用集成时,医疗行业的领导者会使用InterSystems HealthShare Health Connect®。无论是为了连接电子病历,还是为了提升床边护理决策能力,无论是为了创新远程医疗和远程护理,还是为了业务增长,亦或是为未来做准备,InterSystems和Health Connect随时准备好帮助您和您的组织实现目标。我们在此提供几个InterSystems医疗行业的集成实例以作示范。
案例一:大规模的互操作性有助于成功部署Epic
美国东北部的一个主要综合交付网络(IDN)的IT系统每年为13家医院、数千名临床医生和150万名患者提供服务。当该机构将其内部开发的临床和财务应用程序替换为Epic时,Health Connect的集成功能通过以下管理帮助其实现顺利过渡:
•连接5000个医疗设备
•得益于基因组学、新的影像技术和互联设备,在Epic之外的数据量增长了225%(从20TB增长到65TB)
•Epic与其他IT系统的接口数量增加了34%
•Epic部署完成后,消息量增加了近330%(每天7300万)
Epic和Health Connect共同将该机构的医疗护理协同和标准化提升到一个新的水平,并将成为未来创新的平台。
案例二:从15个集成引擎减少到1个,节省2100万美元
如果没有收购很多不同的软件系统,你就不可能成为美国前三的综合交付网络(IDNs)之一。这包括集成引擎,它可以通过数千个遗留接口连接所有东西。
当这个IDN决定在一个集成平台上进行整合时,团队意识到他们投资的不只是软件,而是大规模的项目迁移。在仅有4名开发人员的情况下,该机构在21个月内将2000多个接口转换和部署到InterSystems HealthShare Health Connect上,实现了替换7000个接口的目标。更重要的是,IDN有望为每个接口节省3000美元的开发成本,预计总成本为2100万美元。通过支持世界上最大的集中式集成项目之一,Health Connect正在确保该机构能够继续发展和扩大互联医疗业务。
IDN对竞争解决方案的评估突出了HealthShare Health Connect的一个主要优势——可快速转换为新的产品质量接口。
案例三:零停机部署HealthShare Health Connect,提前1年完成计划
当COVID-19大流行来袭时,美国东南部的某大学医疗中心正在用InterSystems HealthShare Health Connect替换其使用了30年的本土数据集成引擎。在这个过程中不允许出现停机或任何切断临床医生和研究人员获取患者重要数据的风险。
该医疗中心与InterSystems公司合作,提前一年完成了集成引擎的更换。IT团队将来自60个医疗机构的临床医生和来自300个数据接口的信息连接了起来,与此同时,临床医护人员却没有感知到他们每天使用的应用程序底层发生的任何变化。由于没有发生停机,在疫情日益严重的情况下所有医疗护理资源得到了充分应用。
案例四:规模化集成,实现业务增长和护理创新
在美国西部,一家大型IDN已经发展到包括23家实体医院、1家线上医院、215家诊所、6个州的远程医疗操作、1个保险计划和4万名护理人员。该机构使用InterSystems集成技术来实现和管理这种增长,同时保持其敏捷和创新。自2014年以来,InterSystems技术通过以下方式服务于IDN的使命和目标:
•每月处理2.25 - 2.5亿笔交易,绝对可靠
•集成220个独立应用的数据
•在线上医院中,将电子病历与家庭设备连接,并应用于远程医疗
•使用FHIR标准与外部合作伙伴共享数据
•利用FHIR简化消费者门户网站的数据披露
•规模化
文章
Louis Lu · 十一月 2, 2021
本文档介绍了 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 项目中大型、复杂对象层次结构的持久化技术。
文章
Michael Lei · 二月 17, 2022
#### 实时人工智能/机器学习计算的挑战
我们将从我们在 InterSystems 数据科学实践中遇到的示例开始讲起:
* “高负载”客户门户与在线推荐系统相集成。 计划是在整个零售网络层面重新配置促销活动(我们将假设使用“细分策略”矩阵而非“平面”促销活动母版)。 推荐机制会有哪些变化? 推荐机制内的数据馈送和数据更新会有哪些变化(输入数据量增加了 25000 倍)? 推荐规则生成设置会有哪些变化(生成规则的总量和“分类”呈千倍增加,因此需要将推荐规则筛选阈值缩小千倍)?
* 设备健康监控系统使用“手动”方式馈送数据样本。 现在,它将连接到每秒可传输数千个过程参数读数的 SCADA 系统。 监控系统会有哪些变化(它能否应对以秒为单位的设备健康监控)? 当输入数据接收到包含数百列最近在 SCADA 系统中实现的数据传感器读数的新块时,会发生什么(是否有必要关闭监控系统以将新的传感器数据整合到分析当中,以及要关闭多久)?
* 复杂的人工智能/机器学习机制(推荐、监控、预测)依赖于彼此的结果。 要调整这些人工智能/机器学习机制的功能以适应输入数据的变化,每月需要多少人工工时? 人工智能/机器学习机制在支持制定业务决策方面的总体“延迟”是多少(支持信息的刷新频率对比新输入数据的馈送频率)?
综合考虑包括上述在内的示例后,我们总结了以下因过渡到使用实时机器学习和人工智能而出现的挑战:
* 我们对于自家公司的人工智能/机器学习机制的创建和适应速度(相对于形势变化的速度)是否满意?
* 我们的人工智能/机器学习解决方案在支持制定实时业务决策方面的表现如何?
* 我们的人工智能/机器学习解决方案能否自适应(即无需开发者介入即可继续工作)以应对数据漂移和由此产生的业务决策制定方法的变化?
本文综合概述了 InterSystems IRIS 平台在全面支持人工智能/机器学习机制部署、人工智能/机器学习解决方案装配(集成)和基于密集数据流的人工智能/机器学习解决方案训练(测试)方面的功能。 我们将关注市场研究、人工智能/机器学习解决方案实例以及我们在本文中称为实时人工智能/机器学习平台的概念方面的内容。
#### 调查内容:实时应用类型
由 Lightbend 在 2019 年面向约 800 名专业 IT 人士进行的[调查](https://www.lightbend.com/white-papers-and-reports/survey-streaming-data-future-tech-stack),结果不言自明:
_图 1:实时数据的主要使用者_
我们将引用该调查结果报告中对我们最重要的片段:“… 流式传输数据流水线和基于容器的基础架构有着并驾齐驱的增长趋势,二者相结合可应对在更快、更高效且更敏捷地交付有影响力的结果方面存在的竞争压力。 与传统的批处理相比,流式传输能够更快地从数据中提取有用信息。 它还可以及时地集成高级分析数据,例如基于人工智能和机器学习 (AI/ML) 模型的推荐,所有功能都旨在通过提高客户满意度来实现差异化竞争优势。 时间压力也会对 DevOps 团队构建和部署应用造成影响。 诸如 Kubernetes 等基于容器的基础架构可帮助常要通过快速、重复构建和部署应用以应对变化的团队化解其面对的许多效率低下和设计问题。 … 804 位 IT 专业人士提供了有关其组织内使用流式处理的应用的详细信息。 受访者主要来自西方国家/地区(欧洲占比 41%,北美占比 37%),任职于大中小型组织的人数占比大致相等。 … … 人工智能并非投机炒作。 在已于人工智能/机器学习生产应用中使用流式处理的受访者中,有 58% 的人表示明年将出现一些最大幅增长。
* 受访者一致认为人工智能/机器学习用例将于明年出现一些最大幅增长。
* 随着实时数据处理得到更大规模的利用,不仅会拓宽在不同用例中采用的广度,还会加大在现有用例中采用的深度。
* 除了人工智能/机器学习之外,物联网流水线采用者的热情也十分高昂 — 有 48% 已经整合物联网数据的人员表示,此用例将于近期出现一些最大幅增长。 … ”
这项非常有趣的调查表明,机器学习和人工智能场景是实时数据的主要使用者,这种看法已得到广泛认可。 另一个重要的收获是透过 DevOps 视角折射出的对于人工智能/机器学习的看法:我们现在已经可以断言,仍占主导地位的“基于完全已知数据集的一次性人工智能/机器学习”文化已发生转变。
#### 实时人工智能/机器学习平台概念
实时人工智能/机器学习最典型的使用领域之一是工业中的制造过程管理。 让我们以这一领域为例并考虑上述所有想法,为实时人工智能/机器学习平台的概念给出确切的定义。 使用人工智能和机器学习来满足制造过程管理的需求具备多项与众不同的特性:
* 有关制造过程状况的数据会非常密集地生成:生成频率高、涉及参数广泛(SCADA 系统每秒可传输数以万计的参数值)
* 有关检测到的缺陷的数据(且不说不断演化的缺陷,它们反而是稀少且偶发的数据)已知存在缺陷分类不足和定位不及时的问题(通常以人工记录的形式在纸上找到)
* 从实际角度来看,模型训练和应用只有一个“观察窗口”,可反映以最近的过程参数读数作为结尾的合理移动间隔内的过程动态
这些特性使我们除了需要实时接收和基本处理来自制造过程的密集“宽带信号”之外,也需要以实时方式执行(并行)人工智能/机器学习模型应用、训练和准确率控制。 我们的模型在移动观察窗口中“看到”的“框架”在不断变化 – 基于之前某一“框架”训练的人工智能/机器学习模型在准确率方面也会发生变化。 如果人工智能/机器学习建模准确率下降(例如,“警报范数”分类误差的值超过了给定的容差边界),则应自动触发基于较新“框架”的重新训练 – 同时,在选择开始重新训练的时刻时,必须考虑到重新训练过程持续时间和当前模型版本的准确率下降速度(因为在获得“重新训练”版本的模型之前,在执行重新训练的过程期间会一直持续应用当前版本)。 InterSystems IRIS 拥有关键的平台内功能,可充分支持用于制造过程管理的实时人工智能/机器学习解决方案。 这些功能可以分为三大类:
* 基于 InterSystems IRIS 平台实时运行的生产解决方案中新的或经修改的现有人工智能/机器学习机制的持续部署/交付 (CD)
* InterSystems IRIS 平台的单一生产解决方案中的入站过程数据流、人工智能/机器学习模型应用/训练/准确率控制队列、围绕与数学建模环境实时交互的数据/代码/编排的持续集成 (CI)
* 在使用传递自 InterSystems IRIS 平台的数据、代码和编排(“决策制定”)的数学建模环境中执行的人工智能/机器学习机制的持续训练 (CT)
将与机器学习和人工智能相关的平台功能归入上述类别并非随意而为。 我们引用了由 Google 发表的方法论[文章](https://cloud.google.com/solutions/machine-learning/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning),文中为这种分组提供了概念基础:“… DevOps 是开发和运行大规模软件系统的一种常见做法。 这种做法具有诸多优势,例如缩短开发周期、提高部署速度、实现可靠的发布。 如需获得这些优势,您需要在软件系统开发中引入两个概念:
* 持续集成 (CI)
* 持续交付 (CD)
机器学习系统是一种软件系统,因此类似的做法有助于确保您能够可靠地大规模构建和运行机器学习系统。 但是,机器学习系统在以下方面与其他软件系统不同:
* 团队技能:在机器学习项目中,团队通常包括数据科学家或机器学习研究人员,他们主要负责进行探索性数据分析、模型开发和实验。 这些成员可能不是经验丰富的、能够构建生产级服务的软件工程师。
* 开发:机器学习在本质上具有实验性。 您应该尝试不同的特征、算法、建模技术和参数配置,以便尽快找到问题的最佳解决方案。 您所面临的挑战在于跟踪哪些方案有效、哪些方案无效,并在最大程度提高代码重复使用率的同时维持可重现性。
* 测试:测试机器学习系统比测试其他软件系统更复杂。 除了典型的单元测试和集成测试之外,您还需要验证数据、评估经过训练的模型质量以及验证模型。
* 部署:在机器学习系统中,部署不是将离线训练的机器学习模型部署为预测服务那样简单。 机器学习系统可能会要求您部署多步骤流水线以自动重新训练和部署模型。 此流水线会增加复杂性,并要求您自动执行部署之前由数据科学家手动执行的步骤,以训练和验证新模型。
* 生产:机器学习模型的性能可能会下降,不仅是因为编码不理想,而且也因为数据资料在不断演变。 换句话说,与传统的软件系统相比,模型可能会通过更多方式衰退,而您需要考虑这种降级现象。 因此,您需要跟踪数据的摘要统计信息并监控模型的在线性能,以便系统在值与预期不符时发送通知或回滚。
机器学习和其他软件系统在源代码控制的持续集成、单元测试、集成测试以及软件模块或软件包的持续交付方面类似。 但是,在机器学习中,有一些显著的差异:
* CI 不再仅仅测试和验证代码及组件,而且还会测试和验证数据、数据架构和模型。
* CD 不再针对单个软件包或服务,而会针对应自动部署其他服务(模型预测服务)的系统(机器学习训练流水线)。
* CT 是机器学习系统特有的一个新属性,它主要涉及自动重新训练和提供模型。 …
我们可以得出结论,基于实时数据的机器学习和人工智能需要更为广泛的工具和更加丰富的功能(从代码开发到数学建模环境编排)、所有功能和主题领域之间更加紧密的集成、更好的人力及机器资源管理。
#### 实时场景:识别进料泵中出现的缺陷
继续以制造过程管理领域为例,我们将探讨一个已在开头引用过的实际案例:需要建立一种基于制造过程参数值流以及维护人员缺陷检测报告来实时识别进料泵中出现的缺陷的机制。
_图 2:识别出现缺陷的案例解析_
许多类似的实际案例中都有一个共同的特点,即在考虑规律且及时地馈送数据 (SCADA) 时,还需要同时考虑偶发且不规则地检测(和记录)各种缺陷类型。 换句话说:SCADA 数据每秒馈送一次以供分析,但需要用纸笔记录缺陷并注明日期(例如:“1 月 12 日– 第三轴承区域漏油渗入泵盖”)。 因此,我们可以通过添加以下重要限制来对案例解析加以补充:我们只有一种具体缺陷类型的“指纹”(即具体缺陷类型由截至具体日期的 SCADA 数据表示 – 该特定缺陷类型没有其他示例)。 这一限制立即使我们脱离了假定有大量可用“指纹”的传统机器学习范式(监督学习)。
_图 3:细化缺陷识别案例解析_
我们能否以某种方式“倍增”我们可用的“指纹”? 是的,可以。 泵的当前状况由其与已记录缺陷的相似度表征。 即使不运用定量方法,仅通过观察从 SCADA 系统接收到的参数值的动态,也可以了解很多信息:
_图 4:泵状况动态与具体缺陷类型“指纹”_
然而,视觉感知(至少目前)在我们动态发展的场景中并不是最合适的机器学习“标签”生成器。 我们将使用统计检验来评估当前泵状况与已记录缺陷的相似度。
_图 5:对传入数据与缺陷“指纹”应用统计检验_
统计检验可评估一组包含制造过程参数值的记录(以“批次”形式取自 SCADA 系统)与具体缺陷“指纹”的记录相似的概率。 使用统计检验(统计相似度指数)评估的概率随后会被转换为 0 或 1,成为我们评估相似度的每组记录中的机器学习“标签”。 即,使用统计检验处理获取到的一批泵状况记录后,我们就能够 (a) 将该批次添加到人工智能/机器学习模型的训练数据集以及 (b) 评估人工智能/机器学习模型当前版本应用于该批次时的准确率。
_图 6:对传入数据与缺陷“指纹”应用机器学习模型_
在之前的一期[在线讲座](https://youtu.be/-gyvCTBHh-0)中,我们展示并讲解了 InterSystems IRIS 平台如何将任何人工智能/机器学习机制实现为能够控制建模输出似然并调整模型参数的持续执行的业务流程。 我们实现泵场景依赖于在线讲座中介绍的完整 InterSystems IRIS 功能 – 这些功能在作为我们的解决方案一部分的 ANALYZER 流程中使用,通过自动管理训练数据集实现强化学习,取代了传统的监督学习。 我们会将在应用统计检验(相似度指数转换为 0 或 1)和当前版本的模型之后呈现“检测一致性”(即统计检验和模型基于这些记录均输出 1)的记录添加到训练数据集中。 重新训练模型时,在其验证阶段(将新训练的模型应用于自身的训练数据集,在此之前需要对该数据集提前进行统计检验),应用统计检验后“未能保持”输出 1 的记录(由于训练数据集中永远存在属于原始缺陷“指纹”的记录)将从训练数据集中移除,并基于缺陷“指纹”和数据流中的“成功”记录训练新版本模型。
_图 7:InterSystems IRIS 中人工智能/机器学习计算的机器人化_
如果需要对通过 InterSystems IRIS 中的本地计算获得的检测准确率寻求“第二意见”,我们可以创建一个顾问流程,以使用云提供商(例如 Microsoft Azure、Amazon Web Services、 Google Cloud Platform 等)基于控制数据集重做模型训练/应用):
_图 8:来自 Microsoft Azure 的“第二意见”,由 InterSystems IRIS 编排_
我们场景的原型在 InterSystems IRIS 中实现为分析过程的代理系统,与设备(泵)、数学建模环境(Python、R 和 Julia)交互,并支持所有相关人工智能/机器学习机制的自我训练 – 基于实时数据流。
_图 9:InterSystems IRIS 中实时人工智能/机器学习解决方案的核心功能_
基于我们的原型获得的一些实际结果:
* 由模型检测到的缺陷“指纹”(1 月 12 日):
* 模型检测到的原型已知“指纹”中未包含的新出现的缺陷(于 9 月 11 日检测到,而缺陷本身在两天后,即 9 月 13 日被维修队发现):
对包含多次发生相同缺陷的真实数据进行的模拟表明,我们使用 InterSystems IRIS 平台实现的解决方案可以在维修队发现问题的几日之前检测到缺陷。
#### InterSystems IRIS – 适用于实时人工智能/机器学习计算的多功能通用平台
[InterSystems IRIS](https://www.intersystems.com/isc-resources/wp-content/uploads/sites/24/InterSystems_IRIS_Data_Platform-Unified_Platform_for_Powering_Real-time_Data-intensive_Applications-Whitepaper.pdf) 是一款完整、统一的平台,可简化实时富数据解决方案的开发、部署和维护。 它提供了并发事务和分析处理能力,支持多个完全同步的数据模型(关系、分层、对象和文档),一个可集成不同数据孤岛和应用的完整的互操作性平台,以及支持批处理和实时用例的复杂结构化和非结构化分析功能。 该平台还提供了一个开放的分析环境,可将同类最佳的分析整合到 InterSystems IRIS 解决方案中,并提供灵活的部署功能以支持云和本地部署的任意组合。 由 InterSystems IRIS 平台提供支持的应用目前已在各行各业中得到广泛使用,帮助公司在战略和战术执行中获得切实的经济利益,促进明智的决策制定并消除事件、分析和行动之间的“差距”。
_图 10:实时人工智能/机器学习背景下的 InterSystems IRIS 架构_
与上图相同,下图将新的“基础”(CD/CI/CT) 与平台工作元素之间的信息流结合起来。 可视化始于 CD 宏机制,并继续贯穿于 CI/CT 宏机制。
_图 11:InterSystems IRIS 平台人工智能/机器学习工作元素之间的信息流图_
InterSystems IRIS 中 CD 机制的基本要素:平台用户(人工智能/机器学习解决方案开发者)使用专门的人工智能/机器学习代码编辑器调整现有和/或创建新的人工智能/机器学习机制。上述代码编辑器为 Jupyter(全称:Jupyter Notebook;为简洁起见,在此编辑器中创建的文档也常被称为相同的名称)。 在 Jupyter 中,开发者可以在传输(“部署”)到 InterSystems IRIS 之前编写、调试和测试(也使用可视化表示)具体的人工智能/机器学习机制。 显然,以这种方式开发的新机制只能进行基本的调试(特别是因为 Jupyter 不处理实时数据流)– 但我们对此没有意见,因为原则上,在 Jupyter 中开发代码的主要目标是验证单独的人工智能/机器学习机制的功能。 类似地,已部署在平台中的人工智能/机器学习机制(请参阅其他宏机制)在调试前可能需要“回滚”到其“平台前”版本(从文件读取数据、通过 xDBC 而非本地表或 global(即 InterSystems IRIS 中的多维数据数组)访问数据等)。 在 InterSystems IRIS 中实现 CD 具有一项重要特性:平台和 Jupyter 之间存在双向集成关系,支持在平台内部署(利用进一步的平台内处理)Python、R 和 Julia 内容(三种语言均为各自主要开源数学建模环境的编程语言)。 也就是说,人工智能/机器学习内容开发者获得了在平台中“持续部署”其内容的能力,同时能够使用其常用 Jupyter 编辑器以及 Python、R、Julia 所提供的常用函数库,在平台外部提供基本的调试功能(必要情况下)。 继续聊聊 InterSystems IRIS 中的 CI 宏机制。 该图展示了“实时机器人化”的宏流程(一组数据结构、以数学环境语言编写的业务流程和代码段,以及以其编排的 InterSystems IRIS 原生开发语言 ObjectScript)。 宏流程的目标是:支持人工智能/机器学习机制运行所需的数据处理队列(基于实时传输到平台的数据流),对人工智能/机器学习机制的排序和“分类” (又名 “数学算法”、“模型”等 – 可根据实现细节和术语偏好采用多种不同名称)做出决策,对围绕人工智能/机器学习输出(多维数据集、表格、多维数据数组等 – 生成报告、仪表板等)的智能保持最新的分析结构。 在 InterSystems IRIS 中实现 CI 具有一项重要特性:平台和数学建模环境之间存在双向集成关系,支持在平台内执行使用 Python、R 或 Julia 在各自的环境中编写的内容并接收执行结果。 这种集成在“终端模式”(即人工智能/机器学习内容被制定为对数学环境执行标注的 ObjectScript 代码)和“业务流程模式”(即人工智能/机器学习内容被制定为使用可视化编辑器、Jupyter 或 IDE(IRIS Studio、Eclipse、Visual Studio Code)的业务流程)下均适用。 需要使用 CI 层内的 IRIS 和 CD 层内的 Jupyter 之间的链接指定在 Jupyter 中编辑业务流程的可用性。 本文将进一步提供与数学建模环境相集成的更为详细的概述。 我们认为此时完全有理由向您说明,平台中提供了将人工智能/机器学习机制(源自“持续部署”)“持续集成”到实时人工智能/机器学习解决方案中所需的所有工具。 最后要聊到的是至关重要的宏机制:CT。 没有它,就不会存在人工智能/机器学习平台(即便可以通过 CD/CI 实现“实时”)。 CT 的本质是平台能够在数学建模环境的会话中直接操作机器学习和人工智能的“工件”:模型、分布表、向量/矩阵、神经网络层等。 在大多数情况下,这种“互操作性”体现于在环境中创建上述工件(例如,对于模型,“创建”包括模型规范及其参数的后续评估,即所谓的模型“训练”),对工件进行应用(对于模型:借助目标变量的“建模”值进行计算 – 预测、类别指定、事件概率等),以及对已经创建的和应用的工件进行改进 (例如,通过根据模型的性能重新定义模型的输入变量以便提高预测准确率,作为一种可行选项)。 CT 角色的关键属性是它对 CD 和 CI 现实的“抽象”:CT 可以在具体环境中存在的限制下使用人工智能/机器学习解决方案的计算和数学细节来实现所有工件。 将由 CD 和 CI 负责“提供输入数据”和“交付输出”。 在 InterSystems IRIS 中实现 CT 具有一项重要特性:使用上述与数学建模环境的集成时,平台可以从其编排的数学环境内的会话中提取工件,并且(最重要的是)将它们转换为平台内数据对象。 例如,刚刚在 Python 会话中创建的分布表可以(无需暂停 Python 会话)传输到平台中作为 global(InterSystems IRIS 中的多维数据数组),并进一步重用于在不同的人工智能/机器学习机制下的计算(使用不同环境的语言实现,如 R),或者作为虚拟表。 另一个示例:与模型的“例程”功能并行(在 Python 会话中),它的输入数据集使用“自动机器学习”进行处理 – 自动搜索优化的输入变量和模型参数。 与“例程”训练一起,生产模型可以实时接收“优化建议”,以根据调整后的输入变量集、调整后的模型参数值(不再是 Python 训练的结果,而是作为其“替代”版本的训练结果,例如使用 H2O 框架),使整个人工智能/机器学习解决方案能够以自主方式处理输入数据和建模对象/流程中不可预见的漂移。 我们现在将以现有原型为例,深入了解 InterSystems IRIS 的平台内人工智能/机器学习功能。 在下图中,在图像的左侧部分,我们看到了实现 Python 和 R 脚本执行的业务流程的片段。 在中央部分,我们看到了执行这些脚本后的 Python 和 R 的相应可视化日志。 接下来是两种语言的内容示例,在各自环境中执行。 右侧为基于脚本输出的可视化。 右上角的可视化使用 IRIS Analytics 开发(数据从 Python 传输到 InterSystems IRIS 平台,并使用平台功能呈现在仪表板中),右下角所示为直接在 R 会话中获取并从中传输到图形文件的内容。 重要说明:所讨论的业务流程片段在此原型中负责基于从设备模拟器流程实时接收的数据进行模型训练(设备状况分类),该流程由监控分类模型性能的分类准确率监控流程触发。 文中会进一步讨论将人工智能/机器学习解决方案实现为一组交互式业务流程(“代理”)。
_图 12:在 InterSystems IRIS 中与 Python、R 和 Julia 的交互_
平台内流程(又称 “业务流程”、“分析过程”、“流水线”等,具体取决于上下文)可以编辑,首先是使用平台中的可视化业务流程编辑器,所用方式可同时创建流程图及其相应的人工智能/机器学习机制(代码)。 我们所说的“创建人工智能/机器学习机制”是指从一开始就进行混合(在流程级别):使用数学建模环境的语言编写的内容与使用 SQL (包括 [IntegratedML](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GIML) 扩展程序)、InterSystems ObjectScript 以及其他支持的语言编写的内容相邻。 此外,平台内范式以嵌入片段集的形式(如下图所示)为“绘制”流程提供了广泛的功能,有助于高效地构建有时相当复杂的内容,避免视觉组合中的“随机失活” (“非可视化”方法/类/过程等)。 即,在必要情况下(可能在大多数项目中),可以采用可视化的自文档格式实现整个人工智能/机器学习解决方案。 请您注意下图中心部分,该部分展示了“更高级的嵌入向量层”,并表明除了这样的模型训练(使用 Python 和 R 实现)之外,还有针对训练模型的所谓 ROC 曲线分析,可对其训练质量进行视觉(和计算)评估 – 该分析使用 Julia 语言实现(在其各自的 Julia 环境中执行)。
_图 13:InterSystems IRIS 中的视觉人工智能/机器学习解决方案组合环境_
如前所述,已实现的平台内人工智能/机器学习机制的初始开发和(在其他情况中)调整将在平台外部的 Jupyter 编辑器中执行。 在下图中,我们可以找到一个编辑现有平台内流程的示例(与上图中的流程相同)– 这就是其模型训练片段在 Jupyter 中的外观。 Python 语言的内容支持在 Jupyter 中编辑、调试、查看内嵌计算图。 更改(如果需要)可以立即复制到平台内流程,包括其生产版本。 同样,新开发的内容也可以复制到平台(自动创建一个新的平台内流程)。
_图 14 在 InterSystems IRIS 中使用 Jupyter Notebook 编辑平台内人工智能/机器学习机制_
平台内流程的编辑不仅可以使用可视化或笔记本格式执行,还可以使用“完整”的 IDE(集成开发环境)格式执行。 IDE 为 IRIS Studio(原生 IRIS 开发工作室)、Visual Studio Code(VSCode 的 InterSystems IRIS 扩展程序)和 Eclipse(Atelier 插件)。 在某些情况下,开发团队可以同时使用全部三种 IDE。 下图展示了在 IRIS Studio、Visual Studio Code 和 Eclipse 中编辑完全相同流程的示例。 内容的任何部分都完全可以编辑:Python/R/Julia/SQL、ObjectScript 和业务流程元素。
_图 15:在各种 IDE 中编辑 InterSystems IRIS 业务流程_
在 InterSystems IRIS 中使用业务流程语言 (BPL) 组合和执行业务流程的方法值得特别提及。 BPL 允许在业务流程中使用“预先配置的集成组件”(活动)– 确切地说,这让我们有权声明 IRIS 支持“持续集成”。 预配置的业务流程组件(活动和活动之间的链接)对于装配人工智能/机器学习解决方案而言是极其强大的加速器。 不仅用于装配:由于活动及其链接,在不同的人工智能/机器学习机制之上引入了“自主管理层”,能够根据具体情况做出实时决策。
_图 16:InterSystems IRIS 平台中用于持续集成 (CI) 的预配置业务流程组件_
代理系统(又名 “多代理系统”)的概念在机器人化领域被广泛接受,InterSystems IRIS 平台通过其“生产/流程”结构为其提供有机支持。 除了使用整体解决方案所需的功能“武装”每个流程的无限能力之外,“代理”作为平台内流程家族中的一员,能够为非常不稳定的建模现象(社会/生物系统的行为, 实施部分观察的制造过程等)创建高效的解决方案。
_图 17:在 InterSystems IRIS 中以业务流程代理系统形式运行的人工智能/机器学习解决方案_
现在继续概述 InterSystems IRIS 平台,我们将向您展示包含适用于所有实时场景类别的解决方案的应用领域(我们在之前的一期[在线讲座](https://youtu.be/N6tN48hCnE4)中提供了对一些基于 InterSystems IRIS 的平台内人工智能/机器学习最佳做法的十分详细的发现) 。 紧接上图,我们在下面提供了一幅更具说明性的代理系统图。 在该图中,完全相同的原型显示了其四个代理流程以及它们之间的交互: GENERATOR – 模拟设备传感器的生成数据;BUFFER – 管理数据处理队列;ANALYZER – 执行机器学习;MONITOR – 监控机器学习质量以及在有必要重新训练模型时发出信号。
_图 18:在 InterSystems IRIS 中以业务流程代理系统形式构成的人工智能/机器学习解决方案_
下图展示了不同机器人化原型(文本情感分析)在一段时间内的运行。 上半部分 – 模型训练质量指标演变(质量提高),下半部分 – 模型应用质量指标和重新训练(红条)的动态。 正如所见,该解决方案显示出有效且自主的自我训练,同时继续以所需的质量水平运行(质量指标值保持在 80% 以上)。
_图 19:基于 InterSystems IRIS 平台的持续(自)训练 (CT)_
我们之前已经提到过“自动机器学习”,在下图中,我们将以另一个原型为例提供有关此功能的更多详细信息。 在业务流程片段图中,我们看到了在 H2O 框架中启动建模的活动,以及该建模的结果(与其他“手工”模型相比,获得的模型在 ROC 曲线方面具有明显优势,以及自动检测原始数据集中可用变量中“最具影响力的变量”)。 这里的一个重要优势是“自动机器学习”可节省时间并提供专家资源:我们的平台内流程可以在半分钟内交付专家可能需要一周到一个月时间才能完成的工作(确定和证明最佳模型)。
_图 20:在基于 InterSystems IRIS 平台的人工智能/机器学习解决方案中嵌入的“自动机器学习”_
下图“直击高潮”,同时也很好地将有关各类实时场景的故事推向尾声:在此提醒您,尽管 InterSystems IRIS 可提供所有平台内功能,但在其编排下训练模型并非强制要求。 该平台可以接收来自在非平台编排工具中训练的模型的外部来源的所谓 PMML 规范,然后自其导入 [PMML 规范](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=APMML)之时起继续实时应用该模型。 请务必记住,尽管大多数最广泛使用的人工智能/机器学习工件都支持,但并非每个给定的人工智能/机器学习工件都可以解析为 PMML 规范。 因此,InterSystems IRIS 是一种开放的平台,对其用户而言完全不存在“平台奴役”情况。
_图 21:InterSystems IRIS 平台中基于 PMML 规范的模型应用_
让我们聊聊 InterSystems IRIS 平台的其他优势(为了更好地说明,请参考制造过程管理),这些优势对于人工智能和机器学习的实时自动化非常重要:
* 强大的集成框架,可与任何数据源和数据使用者(SCADA、设备、MRO、ERP 等)互操作
* 内置多模型数据库管理系统,用于无限量制造过程数据的高性能混合事务和分析处理 (HTAP)
* 用于将人工智能/机器学习机制持续部署到基于 Python、R、Julia 的实时解决方案的开发环境
* 用于持续集成到人工智能/机器学习机制的实时解决方案和(自)训练的自适应业务流程
* 用于制造过程数据和人工智能/机器学习解决方案输出可视化的内置商业智能功能
* API 管理,可将人工智能/机器学习输出提供给 SCADA、数据集市/仓库、通知引擎等。
在 InterSystems IRIS 平台中实现的人工智能/机器学习解决方案可轻松适应现有的 IT 基础架构。 得益于高可用性和灾难恢复配置支持,以及在虚拟环境、物理服务器、私有云和公共云、Docker 容器中的灵活部署能力,InterSystems IRIS 能够有效保障人工智能/机器学习解决方案的可靠性。 也就是说,InterSystems IRIS 确实是实时人工智能/机器学习计算的多功能通用平台。 我们平台的多功能特质在实际应用中得到了证明:对实现计算的复杂性实际上毫无限制;InterSystems IRIS 能够结合(实时)执行不同行业的场景;具有出色的适应性,能够提供满足用户具体需求的任何平台内功能和机制。
_图 22:InterSystems IRIS — 适用于实时人工智能/机器学习计算的多功能通用平台_
为了与对本文感兴趣的读者进行更加具体的对话,我们建议您继续与我们进行“实时”交流。 我们将随时提供支持,制定与贵公司具体情况相吻合的实时人工智能/机器学习场景,运行基于 InterSystems IRIS 平台的协作原型设计,设计和执行路线图以在您的制造及管理过程中实现人工智能和机器学习。 我们人工智能/机器学习专家团队的联系电子邮件:。
文章
Michael Lei · 八月 31, 2021
InterSystemsIRIS® 数据平台在性能、分析/搜索和事务等标准中获得最高分
转载自Forester 报告:
InterSystems是一个高性能的数据平台,具有强大的支持和可靠性。InterSystems的IRIS数据平台支持关系型、对象型、文档型、键值型、立方体和多维数组,但它没有原生的图形功能。该平台不需要整合多种技术栈,从而减少了代码、系统资源和维护。客户用它来支持客户分析、物联网、支持AI/ML的应用程序、风险分析和垂直特定的用例,如医疗保健应用程序和洞察力。InterSystems的愿景侧重于一个统一的平台,以支持各种应用和洞察力。该解决方案在性能、分析、搜索和交易方面得分很高。参考客户对InterSystems很满意;一个客户说:"他们的客户支持总是超级好。"另一个客户说他们 "在一个关键任务的应用中使用了10多年,对性能和功能以及可靠性总体上很满意。"
Forester 报告原文下载:https://reprints2.forrester.com/#/assets/2/1735/RES161621/report
文章
Michael Lei · 十月 10, 2022
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
注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。
主要需要设置下面几个内存相关配置:
(下面比例适用于服务器仅运行单实例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 · 五月 15, 2022
有一个简单的新方法可以在Windows和Mac上的InterSystems IRIS 2019.1(和2018.1.2)的SSL/TLS配置中添加证书授权(CA)证书。 你可以通过输入以下内容要求IRIS使用操作系统的证书存储。
%OSCertificateStore
在 "包含受信任证书颁发机构X.509证书的文件 "栏中输入:%OSCertificateStore。 这里有一张如何在门户中这样做的图片:
这里有一个描述这个问题的文档链接。 它在 "包含受信任的证书颁发机构证书的文件 "的选项列表中。
这就是你需要做的所有事情! 现在,这个配置将接受由操作系统证书库中列出的任何CA颁发的证书。
文章
Nicky Zhu · 十一月 2, 2021
目录
技术概要:InterSystems 云管理器(Cloud Manager) 1
ICM 能为您做什么? 1
ICM 是如何工作的? 1
试一试!使用 ICM 在云中部署 InterSystems IRIS 2
安装 Docker 3
下载 ICM 映像 3
启动 ICM 3
获取云供应商帐户和证书 3
生成安全密钥 4
自定义示例配置文件 4
配置基础设施 9
部署 InterSystems IRIS 10
尝试 ICM 管理命令 11
取消配置基础设施 12
ICM 能做的远不止这些! 13
了解有关 ICM 的更多信息 13
插图目录
图 1: ICM 让一切变得简单 2
图 2: 云供应商的 ICM 默认文件示例 8
图 3: 交互式 ICM 命令 11
技术概要:InterSystems 云管理器(Cloud Manager)
本文向您介绍了 InterSystems 云管理器(InterSystems Cloud Manager,ICM),这是基于 InterSystems IRIS®数据平台的应用程序的端到端云配置和部署解决方案。
作为本指南的一部分,您将使用 ICM 在公共云中配置基础设施,并在该基础设施上部署 InterSystems IRIS。
要浏览所有的技术概要(First Looks),包括那些可以在免费的云实例或 web 实例上执行的技术概要(First Looks),请参见 InterSystems First Looks(《InterSystems 技术概要》)。
ICM 能为您做什么?
欢迎来到云时代(Cloud Age)! 您是否对它的机会虎视眈眈,但又对它的挑战保持警惕?具体来说,
您是否渴望利用云,但又犹豫是否要投入资源进行复杂的迁移?
您是否已经在云中,但还在努力寻找一种方法,以便在各种软件环境中管理部署和版本化您的应用程序?
您是否希望将持续集成和交付引入您的软件工厂,并将 DevOps 方法引入您的部署过程?也就是说,您想把自己从传统实践、库依赖、系统漂移、手动升级和其他开销的限制和风险中解放出来吗?
ICM 可以提供帮助! ICM 为您提供了一种简单、直观的方法来配置云基础设施并在其上部署服务,帮助您现在就进入云,而无需进行重大开发或重组。基础设施即代码 (infrastructure as code,IaC) 和容器化部署的优势使得在 Google、Amazon 和 Azure 等公共云平台或私有 VMware vSphere 云上部署基于 InterSystems IRIS 的应用程序变得容易。定义您想要的内容,发布一些命令,剩下的工作由 ICM 来完成。
即使您已经在使用云基础设施、容器,或者同时使用两者,ICM 也可以通过自动化大量手动步骤,极大地减少配置和部署应用程序所需的时间和精力。
ICM 是如何工作的?
在您输入的纯文本配置文件的指导下,ICM 使用 Hashicorp 流行的 Terraform IaC 工具配置您的基础设施,并根据需要配置的主机节点。在下一阶段,ICM 将 InterSystems IRIS 和您的应用程序部署在 Docker 容器中,如果需要,还可以部署其他服务。您想要的部署所需的所有 InterSystems IRIS 配置都是自动执行的。ICM 还可以在现有的虚拟和物理集群上部署容器化服务。
ICM 本身带有一个容器映像,其中包含您所需要的一切。从 InterSystems 的 ICM 映像下载并运行容器,打开命令行,您就可以开始了。ICM 通过组合这些元素,使一切变得简单:
可以用作模板以快速定义所需部署的示例配置文件。
可以向其中添加应用程序的 InterSystems IRIS 映像。
试一试! 使用 ICM 在云中部署 InterSystems IRIS
每个任务的用户友好命令。
管理已配置节点和部署在其上的服务并与之交互的多种方法。
图 1: ICM 让一切变得简单
试一试!使用 ICM 在云中部署 InterSystems IRIS
ICM 为您执行许多任务,并为您提供许多选项,以帮助您准确地部署您所需要的内容,所以在生产中使用它需要一定的计划和准备(尽管比手动方法要少得多!)。但配置和部署过程很简单,ICM 可以为您做出许多决定。这一探索旨在让您亲眼看到 ICM 是如何工作的,以及使用 ICM 在亚马逊网络服务(Amazon Web Services,AWS)上部署 InterSystems IRIS 配置是多么容易。虽然这不是一时的工作,但这种探索不应该占用您太多的时间,您可以在机会出现时分阶段进行。
为了让您体验 ICM 而又不至于在细节上陷入困境,我们保持了简单的探索;例如,我们让您尽可能多地使用默认设置。但是,当您把 ICM 引入您的生产系统时,您需要做很多不同的事情,特别是(但不限于)安全方面。所以请确保不要把这种对 ICM 的探索与真实的情况相混淆! 本文档末尾提供的参考资料将使您对在生产中使用 ICM 的情况有一个很好的了解。ICM Guide(《ICM 指南》)提供了使用 ICM 的完整信息和程序,并在适当的地方提供了链接。
这些说明假定您具备以下条件:
特定于容器的 InterSystems IRIS 分片(sharding)许可证并可以访问 InterSystems 软件下载。
亚马逊网络服务(Amazon Web Services,AWS)、谷歌云平台(Google Cloud Platform,GCP)、微软云(Azure)或腾讯云(Tencent)上的帐户。
在配置文件中指定的许多属性在这些云平台上是通用的,但其他属性是特定于平台的。有关这些差异的详细信息可在 ICM Guide(《ICM 指南》)的"ICM Reference(《ICM 参考资料》)"一章中的"Provider-Specific Parameters(特定于供应商的参数)"部分找到。
试一试! 使用 ICM 在云中部署 InterSystems IRIS
安装 Docker
ICM 是作为容器映像提供的,它包含您需要的所有内容。因此,对启动 ICM 的 Linux、macOS 或 Microsoft Windows 系统的唯一要求是安装 Docker,并运行 Docker 守护进程,以及系统连接到 Internet。有关在您的平台上安装 Docker 的信息,请参见 Docker 文档中的 Install Docker(《安装 Docker》)。
重要提示: Docker 企业版(Enterprise Edition)和社区版(Community Edition)18.09 及更高版本支持 ICM;企业版(Enterprise Edition)仅支持生产环境。
下载 ICM 映像(Image)
要使用 ICM,您需要将 ICM 映像下载到您正在工作的系统中;这要求您识别将从其中下载它的注册表和访问所需的凭证。同样,对于 ICM 部署 InterSystems IRIS 和其他 InterSystems 组件,它需要相关映像的此信息。ICM 下载映像的注册表必须能被您使用的云供应商访问(也就是说,不能在防火墙后面),而且为了安全起见,必须要求 ICM 使用您提供给它的凭证进行身份验证。有关识别所涉及的注册表和下载 ICM 映像的详细信息,请参见 InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)中的 Downloading the ICM Image(下载 ICM 映像)。
注意: 启动 ICM 的映像的主要版本和部署的 InterSystems 映像必须匹配。例如,您不能使用 2019.3 版本的 ICM 部署 2019.4 版本的 InterSystems IRIS。
有关在容器中使用 InterSystems IRIS 的简要介绍,包括实际操作经验, 请参见 First Look: InterSystems Products in Containers(《技术概要:容器中的 InterSystems 产品》);有关使用 ICM 以外的方法在容器中部署 InterSystems IRIS 和基于 InterSystems IRIS 的应用程序的详细信息,请参见 Running InterSystems IRIS in Containers(《在容器中运行 InterSystems IRIS》)。
启动 ICM
要在命令行上启动 ICM,使用下面的 docker run 命令,从注册表中拉出(下载)ICM 映像,从中创建一个容器,并启动该容器,例如:
docker run --name icm -it --cap-add SYS_TIME containers.intersystems.com/intersystems/icm:2021.1.0.205.0
ICM 容器中的 /Samples 目录,每个供应商都有一个(/AWS,/GCP,等等),旨在使您能够轻松地使用开箱即用的 ICM 进行配置和部署;您可以使用这些目录之一中的示例配置文件 ,也可以从该目录进行配置和部署。然而,由于这些目录在 ICM 容器内,当容器被删除时,其中的数据就会丢失,包括您的配置文件和 ICM 创建并用于管理配置的基础设施的状态目录。在生产中,最好的做法是在启动 ICM 时通过挂载外部卷使用容器外的位置来存储这些数据(请参见 Docker 文档中的 Manage data in Docker(在 Docker 中管理数据))。
获取云供应商帐户和证书
ICM 可以在四个公共云平台上进行配置和部署:亚马逊网络服务(Amazon Web Services,AWS)、谷歌云平台(Google Cloud Platform,GCP)、微软云(Azure)和腾讯云(Tencent)。
登录您的 AWS、GCP、Azure 或 Tencent 帐户。如果您和您的雇主都还没有帐户,您可以进入AWS、GCP、Azure或Tencent 门户页面,快速创建一个免费帐户。
有关获取 ICM 需要向每个云供应商进行身份验证的帐户凭证的信息,请参见 ICM Guide(《ICM 指南》)的 "ICM Reference(《ICM 参考资料》) "一章中的 Security- Related Parameters(安全相关的参数)。
试一试! 使用 ICM 在云中部署 InterSystems IRIS
生成安全密钥
ICM 与配置基础设施的云供应商、配置的节点上的 Docker 以及容器部署后的若干 InterSystems IRIS 服务进行安全的通信。您已经下载或识别了您的云证书;您还需要其他文件来启用安全的 SSH 和 TLS 通信。
您可以使用 ICM 提供的两个脚本来创建您需要的文件,keygenSSH.sh 脚本创建所需的 SSH 文件并将它们放在 ICM 容器的 /Samples/ssh 目录中。keygenTLS.sh 脚本创建所需的 TLS 文件,并将它们放在 /Samples/tls 中。
要在 ICM 命令行上运行这些脚本,请输入以下内容:
# keygenSSH.sh
Generating keys for SSH authentication.
...
# keygenTLS.sh
Generating keys for TLS authentication.
...
有关这些脚本生成的文件的更多信息,请参见 ICM Guide(《ICM指南》)中的 Obtain Security-Related Files(获取安全相关的文件)、ICM Security(ICM 安全)和 Security-Related Parameters(安全相关的参数)。
重要提示: 这些生成的密钥是为了方便您在本文体验和其他测试中使用;在生产中,您应该根据您公司的安全策略来生成或获取所需的密钥。这些脚本生成的密钥以及您的云供应商凭证必须完全安全,因为它们提供了对使用它们的任何 ICM 部署的完全访问权限。
自定义示例配置文件
要定义您希望 ICM 部署的配置,您在两个 JSON 格式的配置文件中包含所需的设置:默认文件和定义文件。前者(defaults.json)包含应用于整个部署的设置 --- 例如,您对云供应商的选择 ------而后者(definitions.json)定义了您想要的节点类型以及每种节点的数量,从而决定了您是部署一个分片集群、一个独立的 IRIS 实例,还是其他配置。
ICM 容器中的 /Samples 目录为所有四个云供应商提供示例配置文件。例如,AWS 的示例配置文件位于 /Samples/AWS 目录中。要自定义这些文件,请选择您要使用的供应商,然后按照下面的表格描述,为该供应商修改示例默认值和定义文件。要做到这一点,您可以使用 vi 等编辑器直接在容器内编辑它们,或者在本地命令行上使用 docker cp 命令将它们从容器复制到本地文件系统,然后在您编辑它们后再次返回,例如:
docker cp icm:/Samples/AWS/defaults.json . docker cp icm:/Samples/AWS/definitions.json .
...
docker cp defaults.json icm:/Samples/AWS docker cp definitions.json icm:/Samples/AWS
重要提示: 字段名和值都是区分大小写的;例如,要选择 AWS 作为云供应商,您必须在默认文件中包含 "Provider":"AWS" ,而不是 "provider": "AWS"、"Provider": "aws"等等。
自定义 defaults.json
下表详细说明了 /Samples 文件中提供的默认文件所需的最小自定义,以及对可选更改的建议。这里没有涉及到的任何设置都可以在示例文件中保持原样。
试一试! 使用 ICM 在云中部署 InterSystems IRIS
每个设置都连接到 ICM Guide(《ICM 指南》)的 "ICM Reference(《ICM 参考资料》)"一章中的 ICM Configuration Parameters(ICM 配置参数)部分中的相关表格,在那里您可以找到更详细的说明;在那里,搜索您想要的参数。最右边的列显示了在示例默认文件中出现的每个参数或参数集。
要查看所有供应商通用的所有设置,请参见该部分的 General Parameters(常规参数) ;要查看特定于特定供应商的所有设置,请参见 Provider-Specific Parameters(特定于供应商的参数)。
下图显示了 AWS、GCP、Azure 和 Tencent 的示例 defaults.json 文件的内容:
设置
说明
示例 defaults.json 文件中的条目
Provider
识别云基础设施供应商;保留示例 defaults.json 中的值。
“Provider”:[”AWS”|"GCP"|"Azure"|"Tencent"],
Label
配置节点的命名方案中的字段, Label-Role-Tag-NNNN (请参见下面的 Role);更新以识别部署的所有者和目的, 例如,使用您的公司名称和“TEST”来创建节点名称,如 Acme-DATA-TEST-0001。
"Label": "Sample",
Tag
(请参见上面的 Label )
"Tag": "TEST",
DataVolumeSize
为每个节点配置的持久化数据卷的大小,这可以在 definitions.json 文件中的各个节点定义中被覆盖;接受示例 defaults.json 中的值,除非您在 Tencent 上配置,在这种情况下,将其改为 60。
"DataVolumeSize": "10",
SSHUser
在配置节点上具有 sudo 访问权限的非根帐户,用于 ICM 访问; 您可以保留示例 defaults.json 中的默认值, 但如果您在 AWS 或 Tencent 上更改了机器映像(如下),则可能需要更新此条目。
"SSHUser": "ubuntu",(AWS & Tencent) "SSHUser": "sample",(GCP & Azure)
SSHPublicKey
SSH 公钥的位置。如果您使用了 Generate Security Keys(生成安全密钥)中讨论的密钥生成脚本, 则密钥位于示例文件指定的目录中,因此无需更改;如果您提供了自己的密钥, 请使用 docker cp 将它们从本地文件系统复制到这些位置。
"SSHPublicKey": "/Samples/ssh/insecure-ssh2.pub",
SSHPrivateKey
SSH 私钥的位置;请参见上面的 SSHPublicKey。
"SSHPrivateKey": "/Samples/ssh/insecure",
TLSKeyDir
TILS 文件的位置;请参见上面的 SSHPublicKey 。
"TLSKeyDir": "/Samples/tls/",
设置
说明
示例 defaults.json 文件中的条目
DockerVersion
要安装在已配置节点上的 Docker 版本;保持默认值。
"DockerVersion": "5:19.03.8~3-0~ubuntu-bionic",
DockerImage
要部署在已配置节点上的映像;更新以反映您在 Identify Docker Repository and Credentials(识别 Docker 存储库和凭证)中识别的存储库和映像信息。
"DockerImage": "containers.intersystems.con/intersystems/iris:2021.1.0.205.0",
DockerUser- name Docker- Password
如果在私有存储库中,则下载 DockerImage 指定的映像所需的凭证;请更新以反映您在 Identify Docker Repository and Credentials(识别 Docker 存储库和凭证)中识别的存储库信息和凭证。
"DockerUsername": "xxxxxxxxxxxx", "DockerPassword": "xxxxxxxxxxxx",
LicenseDir
InterSystems IRIS 许可证的暂存目录;将您的特定于容器的 InterSystems IRIS 分片(sharding)许可证放在这个目录中。
“LicenseDir”: “/Samples/Licenses”,
Region, Location (Azure)
供应商用于配置基础设施的计算资源的地理区域;接受示例 defaults.json 中的默认值,或者从供应商那里选择 region 和 zone 的另一个组合(如下)。
"Region": "us-west-1",(AWS) "Region": "us-east1",(GCP) "Location": "Central US",(Azure) "Region": "na-siliconvalley", (Tencent)
Zone
所选区域内的可用区(如上);接受示例 defaults.json 中的默认值,或者从供应商那里选择 region 和 zone 的另一个组合。
"Zone": "us-west-1c",(AWS) "Zone": "us-east1-b",(GCP) "Zone": "1",(Azure) "Zone": "na-siliconvalley-1", (Tencent)
Machine image (特定于供应商)
配置节点的平台和 OS 模板;接受示例 defaults.json 中的默认值,或者从供应商那里选择 machine image 和 instance type 的不同组合(如下)。
"AMI": "ami-c509eda6",(AWS) "Image": "ubuntu-os-cloud/ubuntu-1804-bionic-v20180617", (GCP) "PublisherName": "Canonical",(Azure) "Offer": "UbuntuServer",(Azure) "Sku": "18.04-LTS",(Azure) "Version": "18.04.201804262",(Azure) "ImageID": "img-pi0ii46r",(Tencent)
设置
说明
示例 defaults.json 文件中的条目
Instance type (特定于供应商)
配置节点的计算资源模板;接受示例 defaults.json 中的值,或者从供应商那里选择 machine image 和 instance type 的不同组合(如上)。
"InstanceType": "m4.large",(AWS) "MachineType": "n1-standard-1",(GCP) "Size": "Standard_DS2_v2",(Azure) "InstanceType": "S2.MEDIUM4",(Tencent)
Credentials and account settings (特定于供应商)
ICM 向供应商进行身份验证所需的文件或 ID,因供应商而异;更新以指定您的帐户所需的文件位置或 ID(有关说明,请点击供应商链接)。
“Credentials”:”/Samples/AWS/credentials”, (AWS) "Credentials": "/Samples/GCP/sample.credentials",(GCP) "Project": "dp-icmdevelopment",(GCP) "SubscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",(Azure) "ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",(Azure) "ClientSecret": "xxxxxxxxxxxx/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxx=", (Azure) "TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",(Azure) "SecretID": "xxxxxxxxxxxx",(Tencent) "SecretKey": "xxxxxxxxxxxx",(Tencent)
ISCPassword
已部署的 InterSystems IRIS 映像中预定义帐户的密码;要在部署阶段以交互方式提供带有屏蔽输入的密码(为安全起见建议这样做),请删除此字段,否则更改为您的首选密码。
"ISCPassword": "",
Mirror
确定部署在 DATA、DM 和 DS 节点上的 InterSystems IRIS 实例是否被配置为镜像;保留默认值。
“Mirror”: “false”
设置
说明
示例 defaults.json 文件中的条目
UserCPF
指定用于覆盖已部署实例的初始 CPF 设置的配置合并文件。(如果您不熟悉配置合并功能或 CPF,请删除此条目;有关配置合并的信息,请参见 ICM Guide(《ICM**指南》)的 "ICM Reference(《ICM 参考资料》)"一章中的 Deploying with Customized InterSystems IRIS Configurations(使用自定义的 InterSystems IRIS 配置进行部署)。)
"UserCPF": "/Samples/cpf/iris.cpf"
下图显示了 AWS、GCP、Azure 和 Tencent 的示例 defaults.json 文件的内容:
图 2: 云供应商的 ICM 默认文件示例
自定义 definitions.json
在 /Samples 目录中的示例 definitions.json 文件(对所有供应商来说都是一样的),定义了一个有两个数据节点和两个计算节点的分片集群,如下所示:
试一试! 使用 ICM 在云中部署 InterSystems IRIS
[
{
"Role": "DATA",
"Count": "2",
"LicenseKey": "ubuntu-sharding-iris.key"
},
{
"Role": "COMPUTE",
"Count": "2",
"StartCount": "3",
"LicenseKey": "ubuntu-sharding-iris.key"
}
]
Role 字段标识正在配置的节点类型,在这种情况下是 DATA 和 COMPUTE。Count 字段表示要配置多少个该类型的节点;对于 COMPUTE 节点,StartCount 从 0003 开始编号。LicenseKey 字段表示 InterSystems IRIS 许可证文件的名称,该文件位于默认文件中由 LicenseDir 字段指定的目录中。
在这个练习中,删除 COMPUTE 定义,只保留 DATA 定义,如下所示:
[
{
"Role": "DATA",
"Count": "2",
"LicenseKey": "ubuntu-sharding-iris.key"
}
]
部署分片集群时,所有节点必须有分片(sharding)许可证。使用 docker cp 将分片(sharding)许可证复制到 LicenseDir 指定的容器内的位置,如 /Samples/Licenses,并更新 DATA 节点定义中的 LicenseKey 设置,以指定要使用的许可证密钥。
这些是配置基本分片集群所需的唯一 definitions.json 更改。要配置一个独立的 InterSystems IRIS 实例,请使用此定义:
[
{
"Role": "DM",
"Count": "1",
"LicenseKey": "standard-iris.key""
},
]
配置基础设施
默认情况下,ICM 从当前目录中的配置文件中获取输入,因此您需要做的就是将配置基础设施更改为您选择的供应商的 /Samples 目录,例如 /Samples/AWS,并发出这个命令:
icm provision
icm provision 命令在您选择的平台上分配和配置主机节点。在配置操作期间,ICM 在状态子目录中创建或更新状态和日志文件,完成后创建 instances.json 文件,作为后续部署和管理命令的输入。
因为 ICM 同时运行多个任务,所以这些步骤(Terraform 计划和应用、复制文件、挂载卷等等)可能不会以相同的顺序在节点上启动和完成。完成后,ICM 提供了一个已经配置好的主机节点的摘要,并输出一个命令行,可以在以后用来删除基础设施,如下所示:
Machine IP Address DNS Name Region Zone
Acme-DATA-TEST-0001 00.53.183.209 ec2-00-53-183-209.us-west-1.compute.amazonaws.com us-west-1 c Acme-DATA-TEST-0002 00.53.183.185 ec2-00-53-183-185.us-west-1.compute.amazonaws.com us-west-1 c To destroy: icm unprovision [-cleanUp] [-force]
试一试! 使用 ICM 在云中部署 InterSystems IRIS
重要提示: 复制输出中提供的 icm unprovision 命令行,并保存此信息,这样您就可以在取消配置时轻松地复制它。这个输出也出现在 icm.log 文件中。
管理和取消配置您的基础设施所需的文件和目录都在 ICM 容器中,因此当您删除它时就会丢失。因此,在完成基础设施并成功地取消配置之前,您不能删除 ICM 容器。(在生产中,最好的做法是在启动 ICM 时通过挂载外部卷使用容器外的位置来存储这些数据(请参见 Docker 文档中的 Manage data in Docker(在 Docker 中管理数据))。
在配置和部署阶段发生的错误的详细信息写入状态目录子目录中的 terraform.err 文件;当发生错误时,ICM 会将您指向适当的文件,该文件可以帮助您识别问题的原因。
如果 icm provision 由于超时和供应商方面的内部错误,或者配置文件中的错误而没有成功完成,您可以根据需要再次发出该命令,直到 ICM 为所有指定的节点完成所有需要的任务而没有错误。更多信息,请参见 ICM Guide(《ICM 指南》)的 "Using ICM(《使用 ICM》) "一章中的 "Reprovisioning the Infrastructure(重新配置基础设施)"。
有关 icm provision 的更多信息,请参见 ICM Guide(《ICM 指南》)中的 The icm provision Command (icm 配置命令)。
部署 InterSystems IRIS
除了在提供的主机节点上下载映像(Image)并将它们作为容器运行外,ICM 还执行特定于 InterSystems IRIS 的配置和其他任务。要在您已配置的节点上部署 InterSystems IRIS,请留在 /Samples 目录,您在其中自定义了配置文件并配置了基础设施,然后发出以下命令:
icm run
默认情况下,icm run 下载并运行配置文件中 DockerImage 字段指定的映像,在这种情况下,是来自 InterSystems 存储库的 InterSystems IRIS 映像;每个容器都被命名为 iris。在实践中,在定义文件中的节点定义中使用不同的 DockerImage 字段(而不是对默认文件中的所有节点使用一次,如此处),可以让您在不同的节点类型上运行不同的映像,除此之外,您还可以使用某些选项多次执行 icm run 命令,以便在每个配置的节点上或只在指定节点上部署具有唯一名称的多个容器。
InterSystems IRIS 在每个节点上启动后,ICM 会执行实例所需的任何配置 --- 例如,重置密码、配置分片(sharding)等。因为 ICM 同时运行多个任务,因此部署过程中的步骤可能不会以相同的顺序在节点上启动和完成。
完成后,ICM 输出一个链接到相应的 InterSystems IRIS 实例的管理门户(Management Portal):
$ icm run -definitions definitions_cluster.json
Executing command 'docker login' on ACME-DATA-TEST-0001...
...output in /Samples/AWS/state/ACME-DATA-TEST/ACME-DATA-TEST-0001/docker.out
...
Pulling image intersystems/iris:2021.1.0.205.0 on ACME-DATA-TEST-0001...
...pulled ACME-DATA-TEST-0001 image intersystems/iris:2021.1.0.205.0
...
Creating container iris on ACME-DATA-TEST-0002...
...
Management Portal available at:
http://ec2-00-53-183-209.us-west-1.compute.amazonaws.com:52773/csp/sys/UtilHome.csp
在这种情况下,所提供的链接用于数据节点 1,或者用于独立的实例(如果这是您选择的配置)。在浏览器中打开链接,并使用管理门户(Management Portal)探索 InterSystems IRIS。
与 icm provision 一样,如果 icm run 由于超时和供应商方面的内部错误而没有成功完成,您可以再次发出命令;在大多数情况下,反复尝试,部署就会成功。但是,如果错误仍然存在,并且需要手动干预 --- 例如,如果它是由某个配置文件中的错误引起的 --- 在修复问题后,您可能需要删除受影响的一个或多个节点上的持久化 %SYS 数据,
试一试! 使用 ICM 在云中部署 InterSystems IRIS
在重新发布 icm run 命令之前,如 ICM Guide(《ICM 指南》)的 "Using ICM(《使用 ICM》)"一章中的 Redeploying Services(重新部署服务)所述。在出现错误的情况下,请参见 ICM 指向您访问的日志文件,以获得有助于您确定问题原因的信息。
有关 icm run 命令及其选项的更多信息,请参见 ICM Guide(《ICM 指南》)中的 The icm run Command(icm run 命令)。
尝试 ICM 管理命令
ICM 提供了一系列的命令用于
管理配置的基础设施。
管理部署的容器。
与运行在部署的容器中的服务交互,包括 InterSystems IRIS。
这些命令在 ICM Guide(《ICM 指南》)的 Infrastructure Management Commands(基础设施管理命令)、Container Management Commands(容器管理命令)和 Service Management Commands(服务管理命令)小节中有详细的讨论,并在 ICM Commands and Options(ICM 命令和选项)中全面列出。这里提供了一些示例,供您在部署时试用。特别要注意的是,有三个命令(icm ssh、icm exec 和 icm session)可以让您在多个层次上与您部署的节点交互 --- 与节点本身、与部署在它上面的容器以及与容器内运行的 InterSystems IRIS 实例,如下所示:
图 3: 交互式 ICM 命令
在您新部署的 InterSystems IRIS 配置上试试这些命令吧!
列出配置的主机节点:
试一试! 使用 ICM 在云中部署 InterSystems IRIS
icm inventory
在每个主机节点上运行 shell 命令:
icm ssh -command "df -k"
当一个命令在多个节点上执行时,输出被写入文件,并提供一个输出文件的列表。例如,在这种情况下,如果您部署了分片集群,三个节点各有一个输出文件。
在特定的主机节点上打开交互式 shell:
icm ssh -role DATA -interactive
要做到交互,命令必须使用 -interactive 选项并指定单个节点。例如,虽然 icm ssh 可以在多个节点上执行命令,如前面的示例所示,但它只能使用 -interactive 选项在一个节点上打开交互式 shell,如本例所示。代替 -role DM 选项将命令限制在该类型的节点上(在您的部署中只有一个节点),您也可以使用-machine 选项来指定一个特定节点的名称,例如:
icm ssh -machine Acme-DATA-TEST-0001 -interactive
显示部署的 InterSystems IRIS 容器的状态:
icm ps
当在节点上部署了多个容器时,这个命令会将它们全部列出。
将本地文件复制到 InterSystems IRIS 容器或其中一个容器:
icm cp -localPath /Samples/ssh/ssh_notes -remotePath /home/sshuser
icm cp -localPath /Samples/ssh/ssh_notes -remotePath /home/sshuser -role DM
在每个 InterSystems IRIS 容器中运行 shell 命令:
icm exec -command "ls /irissys/"
在特定的 InterSystems IRIS 容器中打开一个交互式 shell(或运行任何 shell 命令):
icm exec -command "bash" -role DATA -interactive
为 InterSystems IRIS 实例打开一个终端(Terminal)窗口(对于单个实例,总是交互式的):
icm session -machine Acme-DATA-TEST-0001
针对 InterSystems IRIS 的每个实例,或针对特定的实例,运行 SQL 命令:
icm sql -command "SELECT Name FROM Security.Users"
icm sql -command "SELECT Name FROM Security.Users" -machine Acme-DATA-TEST-0002
取消配置基础设施
因为 AWS 和其他公共云平台实例会不断产生费用,所以在完成这一体验后,立即取消配置基础设施是很重要的。
要做到这一点,把您从 icm provision 的输出中保存的 icm unprovision 命令复制到 ICM 命令行,例如:
$ icm unprovision -cleanUp
ICM 能做的远不止这些!
如果您没有从配置输出中保存命令,您可以在工作目录的 icm.log 文件中找到它(例如,/Samples/AWS/icm.log)。-cleanUp 选项在取消配置后会删除状态目录;如果没有这个选项,状态目录会被保留下来。
ICM 能做的远不止这些!
尽管您刚刚完成的 ICM 探索是刻意简化的,但它仍包含了现实世界的基础设施配置和服务部署。添加到您刚刚完成的只是在配置文件中扩展您的部署定义并利用大量命令行选项的问题。例如,您可以
通过定义 AM 节点和 DM 节点,部署应用服务器和数据服务器的分布式缓存集群,或通过仅定义 DM 节点部署独立的 InterSystems IRIS 实例。
部署镜像(mirror) DATA 节点或镜像 DM 节点,只需在默认文件中包含"Mirror":"True",并在定义文件中定义偶数个 DATA 节点或两个 DM 节点和一个 AR(仲裁器)节点。
部署一个包含 COMPUTE 节点的分片集群,以分离查询和数据摄取工作量,同时保持并行处理和分布式缓存的优势,提高两者的性能。
在定义文件中添加 web 服务器(WS)和负载均衡器(LB 或自动)。
通过在定义文件中为不同的节点指定不同的 DockerImage 值,并多次执行 icm run 命令,在不同的节点上部署不同的服务。
通过多次执行 icm run ,同时在命令行中使用 -container 和 -image 选项指定不同的容器名称和映像(包括自定义和第三方映像),在一些或所有节点上部署多个服务。
通过使用第三方工具和内部脚本扩展 ICM 的功能,进一步提高自动化程度,减少工作量。
在已有的虚拟和物理集群上部署服务。
在不部署服务的情况下配置基础设施,只需使用 ICM provision 命令停止。
所有这些可能性以及更多的可能性都在 ICM Guide(《ICM 指南》)中有所涉及。
了解有关 ICM 的更多信息
要了解有关 ICM 和在容器中使用 InterSystems IRIS 的更多信息,请参见
InterSystems Cloud Manager Introduction(《InterSystems 云管理器简介》) (视频)
The Benefits of InterSystems Cloud Manager(《InterSystems 云管理器的优势》) (视频)
Experience InterSystems IRIS in the Cloud(在云中体验 InterSystems IRIS) (在线体验)
InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)
First Look:InterSystems Products in Containers(《技术概要:容器中的 InterSystems 产品》)
Running InterSystems Products in Containers(《在容器中运行 InterSystems 产品》)
文章
Louis Lu · 十一月 2, 2021
本技术概览( First Look )介绍了 InterSystems IRIS® 数据平台 支持使用 Natural Language Processing(NLP,自然语言处理 )文本分析的能力,NLP文本分析以各种自然语言对非结构化文本数据进行语义分析。能让您发现有关大量文本文档内容的有用信息,而无需事先了解文本内容。
本技术概览( First Look )介绍了 InterSystems IRIS Natural Language Processing(自然语言处理),并介绍了一些与索引文本数据相关的初始任务,以进行语义文本分析。完成这些任务后,您将对一组文本建立索引并执行分析,以确定这些文本中最常见的实体(entity)、关于这些实体的度量指标、实体之间的各种关联,以及查看实体在源文本的表现形式。这些活动仅设置使用默认设置和功能,以便您熟悉 NLP 文本分析的基础知识。有关Text Analytics(文本分析)的完整文档,请参阅InterSystems IRIS Natural Language Processing (NLP) Guide (《InterSystems IRIS 自然语言处理 (NLP) 指南》)。
处理非结构化文本的一个相关但独立的工具是InterSystems IRIS SQL Search。SQL Search允许您search(搜索)这些相同的实体,以及多个文本中的单个单词、正则表达式(regular expression)和其他结构。本质上,搜索解决方案的前提是您知道自己要寻找的目标。NLP 文本分析旨在帮助您发现内容和内容实体之间的联系,而无需明确要寻找的目标。
要浏览技术概要(First Look)的所有内容,包括可以在InterSystems IRIS的免费评估实例上执行的许多内容 , 请参阅InterSystems First Looks (《InterSystems 技术概要》)。
为什么 NLP 文本分析很重要
企业逐渐累积的越来越多的非结构化文本数据,远远超出了他们阅读或记载这些文本的能力。通常,企业可能对这些文本文档的内容知之甚少。基于纯search(搜索)技术传统的“自上而下”文本分析,对这些文本的内容做出假设,可能会遗漏重要内容。
InterSystems IRIS Natural Language Processing (NLP)可以在预先不了解这些文本的主题的情况下,对这些文本进行文本分析。它通过应用识别语义实体的特定语言规则来实现这项功能。由于这些规则是专门针对语言而非内容,因此 NLP 可以在不使用字典或本体的情况下提供对文本内容的深入分析。
InterSystems IRIS 如何实施 NLP 文本分析
要为 NLP 分析准备文本,您必须将这些文本加载到domain(域)中,然后构建域。基于对这些文本的分析,NLP为该域构建索引, NLP可以使用域快速分析大量文本。文本可以从各种数据位置输入,包括 SQL 表、文本文件、strings(字符串)、globals 和 RSS 数据。
NLP 支持以下功能:
Language models(语言模型):识别单词之间的语义关系是专门针对语言的。NLP 包含十种自然语言的语义规则(语言模型),可以分析用该语言编写的任何主题的文本。如果指定的语言不止一种,NLP 通过确定每个文本中的每个句子与指定语言之间的最佳匹配来执行自动语言识别。NLP 分析不需要预先创建或关联字典或本体,尽管您可以通过添加它们来扩展其功能。
Entity analysis(实体分析):一个或多个单词的语义群,被称为实体,NLP对其进行操作。实体被定义为Concepts(包括名词和名词短语)或Relations(包括动词和介词)。通常,要考虑的最相关实体是Concepts,但也可以分析Relations。句子和单词始终泾渭分明。忽略字母大小写。
Path analysis(路径分析):NLP 将Concepts和Relations的连贯序列分组为Paths。一个句子通常由一个单独的 Path 组成。Path 反映了实体之间的联系。
Attributes(属性):NLP 标记语义属性,例如否定,以便您可以区分肯定的文本序列(“结构损坏的证据”)和否定的文本序列(“没有结构损坏的证据”)。
Frequency、Spread 和 Dominance:这些是为实体计算的度量指标。Frequency是实体在一组文本中出现的次数。Spread是包含该实体的文本数。Dominance 是一个更细微的指标,通过将实体重复出现次数相对于每个文本的长度、具有共同单词的其他实体的重复出现次数以及其他因素考虑在内,形成该指标。实体通常按这些指标按降序排列。通过这些指标可以了解文本内容,您能更加深入地分析特定实体。
Similar Entities、 Related Concepts 和 Proximity Profile。给定一个实体,这些功能可以发现其他相关实体。例如,给定一个简短的实体,相似的实体将包括域中包含相同词的其他更长的实体,从而是比种子实体更具体的实体。给定一个实体,相关实体是同一句子中通过单个Relation与指定实体相关联的其他实体。给定一个实体,Proximity 指标度量计算指定实体与其他实体之间在路径内的距离。
Dictionaries(字典):您可以添加可选的字典来识别实体的同义词。
Summarization(摘要):您可以使用 NLP 生成文本摘要,要求摘要按整体文本的一定百分比生成。例如,50% 的摘要将包含原始文本中一半的句子,NLP 会选择那些被计算为与整个源文本最相关的句子。
亲自尝试 NLP 文本分析
使用 InterSystems IRIS 文本分析很容易。这个简单的程序将引导您按基本步骤生成NLP 度量指标。
提供此示例是为了让您初步体验InterSystems IRIS Natural Language Processing。不应将此示例用作开发实际应用程序的基础。如要在真实情况下使用 NLP,您应该充分研究该软件提供的可用选项,然后开发您的应用程序以生成稳健且高效的代码。
用前须知
要使用该程序,您需要一个正在运行的 InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例;该实例不需要在您工作的系统中(尽管它们必须相互具有网络访问权限)。如果您还没有一个可以使用的实例,如何部署每种类型实例的有关信息,请参阅InterSystems IRIS Basics: Connecting an IDE(《INTERSYSTEMS IRIS 基础:连接一个IDE》)中的Deploying InterSystems IRIS(部署 InterSystems IRIS)。
您还需要获取 Aviation.Event SQL 表,该表可在 GitHub 上找到,网址为https://github.com/intersystems/Sam-ples-Aviation。按照First Look: SQL Search with InterSystems Products(《技术概览:使用 InterSystems 产品进行 SQL 搜索》)中的Downloading and Setting up the Sample Files(下载和设置示例文件)提供的说明下载和设置文件
创建域并添加数据位置
所有 NLP 分析都发生在一个域内。将多个文本关联到一个域。然后构建域,创建 NLP 查询使用的索引。
域是在namespace(命名空间)中创建的,例如在上一节中按照First Look: SQL Search with InterSystems Products(《技术概览:使用 InterSystems 产品进行 SQL 搜索》)的过程,创建的SAMPLES命名空间。可以在一个命名空间内创建多个域。可以将一个文本与多个域进行关联。
有多种方法可以创建、填充和构建域。以下示例使用Domain Architect界面。
在浏览器(browser)中为实例打开 Management Portal (管理门户),使用 InterSystems IRIS Basics: Connecting an IDE(《INTERSYSTEMS IRIS 基础:连接一个IDE 》)的URL described for your instance(实例适用的URL)。
导航到 Domain Architect 页面(Analytics > Text Analytics > Domain Architect)。使用Analytics选项之前,可能需要切换到启用分析功能的SAMPLES命名空间。
点击 New (新建)按钮定义域。指定以下域值(按给定的顺序):
Domain name:分配给域的名称在当前命名空间必须是唯一的(不仅仅是在其package class(包类)中唯一);域名不区分大小写。本示例指定名称为 MyTest。
Definition class name:域定义 package name (包名)和 class name(类名),用句号分隔。从 Domain name字段按 Tab 键生成默认Definition class name:Samples.MyTest 。
Allow Custom Updates:此复选框允许手动将数据或字典添加到此域。本示例请勿选中此框。
点击 Finish(结束) 按钮来创建域。在屏幕中将显示 Model Elements 选项。
在域内,可以为域定义数据位置和其他模型元素。要添加或修改模型元素,请单击标题之一旁边的扩展三角形。一开始,没有扩展三角形出现。定义一些模型元素后,单击扩展三角形会显示您定义的模型元素。
点击 Data Locations 三角形以在屏幕右侧显示 Details 选项卡。Details选项卡显示五个 Add Data 选项。选择 Add data from table。
此选项允许您指定存储在 SQL 表中的数据。在本例中,我们将指定以下字段:
Name:提取的数据文件集的名称。使用默认值:Table_1。
Schema:从下拉列表中选择 Aviation。
Table Name:从下拉列表中选择 Event。
ID Field:从下拉列表中选择 ID。
Data Field:从下拉列表中选择 NarrativeFull。
如果当前域定义有未保存的更改,Domain Architect 页面标题后跟一个星号 (*)。点击 Save (保存)保存更改。
按 Compile(编译) 按钮,编译 Domain。
按 Build 按钮,为源数据构建NLP索引。
分析数据
使用以下过程分析数据:
在 Domain Architect 页面上,选择屏幕右侧的 Tools 选项卡,然后单击 Domain Explorer 按钮。
Domain Explorer 最初显示源文本中最重要概念的列表:
frequency选项卡按频率降序显示Top Concepts。每个列出的项目都列示其频度计数(出现次数)和分布计数(包含该概念的源数量)。
例如, pilot概念的重复出现次数为6206,分布计数为1085;student pilot概念的重复出现次数为 319,分布计数为 141。
dominance选项卡按 dominance 计算结果,降序显示Dominant Concepts。
例如,pilot概念拥有 351.6008 的dominance;student pilot概念拥有 49.3625 的dominance。
当您选择上述其中一项概念,将显示该概念的另一个Domain Explorer列表:
Similar Entities 列出所选概念以及包含该概念的所有其他概念,每个概念都有其重复出现次数和分布计数。
例如,选择student pilot,Similar Entities 将显示包括student pilot, student pilot certificate, student pilot's logbook, solo student pilot在内的列表。
Related Concepts 列出与所选概念相关的其他概念,以及在上下文语境中该实例的这些概念的重复出现次数和分布技术。
例如,选择student pilot,Related Concepts 将显示包括flight instructor和airplane在内的列表。
Proximity Profile 列出所选概念相邻的其他概念,以及当发现在相同的句子中有与所选概念相同的概念,将计算这些概念的实例的相邻程度。
例如,选择student pilot,Proximity Profile 将列示 airplane的相邻程度为 2702,以及flight instructor的相邻程度为 1662 。
在上述任一列表中的选择一个概念,这些列表将根据该概念进行刷新。或者,您也可以将实体(Concept或Relation)键入到 Domain Explorer Explore 区域并单击 Explore! 按钮。
通过使用这些列表,可以确定源文档中出现哪些概念、它们的重要性以及与它们相关联的其他概念。
Domain Explorer 的下部分允许您查看所选概念在源文本中的显示方式:
Sources 选项卡按来源列出包含所选概念的所有句子。该概念被高亮显示,红色文本用于表示涉及该概念的否定。
Paths 选项卡列出了包含所选概念的所有路径。路径文本被突出显示,以显示 NLP 索引:所选概念以橙色高亮显示,路径中的其他概念以蓝色高亮显示,与路径相关的概念(通常是代词)以浅蓝色高亮显示。关系显示为白色。红色文本用于表示涉及该概念的否定。
通过点击 eye 图标,可以显示源的完整文本,所选概念将被高亮显示,并使用红色文本表示否定。
Indexing 切换按钮显示源的完整文本,高亮显示 NLP 索引。因为这是源文本,所以会显示大小写、标点符号和不相关的单词;文本的这些方面没有显示在Paths列表中。
% 选项允许您显示文本摘要。指定一个百分比。文本中的句子总数减少到该百分比。NLP 包含在摘要中的句子由它们对全文的重要性计算确定
您可以添加一个 skiplist 来排除不需要的概念。通常,top concepts(上层概念)列表始于那些非常常见或在几乎没有什么有用信息的概念。这些可能是出现在所有来源中的词或短语(例如“accident report(事故报告)”或“conclusions(结论)”)、一般概念(例如“airplane(飞机)”或“pilot(飞行员)”),或与您所使用数据无关的概念(例如城市列表)。您可以使用 skiplist 避免显示这些概念。Skiplist 仅影响某些查询结果中概念的显示;它对概念的 NLP 索引没有影响。
在 Domain Architect 中单击 Open 按钮并选择 Samples >>,然后是 MyTest 打开现有域 Samples.MyTest。
点击 Skiplists 扩展三角形。将在屏幕右侧的 Details 选项卡显示 Add skiplist 按钮。点击 Add skiplist 以显示 Name 和 Entries 字段。接受 skiplist 的默认名称 (Skiplist_1)。在 Entries 框列示条目(概念),一行一个概念;条目不区分大小写。本例中列出如下概念:pilot(飞行员) student pilot(学生飞行员)、 co-pilot(副驾驶)、 passenger(乘客)、instructor(教官)、flight instructor(飞行教官)、certified flight instructor(认证飞行教官)。
Save(保存)和Compile(编译)域。(不需要使用 Build 功能去添加、修改或删除 skiplists 的域)。
在Domain Explorer中单击 sunglasses 右上角的图标。将显示您可以应用的为该域定义的skiplists的列表。选择Skiplist_1。请注意,Top Concepts 不再列出 skiplists 的概念。
了解有关 NLP 文本分析的更多信息
InterSystems 有其他相关资料可帮助您了解有关 NLP 文本分析的更多信息,包括:
InterSystems IRIS Natural Language Processing (NLP) Guide(《InterSystems IRIS自然语言处理 (NLP) 指南》)