对于拆分的解决方案这块,上节课我们讲到了如何去拆分,然后拆分有些问题,引入了一系列的问题,比如说分布式事务的问题,关于分布式事务这个事啊,其实挺不好解决的,就是根据情况吧,咱们在这里说三个方案,你针对不同的场景去分析,然后你说业务逻辑很复杂的时候,你就采用SOA通用服务的形式,在service上加多个事务的切面,就可以去解决第二种情况就比如数据量非常大的时候,数据量大且逻辑复杂的时候,就是不仅仅是逻辑复杂了,并且数据量也很大,那你那个时候使用SOA服务,就不太好了,因为有个问题,早期的时候没有SOA的这种dubbo,你可能就是一次http请求呗,其实就是类似于http请求的,你去访问一个数据源的时候,你比如你一次dubbo请求,这是咱们的WEB程序,然后你要访问对应的SOA服务,SOA端,访问这里边的某一个方法,你说你这个业务复杂没什么,因为JAVA很快,但是如果你要是数据量大的时候,比如我这里request的信息非常多,就是几十条,上百条,然后这边肯定得处理啊,那这个过程就很慢了,再给你做出响应,你这个时候业务复杂并且数据量大的时候,不适合这个东西的,那应该采用什么方案呢,就是不用这个SOA了,我就采用中间库的解决方案,就类似于两个系统之间,我这个系统可以同步到数据库上,他们两个可以当做什么也没有发生,如果我说的那种情况,定时可以把数据放到库里,这个系统再定时的去这个库里去取数据,这样就很大了,能不能说只要关心自己的业务就行了,其实还有一种方案就是,这是一个系统,这是一个系统,我这边就是我中间的数据库,这边有一个数据源数据库,这是我们的系统B,这是我们的系统A,我自己也可以写一个应用服务,这个worker服务是用来调度的,他主要是负责放在这里面,并且是负责把数据挖取出来,然后再放到这里,其实都可以,如果你性能不是要求这么高的话,数据量很大,实时性要求不是那么高的话,你可以用一个worker去做,去做这个协调,或者这里提供一个定时JOB,这里也提供一个定时JOB,这都行,就是类似于跨库的物化视图,也可以去做实时的更新,还有一种其他的,要求实时性非常高的怎么办,你要求实时性非常高了,那你就得去写第三方的中间件,依赖于第三方组件,zookeeper,或者你自己写一个,或者是用这个netty,两个系统直接通信,或者你要求非常实时,要求很实时,这几种方案都不行,那你只能是rest服务了,提供接口,我这边去调,前提是数据量一定别太大,第三种方案就是数据量别太大,数据量大的话还是要用中间件导一下是分布式怎么去解决
然后下面是跨节点join的问题,是一些合并啊,排序啊,分页啊,这些东西怎么办,通用的方案是把数据组织好,放到缓存中,关系型数据库和缓存定时的去同步,然后你要求不是特别高的话,可以使用中间库去解决,我们工作中就是用中间库去解决跨节点join的问题,举个例子,比如说这里有一个系统,里边有一张表,然后我中间有一个数据库,这里是A库,这里是B库,然后这里是C什么库,我这里建一个物化视图,咱们之前刚学,物化视图把这里的数据同步过来,把这里的数据同步过来,只要两边有commit,我这边物化视图就刷新,由于物化视图真正存在物理结构里,你如果并发太高的话,肯定扛不住,高不高怎么说呢,这个取决于什么呢,我觉得我们现在用的还可以,其实没有什么大的问题,并发高的话就相当高了,几万次这个并发就比较高了,那就不太适合了,并发高的意思就是,这边B系统一万个用户,10万个用户,10万个用户去修改这张表,并发高,这边肯定需要实时的刷新,把心刷新的数据存在物理的磁盘里,包括这边也再来多点,来个10万个,就特别频繁特别频繁的,只要一commit,我这个物化视图就得更新,并发不是特别高的情况下,数据量大,并发不是很高,所以你可以用物化视图解决方案,ON COMMIT或者是 ON DEMAND,每一小时我就同步一下,每隔一小时我就刷一次,就是每隔一分钟刷一次也可以,或者每隔一秒钟你就刷一次,这都行,就是别一秒钟数十万的并发,ORACLE肯定是扛不住的,或者你用一些其他的工具,同步的工具,那个性能应该是可以的,应该是可以的,数据源管理的问题,我这个数据源一多,我这里怎么去管理呢,可以去使用第三方的MYCAT,目前并不是很成熟,以后咱们可以考虑去使用,或者是你是正常的,一个模块你管理自己的数据源,这样就可以了,大不了我在zookeeper上写一个配置文件,把所有的数据源都列上来,提供一个公共的用户,访问界面,操作数据源的更新,修改,你要写自己的一个小系统了,去维护这个数据源,也是可以的,这就是解决方案简单的说一下,今天主要是讲分区,

