【已评审】新增读取远程持久化数据库表的调试接口

ISSUE链接

https://gitcode.com/openUBMC/mdb_interface/issues/163

背景

  • 提升持久化数据分析和问题定位效率,支持BMC Studio工具的在线调试,在线获取全量持久化数据,并可视化呈现。
  • 但工具直接读取数据库文件表,会存在数据分散、无法还原为行数据等问题,需要为工具提供表模型一致的持久化数据。
  • 实现方案为:持久化在调试版本与工具对接,提供获取远程持久化表数据的调试接口(与原bmc.kepler.persistence查询效果一致)

决策点

新增资源协作接口用于实现调试版本读取远程持久化表数据,通过该接口下的方法获取数据时,不做用户权限和持久化数据属主的校验,且在发布版本中对调试接口及实现进行裁剪,其他子系统业务实现不依赖该调试接口。

详细描述

1. 资源协作调试接口:

资源path:/bmc/kepler/Debug/Persistence(新增路径)
资源interface:bmc.kepler.Persistence(已有接口)

2. Read、BatchRead(已有方法)
(1)该接口的两种方法与现有/bmc/kepler/persistence下的bmc.kepler.persistence接口的Read和BatchRead方法,除了权限不同与不做数据属主校验外,在业务实现上保持一致。
(2)该接口通过定义在debug目录进行裁剪,只在debug版本可用。

3. Read方法

方法名称 变化类型 签名 读写&权限 持久化 变化通知 入参说明 接口说明 响应参数 接口约束
Read 新增方法 ss ReadOnly NA NA 入参为两个字符串,分别表示数据表名、发起请求的app名称 获取指定表名的所有持久化数据 出参是1个字典结构(a(sa{say})),表示对应表内的所有数据。每个id对应1个字典,字典内容为持久化的键值对。 NA

4. BatchRead方法

方法名称 变化类型 签名 读写&权限 持久化 变化通知 入参说明 接口说明 响应参数 接口约束
BatchRead 新增方法 as ReadOnly NA NA 入参为字符串数组,表示服务名、数据表名 批量读取数据库表数据,获取指定表名的所有持久化数据 出参是1个字典结构(a{sa{sa{say}}}),表示对应表的所有数据。内容包括持久化表/id/持久化数据/持久化键值对 NA

删除资源协作接口方法

资源interface:bmc.kepler.Persistence
方法:HasTableHistoryRecord(查询表格是否曾经存在过)
新增背景:bmc.kepler.Persistence接口和HasTableHistoryRecord方法是2023年为了解决持久化预置数据无法删除的问题,从而评审增加。
删除原因:实际解决问题采用了其他方案,该接口下的方法一直未被使用。

评审结论

1、同意bmc.kepler.persistence接口名称调整为bmc.kepler.Persistence,接口下的Read、BatchRead、Save和Flush方法保持不变(名称、签名、入参、出参及描述等)
2、同意删除bmc.kepler.Persistence接口下的HasTableHistoryRecord方法;
3、同意新增/bmc/kepler/Debug/Persistence路径,路径下实现bmc.kepler.Persistence接口及Read、BatchRead、Save和Flush方法,方法不做权限和数据属主校验(其余实现与/bmc/kepler/Persistence路径下的bmc.kepler.Persistence接口的方法保持一致)