【问题标题】:Recommended way to access DB2 from .net从 .net 访问 DB2 的推荐方式
【发布时间】:2011-04-04 13:39:31
【问题描述】:

我们正在设计一个可以从 .Net 访问 DB2 数据库的系统。

似乎有 3 种方法可以做到这一点:

  • 动态 SQL
  • 存储过程
  • CICS

使用动态 SQL 的一个好处是无需在团队中配备 Cobol 程序员。这是正确的吗?

你会推荐哪一个?还有其他选择吗?

【问题讨论】:

    标签: .net db2 cobol


    【解决方案1】:

    我想不出你会设计一个带有 CICS 数据访问层的新 .NET 系统的任何理由。我肯定至少会使用 ADO.NET(我认为您所说的动态 SQL 是什么意思?)。 IBM 有一个可用于 DB2 的 ADO.NET 数据提供程序,并实现了 IDbConnection、IDbReader 等。

    我相信NHibernate 也支持 DB2 UDP,所以您可能也想研究一下。

    【讨论】:

    • 如果数据存储在 z/OS 机器上,通过 CICS Web 服务访问它提供了一个很好的层来插入业务逻辑、数据验证和安全性。
    • CICS 层真的比将其全部保存在 .NET 中提供任何优势吗?我每天都在 z/OS 机器上工作,而且我通常会尝试留在 .NET 世界中。 CICS 层会比 .NET 提供任何性能增强功能吗?
    • .NET 世界远不如 z/OS 世界的数据可靠。如果您将大部分后端放在 z 上,速度和可靠性都会得到提高,并且您的硬件成本应该更低。所有这些都假设一个足够大的系统。如果您只有一个小型系统,例如每天几百万笔交易或其他什么,您不会想走 z 路线。但是,一旦您进入更大的系统,数亿 tps+,一个 z box 和一些 CICS 区域的硬件和设置成本与您需要用于该工作负载的数十台高端 Windows 服务器的成本相比就相形见绌了。
    【解决方案2】:

    .NET 可以像连接到其他数据库一样连接到 DB2。试试 DB2Connect。

    【讨论】:

    • DB2Connect 是否存在?我找不到这样的东西安装在 Windows、SQL Server 或任何地方都可以下载。
    • DB2Connect 是 IBM 的产品。如果您有 DB2,您的 DBA 应该能够为您指出从哪里获取它的 jar。
    • 我没有 DB2,使用 DB2 的客户问从哪里得到它。
    • 另外,可以建立到 DB2 的 ODBC 连接,因此您也可以这样连接。
    【解决方案3】:

    我倾向于使用存储过程,它应该比动态 SQL 更快、更易于维护,并且比 CICS/ 编码更少

    动态 Sql:

    • 优点:开发速度更快,熟悉 .net 开发人员

    • 缺点: Sql 未在 DB 中集中维护。您无法查询 DB2 表的使用情况,查找数据库更新的位置。 Sql在使用时被分析,导致更高的处理

    Sql 过程

    • 优点:

       - Faster SQL execution
       - DB2 has control of SQL, you can query DB2 getting paths used by the 
       - SQL, Finds where tables / fields are used and updated
       - SQL is analysed at "Bind" time rather than execution time
         (normally when the program is compiled).
         This leads to lower overheads and consistent execution times.
       - Your SQL is vissible to DBA's, (Mainframe ?) developers
      
    • 缺点:可能需要(大型机?)开发人员

    Cics - 优点:

        - All the advantages of SQL Procedures
        - Can access VSAM Files
        - Can buffer Common SQL in TS Queues, TD Queues, VSAM Files 
    
    • 缺点:额外的信息结构层(额外的开销,更多的错误) 更多编码

      对于具有大型系统且使用量非常大的系统可能值得考虑。

      最后一点,Java 有 SQLJ,在 DB2 中用 SQLJ 将 SQL 交给 DB2 来存储/维护。 SQLJ 具有与 Sql-Procedures 相同的优点。我不知道 .net 等价物。

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多