(这一篇写得不够完整,但好像不能暂时下架文章,所以有空再来修)
今天来聊个简单的概念,Redfish 的 Data model
上面是Redfish Spec的内容,提到Redfish 将 Protocol 和 Data model 的版本分开了,那这边的Data model 是指什么呢?
什么是Data model ?
在软体工程中,在系统开发前,需要先作需求的统计和分析,这时候我们会将需要处理的资料(Data requirement) 作初步的概念设计(conceptual design),产生概念模型 (Conceptual schema),这是一个high level 的Data model,以Redfish 为例子
如果我们设计一个需要处理System 和 BMC 资料的Redfish ,我们需要先将想要处理的资料作分类和分析,经过建模后资料之间的关系大略如下
这边用到ER model,补充一下他的概念
- Entity: 特定的Object,每个Entity 有它自己的Type (Redfish 世界称作Resource ,type 会标记在@odata.type)
- Attribute: 用来描述Entity (Redfish 世界称作Property)
- Key Attribute: 每个Entity 的这个Attribute都有独一无二的值,例如身份证字号/员工编号,都是key attribute (Redfish 世界常见的是@odata.id 或是 id)
- Multivalued Attribute: 多值的attribute,例如Status object 可再分为State和 Health
有个概念模型后,我们会进入实体模型阶段,将我们的Data model 描述得更仔细,以便后续的资料沟通,其中,一个完整的 Data model 会有三个组成元素
- The structural part (结构): 资料在资料库中的组成与表示方式
- The integrity part (完整性): 资料在结构与表示方式中的合法条件 (例如 UserName 不能超过几个字元、密码的长度或是Attribute的Type 要是string or int等条件)
- The manipulation part (操作) : 如何更新、新增或是查询数据 (这个Resource 能不能被POST、DELETE 或是 Property能不能被PATCH)
经过完整的建模產生的schema 就在 redfish schema document (DSP0268),里面可以看出很完整的资料模型结构和严谨的规范
在DSP0268中有清楚描述了Redfish 的Data model,另外Redfieh 有提供 Schema definition languages 所撰写的Data model (DSP8010),供开发人员使用
最后我们来看一下很多人介绍Redfish 时会放的Resource map,是不是更有感觉
这边的"computer systems" 和 "Manager By" 就是上面提到的relationship (Resource 之间的关系),Processors 是Computer System 的Property,那他也可以和Processor Resource 产生一个关系,就像底下
如果和Redfish 熟的话,会发现有些关系是会放在"Links"的property中的