有了"数据库"为什么还要用"xml" ?

有了数据库为什么还要用XML?XML与数据库各自的特点、他们的应用与区别我想你从Google上可以查到一大堆,那么在这里
我只说说自己的体会:
1:尽管XML和数据库都可以定义数据模型并存储数据,然而,XML更加通用、更加标准化,前些年我们公司的软件要与其他公司软件做接口传输数据时,采用了最简单的接口数据库方式,开发最容易,带来了些问题:
  一是这个接口数据库是某种数据库产品(DB2/MSSQL/MYSQL),接口代码在更换了数据库产品(我们公司的软件要经常面对不同厂商的应用系统)后需要修改或重写;
  二是如果接口需求变动的话,可能要改动数据库结构,导致还要改接口代码,这是致命的。
  三是接口的稳定取决于这个数据库管理系统本身要稳定,你得考虑维护管理(自动化日志清理等)问题;
  四是为了穿过防火墙(电信、网通公司可能会关闭某些端口)及安全性考虑,你不能直接通过TCP/IP去访问远程接口机器上的数据库,需要将数据再编码发布(比如之前的Remoting或现在的WCF)
  那么现在我们改用XML来做程序接口,我们给其他公司的是一些XML Schema、Web Serivce的URI、业务流程说明,我们不再需要一个接口电脑、接口数据库等,现在上述的四个问题不再困扰我们。

2:我们之前的业务数据库大概有二百多张表,一年左右会因需求变动对表结构做些调整,当然也影响到了应用程序代码的调整,现在我们的业务数据库大概有不到五十张表,因为一些容易发生需求变动的表和一些半结构化、非结构化的数据被存储为数据库表内的XML字段,需求变动仅影响我们去修改一下Schema,不用去动数据库结构,这对已经部署到用户那边的系统来说是非常重要的改进。不仅如此,表数量的减少对开发人员、业务人员、数据库管理人员非常有益。

3:说了两点XML的好处,那么我再说说它作为数据存储方面目前无法替代 数据库的地方:
  XML缺少数据库具备的特性:高效的存储(即使是数据库内XML字段还是没有传统字段的速度快)、索引和数据修改机制(DB2等数据库产品对XML内的元素和属性可以加索引,内建在数据库中的XML字段享受了数据库带来的一些好处);严格的数据安全访问控制;完整的事务和数据一致性控制;多用户访问机制;触发器、完善的并发控制等因此,用户量大、数据集成度高以及性能要求高的数据环境中还是需要数据库来完成任务,IBM的DB2工程师也在讨论时建议我们统计类数据还是用传统字段为好。

  总之,现在XML对数据库是一个很好的补充,大的数据库厂商都在数据库产品里内置了对XML的支持,这样将XML与数据库配合使用,将让他们相互配合利用各自发挥出威力,也提高也我们信息产品的灵活性。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一种轻量级的持久层框架,它可以帮助开发者简化数据库操作的编写和管理。使用 MyBatis 有以下几个优势: 1. 简化 SQL 编写:MyBatis 使用 XML 或注解的方式来编写 SQL 语句,相比于传统的 JDBC 编程,可以更加直观和简洁地书写 SQL,减少了开发者的工作量。 2. 提供对象映射:MyBatis 可以将查询结果自动映射为 Java 对象,通过配置和命名规则,可以方便地将数据库中的数据转换为 Java 对象,简化了数据处理的过程。 3. 提供动态 SQL:MyBatis 支持动态 SQL,可以根据条件来动态生成 SQL 语句,使得查询条件灵活可变,可以根据具体需求来动态拼接 SQL,提高了查询的灵活性和可扩展性。 4. 支持缓存机制:MyBatis 内置了缓存机制,可以缓存查询结果,减少对数据库的访问次数,提高了性能。开发者可以根据实际需求来配置缓存策略,使得查询操作更加高效。 5. 提供事务管理:MyBatis 支持事务管理,可以通过配置或注解的方式来管理事务操作,保证数据的一致性和完整性。 6. 易于集成:MyBatis 可以与其他框架无缝集成,如 Spring、Spring Boot 等,通过简单的配置即可实现整合,使得开发更加便捷。 综上所述,使用 MyBatis 可以简化 SQL 编写、提供对象映射、支持动态 SQL、缓存机制和事务管理等功能,使得数据库操作更加简单高效。它与 Spring 等框架的集成也非常方便,是开发持久层的首选框架之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值