【发布时间】:2013-03-08 05:10:26
【问题描述】:
我们的软件基础架构非常类似于软件构建系统:信息从不同来源收集并用于生成一些输出。与传统软件构建一样,我们有不同类型的输出、依赖树等。
主要区别在于我们的来源、中间结果和输出不是天生基于文件的。相反,它们是(唯一可寻址的)数据对象。
现在,我们正在结合传统的构建系统 (SCons) 将我们的数据结构映射到文件和目录,但这并不能扩展,无论是 w.r.t。性能,但(更重要的是)w.r.t.可维护性。因此,我正在寻找一种从头开始为此目的而构建的基础架构。
作为示例,假设您有 3 个 XML 文档 A、B 和 C。假设B/foo/bar 是从A/x/y 和A/x/z 计算出来的,同样C/a/b 是从A/x/y 计算出来的。我需要一个基础架构来
- 实现这些关系(即转换及其依赖关系)
- 更改后自动重新构建相关部分
使用文件的一个主要问题是,如果我将 A、B 和 C 映射到某些文件 A.xml、B.xml 和 B.xml 和 C.xml 并使用传统的构建系统,那么 任何对A.xml的更改将触发B.xml和C.xml的重建,即使A/x/y和A/x/z(B的原始依赖项)没有被修改。因此,对于细粒度的依赖解决方案,我需要将 A、B 和 C 中的每一个映射到一个目录,而不是一个文件,而是一个目录,其中每个子目录代表一个元素,文件代表属性等。正如我所说,这不适合我们。
(请注意,我们的系统实际上并不是基于 XML)
现在我正在寻找任何指向这个方向的现有软件、基础设施或概念,无论实现语言和底层数据结构如何。
【问题讨论】:
-
听起来你想要一个支持 XML 的关系数据库
-
@JamesMohler:不是这样。我们的异构数据以各种供应商特定的文件格式存储。我们缺少的是描述部分数据的相互依赖关系并根据更改自动重新计算的好方法。另外,正如我所指出的,我只是以 XML 为例,我们的系统不是基于 XML 的。
标签: language-agnostic automation build-automation