1、数据库为什么要水平拆分
由于业务发展数据量越来越大,例如淘宝、京东、58等等大型网站单表是绝对无法存储那么大的数据量的,因此出现了数据水平拆分,以某个字段取模、hash等方式将数据水平分割存到不同数据库上去存储,达到快速查询的目的。
2、为什么要“多维度”
在一条数据中,往往可能在前台通过多个纬度进行在线查询需求。
举例说明:常见的订单中心多维度业务分析
订单表设计如下:
Order(oid, buyer_uid, seller_uid, createtime,detail,postage...)
其中:
oid为订单ID,主键
buyer_uid为买家uid
seller_uid为卖家uid
createtime, money, postage …等为订单属性
典型的架构设计为:
order-center: 订单中心,提供restful接口
order-db: 数据库,存储系统
订单数量会越来越大,数据库需要进行水平拆分,用哪个字段进行切分就成了需要解决的关键技术问题:
通过oid进行拆分,那么buyer_uid和seller_uid则需要遍历多个库
通过buyer_uid或者seller_uid进行拆分查询另外一个字段时候需要遍历多个库。
这样就很难有一个两全齐美的方式。
常见的查询方式:
订单实体查询:通过订单id查询,这样查询占80%
用户订单列表查询:这样的查询占12%
商家订单列表查询:这样的查询占8%
看到这样的数据,有些人可能会认为以订单id拆分就好了,其他两个占比很小,可以忽略。我想说的是虽然占比很小,但是这个数据量也是很庞大的,不容忽略,所以要以最优的方式让商家和用户订单都能快速查询到自己的订单列表,于是就有下面的架构图:
商家查询订单实时性要求不是很高,因此可以采用此架构。
order-db1 是通过buyer_id水平拆分后的
这时候可能有些人就有一个问题了,这里都是通过buyer_id和seller_id拆分数据,那通过订单id不是要遍历多个库,其实不用的,买家通过id查找,使用买家id查找在哪个库上,在通过该sql去指定库查询
相关推荐
多维度数据库和数据仓库
多维度分析数据库复制与存储复制的架构差异.docx
, 全书主要内容从三个维度展开:首先是内部扩展的维度,深入探讨了高效B树索引、高效表设计、查询优化器等数据库架构设计与优化的核心技术,以及高并发Oracle数据库系统架构与设计的方法论和常见的高并发案例;...
汽车底盘域多维度动力学集成优化控制及其软件架构设计_田端洋.caj
多维度架构之日志.m4v
在架构设计上提出了架构分解过程模型和多维度多层次分解模型。如果期望有一个权威统一的标准定义,那答案是没有,目前存在多种软件架构的定义,可以说百花齐放,百家争鸣。其中IEEE1471-2000的定义是这样的:系统的...
多维度架构之超时时间.m4v
多维度架构之会话数.m4v
多维度架构之网络延迟.m4v
高并发Oracle数据库系统的架构与设计主要内容从三个维度展开:首先是内部扩展的维度,深入探讨了高效B树索引、高效表设计、查询优化器等数据库架构设计与优化的核心技术,以及高并发Oracle数据库系统架构与设计的...
MMCS多维度-多归因量表.pdf
数据库与架构(Schema) 在ANSI SQL- 92标准里,架构被定义为由单个用户所有的一组数据库对象,并构成一个单独的命名空 间。一个命名空间就是一组不能重名对象。例如,两张表只有在不同 的架构下才能取相同的名字,...
数据库架构设计 author:skate time:2013/06/04 数据库架构设计 最近在考虑如何能设计好⼀个数据库架构,下⾯是个⼈⼀点想法,欢迎⾼⼈指正 任何系统都不是独⽴的,是⼀个⽣态系统,数据库也是⼀样的,要使其在其⽣...
科技人才的素质直接关系到科学技术的发展速度与水平, 但目前还没有定量衡量科技人才全面素质的维度, 本文在大量理论研究和分析的基础上, 提出多层次科技人才维度的概念, 即从多方面对科技人才进行综合、交叉分析, 并...
《剑侠情缘网络版叁》游戏世界分析,多维度分析。
基于Echarts插件的多个维度多个度量数据可视化源码,依赖于Echarts插件。可分别对于离散型和连续型数据进行处理。
安全架构设计方法指南,讲解安全架构设计的来源、软件系统架构与安全架构的定义,常见的系统架构表现形式,安全架构视图,安全架构设计的基本步骤和参考,基于八维度设计框架的安全架构设计方法,维度安全架构设计...
架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。