全部文档
文档中心DeepFOS 平台平台介绍平台对象与数据隔离

平台对象与数据隔离

DeepFOS 用企业、空间、应用、组件和元素组织平台元数据,用数据源、业务库和业务表承载业务数据。理解这两组概念之间的关系,可以判断一个业务模型的数据边界来自空间、数据源,还是底层数据库部署。

元数据层用于保存平台对象和配置关系。企业、空间、应用、组件、元素、权限、菜单、数据源绑定等信息,都属于平台元数据。它回答的是“谁在什么空间里,可以使用什么应用和元素,以及这些能力应当连接到哪类数据源”。

平台对象

主要作用

与数据存储的关系

企业

企业账号、成员、企业级设置和租户上下文

提供管理上下文;通常不是业务模型数据的直接物理库边界

空间

企业内部的协作、权限和数据上下文边界

可以关联多个数据源;同一种数据源在该空间下只绑定一个业务库

应用

空间内的业务场景、菜单入口和元素组织方式

是逻辑组织边界;业务表通过应用编码前缀和组件表名规则在空间业务库中区分

组件

提供模型、表单、脚本、报表等能力来源

组件决定能力类型和表名后缀;实际数据边界由空间对应的数据源业务库决定

元素

用户最终打开和授权的页面、模型、表单、报表或资源

元素配置归属于应用和空间;元素背后的业务表落在空间对应的数据源业务库中

层级关系可以这样理解:

Copy
企业
  └─ 空间
      ├─ 数据源:MySQL / PostgreSQL / ClickHouse ...
      │   └─ 业务库
      └─ 应用
          ├─ 组件能力
          └─ 元素:模型、表单、脚本、报表、页面等

业务数据层用于表达平台能力运行时的数据实际放在哪里。前端“内置数据源”页面中,能看到数据源类型、绑定实例、实例版本、数据库名等信息。

存储对象

主要作用

平台中的含义

数据源

描述一类可使用的数据库能力或数据库服务类型

例如 MySQL、PostgreSQL、ClickHouse;组件根据自身能力选择需要的数据源

绑定实例

描述数据源背后的服务实例

前端页面显示为“绑定实例”;用于区分同一类数据库服务的不同实例

数据库名

描述该空间在当前数据源下绑定的真实业务库

前端页面显示为“数据库名”;后端字段常见为 datasetRealName

业务表

组件创建和读写的具体业务表

由应用编码前缀和组件自带业务后缀区分来源

平台后台通过 os-space-tenant 维护空间与数据源、业务库之间的绑定关系。前端页面称为“数据源”,后端实现中对应的数据绑定对象会保存服务实例、服务版本、真实库名和业务类型等信息。

Copy
空间
  └─ 数据源
      ├─ 绑定实例
      └─ 数据库名
          └─ 业务表

空间和数据库的关系按数据源建立。实践上,可以把它理解成:

Copy
一个空间
  ├─ 一个 MySQL 数据源      → 一个 MySQL 业务库
  ├─ 一个 ClickHouse 数据源 → 一个 ClickHouse 业务库
  └─ 一个 PostgreSQL 数据源 → 一个 PostgreSQL 业务库

一个空间可以关联多个数据源,但每一种数据源在该空间下只绑定一个业务库。比如同一个空间可以有一个 MySQL 业务库和一个 ClickHouse 业务库;MySQL 表都进这个 MySQL 业务库,ClickHouse 表都进这个 ClickHouse 业务库。

同一空间下,不再按应用拆多个业务库。应用一、应用二、应用三使用同一个 MySQL 数据源时,它们的 MySQL 业务表都在该空间的 MySQL 业务库中;只是表名通过应用编码前缀和组件自带后缀区分。

可以用下面这张二维表理解“数据源/业务库”和“应用”的关系。示例中,空间 A 关联了两个数据源:MySQL 和 ClickHouse。

数据源 / 业务库

应用一:经营计划

应用二:经营分析

应用三:管理驾驶舱

MySQL 数据源;业务库:space_a_mysql

APP01_Table01APP01_Table02APP01_FormData

APP02_Table01APP02_WorkflowData

APP03_ConfigTable

ClickHouse 数据源;业务库:space_a_ck

APP01_ResultTable

APP02_AnalysisFactAPP02_AnalysisLog

APP03_DashboardFactAPP03_DashboardSnapshot

表中的值表示具体业务表。APP01APP02APP03 表示应用编码前缀;Table01FormDataAnalysisFactDashboardSnapshot 表示组件或业务语义后缀。真实项目中,各组件会按照自身规则生成或维护表名,但整体关系仍是:空间和数据源决定业务库,应用和组件决定表名。

如果换到空间 B,同样可以有 MySQL 数据源和 ClickHouse 数据源,但它们会绑定到空间 B 自己的业务库。这样即使空间 A 和空间 B 有相同应用、相同组件、相同表名后缀,数据也会因为业务库不同而隔离。

DeepFOS 的数据隔离边界可以分成两层理解:

  • 空间及空间绑定的数据源,决定业务数据落在哪个业务库中。跨空间、跨业务库,是数据库层面的隔离。

  • 空间以下的应用、组件、元素,主要决定业务入口、权限范围、元素归属和业务表命名。它们是逻辑隔离,不天然对应独立业务库。

因此,当业务需要数据库级隔离时,应优先从空间和数据源设计入手:不同组织、项目、环境或业务域,可以放在不同空间中;同一种数据源下,不同空间绑定不同业务库。

当业务只需要区分菜单、权限、页面入口、模型或表单归属时,应优先使用应用、组件、元素和权限配置。它们共享所在空间的数据源和业务库,通过应用编码前缀、组件表名后缀、元素配置和权限控制表达边界。

简单地说:空间以上看数据库隔离,空间以下看逻辑隔离。空间决定“数据放在哪个库”,应用和元素决定“这个库里的表属于哪个业务入口”。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send