仓库源文

.. Kenneth Lee 版权所有 2021

:Authors: Kenneth Lee :Version: 1.0 :Date: 2021-12-16 :Status: Draft

向前兼容数据格式设计


本文我们来设计一个模式。假定我们要设计一个文件格式,这个格式可以后向兼容,以便 本版本我们可以读到需要的信息,但新的软件版本仍可以利用这些信息,还可以得到新的 信息,同时,老的软件还使用新的格式,仍可以访问旧的数据。

我们看看这种模式的核心特征是什么。

我们先定义一下模型,假定我们现在设计的软件是S,文件格式定义为f,我们要求Sv1兼容 fv1, v2, v3,……Sv2也兼容fv1, fv2, fv3……。

Sv1需要数据集D1(D1是一组Name-value的组合,其中包括数据d1和o1,前者是必须的,后 者是可选的),Sv2需要数据集D2,D1/D2的交集不一定为空。

Sv1需要兼容fv2,所以D2中必须包含d1,其他不认识的忽略即可。Sv2要兼容fv1,最好直 接认识D1的所有数据(或者必须的数字)。

综合起来,实现这个模式的原则如下:

  1. Svi可以忽略不认识的Name
  2. Svi认识所有的D(1)到Di的所有Name,但可以有限度裁剪
  3. Dvi包含所有Sv1-i必须的格式
  4. 承载格式最好不变,或者需要做其他技巧设计

.. note::

从架构设计的角度说,原则1和4是地一个版本就必须完成设计的设计,其他是后续必须 坚持的设计。

这是一个架构设计是当下设计之外的独立设计的一个例子。