InterSystems IRIS 的架构将数据的逻辑组织(命名空间)与其物理存储位置(数据库)分开。理解这种分离以及命名空间和数据库之间的区别对于有效的数据管理、安全性,尤其是高性能数据共享至关重要。
在本文中,我将讨论这些基础组件,并提供利用全局映射跨不同逻辑环境共享本地数据结构(全局)的实用指南。
数据库:物理现实
数据库代表了数据存储在磁盘上的物理现实。首先,它是文件系统中名为 IRIS.dat 的文件(例如,<安装文件夹>\mgr\user\IRIS.DAT )。该文件的最大容量为 32TB。它是所有实际数据和代码的容器。数据库由 IRIS 内核管理,它在物理文件级别处理缓存、日志和事务日志。
安装 InterSystems IRIS DBMS 时,会自动安装以下数据库:

在生产环境中工作时,强烈建议创建一个或多个单独的专用数据库来存储数据和代码。
要创建新数据库,请进入系统 > 配置 > 本地数据库 > 创建新数据库(System > Configuration > Local Databases > Create New Database),并提供名称和存放目录:
.png)
命名空间:逻辑沙箱
InterSystems IRIS 中的命名空间代表一个独立的逻辑工作环境。它类似于关系数据库中的模式或项目工作区。它定义了所有应用程序元素的范围:持久类(对象)、例程(代码),以及最重要的全局(本地数据结构)。此外,在一个命名空间中运行的应用程序与另一个命名空间中的应用程序在逻辑上是隔离的。这就避免了不同应用程序或开发环境(如开发、暂存、生产)之间的冲突。从开发人员的角度来看,数据和代码等一切都在其所连接的命名空间范围内。每个 IRIS 应用程序进程都在一个命名空间中运行。如果要访问另一个命名空间中的数据/代码,则需要明确更改。
安装 InterSystems IRIS DBMS 时,会自动设置以下命名空间:
- %SYS
- 用户
将逻辑映射到物理
名称空间和数据库之间的联系是通过映射建立的。每个命名空间都有一组定义好的映射,用于指定使用哪个(些)物理数据库来存储其元素。
例如,我们有几个数据库:
- 客户(Clients) - 包含有关客户的数据
- 财务(Finances )--包含可与客户和供应商一起工作的财务数据
- 供应商(Vendors)--包含有关供应商的数据
以及两个命名空间:
- 账单(Billing)--与客户和财务中的部分或全部信息有映射关系,允许使用该命名空间的应用程序获得与客户打交道所需的全部信息
- 采购(Purchasing)--具有与供应商的映射关系,以及来自财务的部分或全部信息,允许使用该命名空间的应用程序获取与供应商打交道的所有必要信息
.png)
同时,每个命名空间都有一个默认的数据和代码数据库。
在这个例子中,可以是
.png)
在创建命名空间时(系统 > 配置 > 命名空间 > 新命名空间[System > Configuration > Namespaces > New Namespace]),设置命名空间的默认数据库:

用于临时存储的数据库默认为 IRISTEMP。
Globals 数据库存储数据,而 Routines 数据库存储代码和类说明。
如果希望向其他数据库添加更多数据映射,请进入系统 > 配置 > 命名空间 >(选择命名空间)> 全局映射 > 新建(System > Configuration > Namespaces > (Choose the namespace) > Global Mappings > New),然后添加新映射:

如你所见,你可以详细设置访问权限,包括特定全局的下标。
例程映射也是如此。
除了用户定义的映射,还有系统映射。系统级代码和数据(如系统类定义、例程和以 ^% 开头的特定系统全局项)会映射到系统数据库(如 IRISLIB、IRISSYS)。这样可以确保应用程序数据不会干扰核心系统组件。
通过将逻辑命名空间与物理数据库分离并使用映射,可以对数据位置、安全性和性能进行精细控制。
