存储与数据库无关的架构

Kar*_*rim 5 database sql-server schema ms-access xsd

我们有一组与多个数据库引擎(包括 Sql Server 和 Access)一起工作的应用程序。每个模式都是单独维护的,而不是以文本形式存储的,这使得源代码控制变得困难。我们有兴趣转移到一个系统,其中模式以某种基于文本的格式(例如 XML 或 YAML)存储,其中包含字段数据类型、外键关系等的描述。

当一切都完成后,我们希望在源代码管理中拥有一个文本文件,该文件可用于生成一个干净的数据库,该数据库至少可与 SQL Server、Access 一起使用(并且最好能够与 Oracle、DB2 和其他引擎)。

我确信有一些工具或库可以让我们至少完成一部分工作。首先,我发现Altova MapForce看起来似乎可以解决问题,但我有兴趣了解任何替代工具或库,甚至是针对处于相同困境的人的完全不同的解决方案。

注意:应用程序是用 C++ 编写的,而 ORM 解决方案都不是用 C++ 编写的,并且需要很长时间才能集成到我们老化的产品中。

Dav*_*itt 1

如果您不使用对象关系映射器来执行此操作(以及为您提供的许多其他操作),最简单的方法可能是创建一些结构来以某种形式的(静态)代码定义表和属性并编写小生成器根据该描述创建实际的数据库。

这使得源代码控制变得很容易,如果您在设计这些结构时很小心,那么在需要时您可以轻松地将它们重新用于其他数据库。