【问题标题】:Storing Database-Agnostic Schema存储与数据库无关的模式
【发布时间】:2010-10-03 18:09:56
【问题描述】:

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

说到底,我们希望在源代码控制中拥有一个文本文件,该文件可用于生成一个干净的数据库,该数据库至少可以与 SQL Server、Access 一起使用(最好能够与 Oracle 一起使用, DB2 和其他引擎)。

我敢肯定,有一些工具或库可以让我们至少部分实现目标。一方面,我发现 Altova MapForce 看起来可以解决问题,但我有兴趣了解任何替代工具或库,甚至是针对处于相同困境中的人的完全不同的解决方案。

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

【问题讨论】:

    标签: sql-server database ms-access schema xsd


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      当我问a similar (if rather more naive) question 时,共识似乎是使用原始 SQL,并通过附加层来管理 RDMS 依赖项。祝你好运。

      【讨论】:

      • 这是一个有趣的解决方案,但是通过在特定于数据库的单独层中拥有诸如外键依赖项之类的东西,DBMS 之间的关键行为差异很可能会使应用程序的功能因不同的数据库而有所不同后端。
      • 是的。这对我的简单需求可能无关紧要,但在抽象层面上我并不十分满意。
      【解决方案3】:

      您正在寻找的工具是liquibase。虽然不支持 Access...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多