企业数据库比应用程序数据库更大,其外部影响也更大。它们与其他系统之间存在更多的关系,包括依赖关系和被依赖关系。这些关系可能是Web应用程序与报表工具之间的,但也很有可 能是与其他的复杂系统和数据库的接口。在企业数据库中,不仅仅存在远比应用程序数据库多得 多的外部接口,而且这些接口的作用方式也大不相同。一些接口可能是用于每晚批量加载数据的 接口,其他的则可能是实时事务处理接口。由于这些原因,企业数据库本身可能实际上就是由不止一个数据库组成的。下图从较高的层次描绘了一个企业数据库的例子。

企业数据库对于其设计和使用都强加了许多限制。对于数据完整性、性能以及安全性,企业 数据库往往比应用程序数据库要考虑更多的因素。基于这个原因,企业数据库为分离关注点和分 隔需求,往往会分裂为多个部分。如果试图仅创建单个的数据库来满足企业系统的所有需求,其代价将非常昂贵并且复杂,或者根本就不实际甚至不可能。

上图描绘的示例,需求按照横向的非业务需求被划分。具体来说,这些数据库被划分为集成数据库(integration database)、在线事务数据库(online transactional database)以及报表数 据库(reporting database)。集成数据库和报表数据库都通过批量加载(batch load)与事务数据库交互,这也就暗示了这个系统并不要求报表必须是最新的,另外事务数据库也只要求能够周期性地从第三方系统中更新数据。这样设计的好处就在于我们能够大大减轻事务数据库的负担,从而使一个较为简单的设计成为可能。一般来说,要设计一个同时对集成性、事务性和报表都是高效 的数据库是不实际的。对以上的每一个性能都有一些设计模式可保证最佳的性能和设计。但有时 我们的需求是近似于实时的集成和报表功能。对这样的需求之前的设计就无法满足了。这时你可 能会发现需要将企业数据库按照业务功能纵向划分。

不管企业数据库如何设计,要理解应用程序数据库与企业数据库的不同点都非常容易。理解你的环境有哪些特别的限制,以保证你的应用程序总能高效地使用数据库并且与其他使用当前数据库的应用程序相安无事,这非常重要。

MyBatis在企业数据库环境中工作得非常出色。它具有的一些特征使得它成为了与复杂的数据 库设计和大型数据集协调工作的理想工具。iBATIS用于多数据库时同样非常出色,因为它从来没 有假设某个类型的对象必须仅来自一个数据库。它同样支持在单个事务中涉及多数据库的复杂事 务。此外,MyBatis不仅对在线事务系统非常有用,同样对实现报表系统和集成系统也非常有用。

系列文章:

MyBatis知多少(1)

MyBatis知多少(2)

MyBatis知多少(3)

MyBatis知多少(4)MyBatis的优势

MyBatis知多少(5)业务对象模型

MyBatis知多少(6)表现层与业务逻辑层

MyBatis知多少(7)持久层

MyBatis知多少(8)关系型数据库

MyBatis知多少(9)不同类型的数据库

MyBatis知多少(10)应用程序数据库

MyBatis知多少(11)企业数据库的更多相关文章

  1. MyBatis知多少(13)MyBatis如何解决数据库的常见问题

    在现代软件项目中数据库通常被认为是遗留组件.它们一直以来都被认为难以使用,不论是出于技术的还是非技术的原因.大多数软件开发人员宁可从头开始完完全全地重建一个数据库. 如果数据库是遗留下来的,相信一些开 ...

  2. MyBatis知多少(12)私有数据库

    如果你从事软件开发工作有了一段时间的话,那么肯定听过关于“自己动手还是花钱购买” 的争论.该争论是说,针对一个业务问题,我们是应该自己动手构建自己的解决方案呢,还是应 该花钱购买一个声称已经解决了此问 ...

  3. MyBatis知多少(9)不同类型的数据库

    并非所有的数据库都如此复杂,需要使用昂贵的数据库管理系统以及企业级的硬件.一些数 据库其实非常小,足以运行在一台老式的PC机上.所有的数据库都是不一样的.它们有各自不 同的需求和不同的挑战.iBATI ...

  4. MyBatis知多少(10)应用程序数据库

    应用程序数据库往往是最小.最简单.也最易于使用的数据库.这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的.应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现.正是因 ...

  5. MyBatis知多少(8)关系型数据库

    MyBatis的存在就是为了简化对关系数据库的访问.数据库的确非常复杂,要正确地使用它们需要做很多的工作.数据库负责管理数据和修改数据.我们使用数据库而不简简单单地使用一个 平板文件的原因就在于数据库 ...

  6. MyBatis知多少(26)MyBatis和Hibernate区别

    iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域.我个人建议使用MyBatis的,如果: 你想创建自己的SQL,并愿意维持他们. 你的环境是由关系数据模型驱 ...

  7. MyBatis知多少(26)调试

    这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日 ...

  8. MyBatis知多少(25)动态SQL

    使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...

  9. MyBatis知多少(24)存储过程

    使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLO ...

随机推荐

  1. paip.提升效率--调试--日志系统日志参数含义---python

    paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...

  2. 为什么说外卖O2O行业的未来在于尖端技术?

    7月13日,百度公司董事长兼CEO李彦宏在发布会上谈及百度外卖时表示,百度外卖里有非常多的人工智能技术的应用,比如同样的商家订单,先配送后配送,时间路线规划等等,都有人工智能的技术,涉及机器学习的问题 ...

  3. Java并发包中Lock的实现原理

    1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制.本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\l ...

  4. nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)

    该文章来源于互联网,目前找不到原作者,放在这里的目的是记录healthcheck_nginx_upstreams 的安装过程和相关配置,在起初安装成功后不能够正常运行healthcheck_nginx ...

  5. 关于C++单件模式释放对象

    http://blog.csdn.net/windboyzsj/article/details/2790485 最近接触的一个项目要用到单件模式,我像往常一样哒哒(敲击键盘ing)一个单件模式的典型结 ...

  6. C# 汉字转拼音 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母

    代码参考该文http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html VS2015版本 1.使用Nuget 安装 "Simp ...

  7. 传统认知PK网络认知 刚子扯谈烤串认知

    文/刚子 2013.7.23 提到认知,有太多的介绍,我就不在秀理论文字了,那样等于自我抄袭式的传播给大家,对于大家也没意思,可以推荐大家到百度里面搜索下”认知结构”,介绍的比我详细.同行老陈说的! ...

  8. 错误名称:EntityCommandExecutionException

    错误名称:EntityCommandExecutionException 错误时间:2015/9/22 11:13:34 错误消息:执行命令定义时出错.有关详细信息,请参阅内部异常. 堆栈信息: 在 ...

  9. c# 小数取整

    向上取整 math.ceiling() = math.ceiling( math.ceiling( 向下取整 math.) = math. math. C#取整函数实例应用详解 C#取整函数的相关使用 ...

  10. C++ STL 学习 :for_each与仿函数(functor)

    简单来将,仿函数(functor)就是一个重载了"()"运算符的struct或class,利用对象支持operator()的特性,来达到模拟函数调用效果的技术. 我们平时对一个集合 ...