`
water84222
  • 浏览: 375087 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

数据库的垂直划分和水平划分

阅读更多

转载自http://liriguang.iteye.com/blog/625309

本地留存,以备丢失

数据库的垂直划分和水平划分

文章分类:Java编程


数据库的水平划分和垂直划分很早以前就接触了,只是没有实践,没有什么体会,只有最近两年才有接触,今天也和大家聊聊。


垂直划分 


按照功能划分,把数据分别放到不同的数据库和服务器。


当一个网站开始刚刚创建时,可能只是考虑一天只有几十或者几百个人访问,数据库可能就个db,所有表都放一起,一台普通的服务器可能就够了,而且开发人员也非常高兴,而且信心十足,因为所有的表都在一个库中,这样查询语句就可以随便关联了,多美的一件事情。但是随着访问压力的增加,读写操作不断增加,数据库的压力绝对越来越大,可能接近极限,这时可能人们想到增加从服务器,做什么集群之类的,可是问题又来了,数据量也快速增长。


这时可以考虑对读写操作进行分离,按照业务把不同的数据放到不同的库中。其实在一个大型而且臃肿的数据库中表和表之间的数据很多是没有关系的,或者更加不需要(join)操作,理论上就应该把他们分别放到不同的服务器。例如用户的收藏夹的数据和博客的数据库就可以放到两个独立的服务器。这个就叫垂直划分(其实叫什么不重要)。


当博客或者收藏夹的数据不断增加后,应该怎么办,这样就引出了另外一个做法,叫水平划分。

 

水平划分

 

则把一个表的数据划分到不同的数据库,两个数据库的表结构一样。怎么划分,应该根据一定的规则,可以根据数据的产生者来做引导,上面的数据是由人产生的,可以根据人的id来划分数据库。然后再根据一定的规则,先获知数据在哪个数据库。

其实很多大型网站都经历了数据库垂直划分和水平的划分的阶段。其实这个可以根据经验来确定,不一定由某些硬性的规则。

以刚才的博客为例,数据可以根据userid的奇偶来确定数据的划分。把id为基数的放到A库,为偶数的放B库。




 


这样通过userId就可以知道用户的博客的数据在哪个数据库。其实可以根据userId%10来处理。还可以根据著名的HASH算法来处理。

 

当初看手机之家的架构是发现他们是:

水平切分:对数据进行水平分割。

a.最好分到同一个数据库。

b.一种已经证明是切实可行的方案:主表+辅表。

c.有3种类型:主表不打散、主表打散无辅表、主表打散有辅表。

d.但对程序员来说,TA看到的只是一张表,不妨称之为虚表(逻辑表)? ,这张虚表实际上可能是由N张实表(物理表)组成的。

 

哈哈,我还是喜欢把数据分到不同的数据库,这个可以按照业务来和环境来定吧。

 

在说句题外话,如果是大型数据库,还可以做读写分离等。

分享到:
评论

相关推荐

    数据库中的水平分割和垂直分割

    在大型系统中,为了优化性能、管理和维护,经常会使用到两种数据分割技术:水平分割和垂直分割。这两种策略各有优势和适用场景,但也会带来相应的挑战。 **1. 水平分割** 水平分割,也称为分片(Sharding),是将...

    数据库垂直拆分与水平拆分概念

     垂直拆分是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站...

    数据库表的垂直切分与水平切分

    在实际应用场景中,往往会将垂直切分和水平切分结合起来使用,以达到最优的效果。 **联合使用策略:** 1. **先垂直后水平**:首先根据业务逻辑进行垂直切分,将表按功能模块分类;然后在每个模块内部,根据数据量...

    设计高性能数据库[优化数据库结构]

    本文将详细介绍通过优化数据库结构来提高数据库性能的方法,包括分离用户数据库与系统数据库、创建数据库表分区(垂直分表和水平分表)以及合理部署数据库对象等策略。 #### 二、分离用户数据库与系统数据库 在...

    分布式数据库 第三章 分布式数据库的设计

    分布式数据库设计是指如何将分布式数据库系统中的数据进行逻辑划分和实际物理分配,以满足不同的业务需求和应用场景。在本章中,我们将讨论分布式数据库设计的基本概念、设计策略、分片定义、水平分片、垂直分片、分...

    数据库的物理设计教程资料

    数据划分可以水平划分和垂直划分两种方式。水平划分是指根据课程容量将相关的表划分成三个子表,以便排课。垂直划分是指将Course_schema表划分成两个子表,一个是course_name和course_location,另一个是course_name...

    分布式数据库课后习题答案整理

    分布式数据库系统是一个物理上分散而逻辑上集中的系统,它使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中式数据库系统)连接起来,共同组成一个统一的数据库系统。...

    数据库Sharding的基本思想和切分策略

    综上所述,数据库Sharding通过将数据分散到多个服务器上来提高性能和可扩展性,其核心在于合理规划垂直和水平切分策略,以及妥善处理数据分布和一致性问题。正确实施Sharding策略可以帮助企业应对大数据时代的挑战,...

    全国计算机等级考试数据库技术三级

    在分片透明性、水平分片、垂直分片和导出分片的概念下,分布式数据库系统由局部数据库管理系统、全局数据库管理系统、全局数据字典和通信管理组成。 总的来说,全国计算机等级考试数据库技术三级涵盖了数据库设计、...

    腾讯云分布式数据库解决方案

    垂直切分(分库)是按照业务功能对数据库进行划分,例如电商平台将会员、商品、交易、物流等不同功能的数据存储在不同的数据库实例中。而水平切分(分表)则是将单一数据库表中的数据根据某种规则,分散存储到多个...

    数据库分库分表(sharding)的技术

    **垂直与水平联合切分**结合了垂直切分和水平切分的优点,是一种更为灵活和高效的解决方案。例如,可以先按照功能模块将表进行垂直切分,然后再对某些高访问量的表进行水平切分。 - **优点**: - 兼顾了垂直切分和...

    头豹研究院-分布式数据库技术系列概览:分布式数据库核心技术发展趋势.rar

    分片策略有垂直分片(按列划分)和水平分片(按行划分),可以根据业务需求灵活选择。 2. **一致性模型**:在分布式环境中,数据的一致性是关键挑战。常见的模型有强一致性、最终一致性、因果一致性等。随着CAP理论...

    SQL数据库技术架构变革.pptx

    总结来说,SQL数据库技术架构的变革主要包括了数据库的结构优化,如垂直拆分和水平扩展,以及监控和性能管理的升级,通过引入自动化和智能化的工具,提高了系统的稳定性和扩展性。此外,对SQL的审查和优化进一步保证...

    [详细完整版]分布式数据库.doc

    例如,学生需要理解不同类型的分片(水平、垂直、混合),掌握查询处理器的工作原理,学习如何优化分布式查询,以及熟悉各种事务管理和恢复协议,如两段提交协议。 此外,课程还引入了实际案例,如Oracle的分布式...

    数据存储技术在分布式数据库中的应用.pdf

    划分储存又分为水平划分和垂直划分,其中水平划分是指将整体的关系分割成若干个较小的关系或分片,而垂直划分则要求各分片是原始关系的无损连接分解。 在水平划分中,原始关系被逐部分分离,形成多个分片,每个分片...

    分布式数据库设置

    ### 分布式数据库设置 ...通过采用分布式数据库的部署策略,特别是水平分片和垂直分片的方法,可以显著提高数据库系统的性能和可扩展性。本案例中所涉及的具体步骤和技术细节对于实际应用具有重要的参考价值。

    分布式数据库论文:系统分布式数据库的设计

    2. **片段设计**:确定如何将全局关系分片,可以是水平分片(按元组划分)、垂直分片(按属性划分)或混合分片(两者结合)。 3. **片段分配设计**:决定片段如何映射到物理存储,包括非冗余分配(每个片段只存在于...

    东北大学申德荣分布式数据库系统原理与应用讲义

    设计分布式数据库时,需要考虑数据的划分策略,如水平分割(按记录分)和垂直分割(按字段分)。此外,还要考虑数据的复制策略,包括无复制、单主复制或多主复制,每种都有其优缺点。在设计过程中,还需要考虑事务...

Global site tag (gtag.js) - Google Analytics