Oracle之垂直水平分库分表(二)相关推荐

  1. Oracle之垂直水平分库分表(一)

    现在开始讲另外一个知识点吧,这个知识点也是怎么说呢,就是非常有用的知识点,刚才看了一下表空间 现在咱们说一下ORACLE里面的表类型,表类型其实有这么多种表1. 正常我们的heap table,堆表, ...

  2. 你分库分表的姿势对么?——详谈水平分库分表

    作者:vivo平台产品开发团队-Han Lei 一.背景 提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词.随着业务的发展,我们表中的数据量会变的越来越大,字段也可能随着业务复杂度的升 ...

  3. 水平分库分表的关键问题及解决思路(转)

    水平分库分表的关键问题及解决思路 分片技术的由来 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量.连接数.处理能力等都很有限,数据库本身的"有状态性"导致了它并不像Web和 ...

  4. 水平分库分表的关键步骤以及可能遇到的问题

    http://www.infoq.com/cn/articles/key-steps-and-likely-problems-of-horizontal-split-table 分片技术的由来 关系型 ...

  5. 数据库水平分库分表后的数据分页查询解决方案

    2021-09-04 更: 推荐下自己的个人框架,后面代码都会移植到框架中 链接 2020-10-19 更: 月底不出意外,打算重构了,fabric区块链框架改的差不多了 2020-10-? 更: 谢 ...

  6. 水平分库分表的关键步骤和技术难点,分库分表的几种常见玩法及如何解决跨库查询等问题...

    http://blog.csdn.net/dinglang_2009/article/details/53195871 http://blog.csdn.net/dinglang_2009/artic ...

  7. 数据库之分库分表-垂直?水平?

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  8. 分库分表之 Sharding-JDBC 中间件,看这篇真的够了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本文大纲如下 Sharding-JDBC 的基本用法和基本 ...

  9. 【数据库与事务系列】分库分表中间件

    前面讲了利用mybatis插件进行多数据源切换和分表的方案,但是对业务侵入性较强,当然给予mybatis-plus的对业务侵入性还好,但是支持的策略有限.场景有限. 所以业界诞生了很多分库分表中间件来 ...

最新文章

  1. 末学者笔记--openstack共享组件:rabbitmq(3)
  2. 关于移动端rem适配
  3. 设计模式(七):桥接模式
  4. Windows 8.1 Windows Phone 开发环境安装遇到的问题
  5. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)
  6. 不熟悉产品业务,做不好前端开发!
  7. JDK源码系列(2)-Object类
  8. orderquery.php,multiOrderQuery.php
  9. java验证ie版本的正则表达式_JS 浏览器类型判断,IE版本类型判断,正则表达式判断。...
  10. VMM2012应用指南之11-将虚拟机转换为模板
  11. [渝粤教育] 中国地质大学 计算机组成原理 复习题 (2)
  12. 【华为机试 Python实现】VLAN资源池
  13. 便捷的收集数据工具—Sniffer嗅探器
  14. python lime_本地可解释模型不可知的解释– LIME in Python
  15. ssm+boot+thymeleaf博客系统完成总结
  16. Unity3D移动平台简单实现
  17. unityUI控制角色的动画
  18. 蓝牙运动手环app开发方案
  19. 如何 使用 apache 访问 本地目录及本地文件
  20. [论文阅读笔记40]recall与rank相结合的多视角中文过程术语标准化

热门文章

  1. Ubuntu gnome 14.10下MySQLdb安装
  2. 【转】crontab 详解
  3. poj 3487 zoj 1576 稳定婚姻
  4. Spring AOP基础—JDK动态代理
  5. t2 初识Tornado
  6. 数据库 三范式最简单最易记的解释
  7. javascript setinterval 正确的语法
  8. html之四种方法导入css...
  9. 步步为营UML建模系列总结
  10. 关于ORM中只有XML没有映射实体的思考?期待大家的建议