当前位置: 首页 > news >正文

MyBatis知多少(11)企业数据库

企业数据库比应用程序数据库更大,其外部影响也更大。它们与其他系统之间存在更多的关系,包括依赖关系和被依赖关系。这些关系可能是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)应用程序数据库

转载于:https://www.cnblogs.com/Coda/p/4657798.html

相关文章:

  • protel99常用元件的电气图形符号和封装形式--奥研电子整理
  • Qt:Qt 的昨天,今天,明天
  • 奇异值分解(SVD) --- 几何意义
  • 【转载】MiniUtilityFramework(八):CImage和IMAGE
  • 11个Visual Studio代码性能分析工具
  • 先发一篇垫个底吧“有关地址转换(NAT)部分”
  • Java线
  • 京东商城商品价格获取方法
  • 【小学生入门级C++例题】第七章函数【第一天 学习C++】
  • 剑指offer-面试题2.实例Singleton模式
  • Linux环境下不重新编译php添加扩展模块
  • Ext.Net系列:二Event之DirectEvents
  • 字节对齐(Byte Alignment)
  • 【转】adb uninstall卸载apk文件说明
  • 2012年十大科技趋势:Siri将震惊世界
  • JS 中的深拷贝与浅拷贝
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【mysql】环境安装、服务启动、密码设置
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • const let
  • CSS居中完全指南——构建CSS居中决策树
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JS题目及答案整理
  • linux安装openssl、swoole等扩展的具体步骤
  • magento2项目上线注意事项
  • mysql外键的使用
  • Ruby 2.x 源代码分析:扩展 概述
  • Yii源码解读-服务定位器(Service Locator)
  • 安装python包到指定虚拟环境
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分类模型——Logistics Regression
  • 如何设计一个比特币钱包服务
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 微信公众号开发小记——5.python微信红包
  • 我看到的前端
  • 详解NodeJs流之一
  • 【干货分享】dos命令大全
  • Spring第一个helloWorld
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (二)fiber的基本认识
  • (论文阅读30/100)Convolutional Pose Machines
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)用.Net的File控件上传文件的解决方案
  • ./configure,make,make install的作用
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理出现中文乱码的情况
  • .NET Core引入性能分析引导优化
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .so文件(linux系统)