zoukankan      html  css  js  c++  java
  • 分库分表中间件特性分析

    随着互联网行业的兴起, 分库分表中间件在很多大型网站获得了成功应用。分库分表中间件本身不具备完整的数据库特性,毕竟顾名思义只是一个中间件,还需要搭建数个关系数据库系统作为服务节点。有些传统企业希望借鉴互联网企业的经验,引入这类中间件来构件分布式系统,以达到降低成本,提升系统性能和灵活性的目的,但是传统企业引入此类架构的风险不容小觑。

        SQL语言特性非常丰富,是上层应用操作数据库的标准工具。但是几乎所有的中间件对SQL的支持非常弱,对应用施加种种限制,有的甚至连数据库基本的唯一性约束都无法提供,连接、子查询、分类聚合、排序等基本操作要么需要符合极为有限的条件,要么索性不支持,把特性优雅功能强大的SQL语言限制得支离破碎,成熟的应用开发模式完全不适用,很多数据库的功能被迫提升到业务层,增加项目的复杂度,应用开发或调整的成本和风险违背了企业引入此类架构的初衷。

        分布式增加了系统复杂性,涉及的软硬件较多, 出问题的概率急剧上升,数据一致性的保证复杂化,增加了维护的麻烦。中间件作为代理,存取数据需要增加至少一次交互,不可避免有性能损耗。很少有这类系统能提供以tpc-c为模型的事务处理性能指标。

      分库分表中间件的分布系统中,数据被分布到多个节点,但是目前的中间件并没有能力有效去管理这些分布数据,SQL功能被肢解就是直接体现,这导致对数据做一些简单的统计分析报表都成了很大的难题。当然也有解决办法,不嫌麻烦的话把这些数据迁移到另外一个系统,比如时尚的hadoop,再编写算法运行一些批作业来完成分析工作,当然这需要额外的投资。

        数据库系统作为管理数据,共享数据的平台,需要保证数据的一致性、完整性,方便数据共享,随时提供存取和分析,才能最大体现其价值。目前典型的单机服务器,或基于单机集中式模型构建的读写分离等集群,无论是CPU计算能力,内外存的存储容量,都足以应付传统企业的大部分业务,高性能大容量的PCI-E存储卡的应用也部分抵消了分布式IO优势。采购多台低配的机器去配置一个小型基于分库分表的分布式系统,是不可取的做法。用类似或更底的预算,去配置一台配置稍高的单机系统,采用集中共享模式,将消除中间件架构带来的一切麻烦,极大简化系统维护工作量,提升系统综合效能。

  • 相关阅读:
    bzoj2434: [Noi2011]阿狸的打字机
    bzoj2830: [Shoi2012]随机树
    题解,作业*2
    bzoj1901: Zju2112 Dynamic Rankings
    luogu P4178 Tree
    CF1042C Array Product 分类讨论+贪心
    CF946D Timetable 动态规划
    CF597C Subsequences 树状数组 + 动态规划
    CF912D Fishes 期望 + 贪心
    bzoj 4321 queue2 dp
  • 原文地址:https://www.cnblogs.com/xxt19970908/p/6685788.html
Copyright © 2011-2022 走看看