`

数据库分片技术

 
阅读更多

假如您有一个应用程序,随着业务越来越有起色,系统所牵涉到的数据量也就越来越大,此时您要涉及到对系统进行伸缩(Scale)的问题了。

       一种典型的扩展方法叫做“向上伸缩(Scale Up)”,它的意思是通过使用更好的硬件来提高系统的性能参数。而另一种方法则叫做“向外伸缩(Scale Out)”,它是指通过增加额外的硬件(如服务器)来达到相同的效果。

       从“硬件成本”还是“系统极限”的角度来说,“向外伸缩”一般都会优于“向上伸缩”,因此大部分上规模的系统都会在一定程度上考虑“向外”的方式。由于许多系统的瓶颈都处在数据存储上,因此一种叫做“数据分片(Database Sharding)”的数据架构方式应运而生,本文便会讨论这种数据架构方式的一种比较典型的实现方式。

  简介

  数据分片,自然便是将整体数据分摊在多个存储设备(下文统称为“数据分区”或“分区”)上,这样每个存储设备的数据量相对就会小很多,以此满足系统的性能需求。值得注意的是,系统分片的策略有很多,例如常见的有以下几种:

  根据ID特征:例如对记录的ID取模,得到的结果是几,那么这条记录就放在编号为几的数据分区上。

  根据时间范围:例如前100万个用户数据在第1个分区中,第二个100万用户数据放在第2个分区中。

  基于检索表:根据ID先去一个表内找到它所在的分区,然后再去目标分区进行查找。

  ……

  在这些数据分片策略之中没有哪个有绝对的优势,选择哪种策略完全是根据系统的业务或是数据特征来确定的。值得强调的是:数据分片不是银弹,它对系统的性能和伸缩性(Scalability)带来一定好处的同时,也会对系统开发带来许多复杂度。

        例如,有两条记录分别处在不同的服务器上,那么如果有一个业务是为它们建立一个“关联”,那么很可能表示“关联”的记录就必须在两个分区内各放一条。另外,如果您重视数据的完整性,那么跨数据分区的事务又立即变成了性能杀手。最后,如果有一些需要进行全局查找的业务,光有数据分片策略也很难对系统性能带来什么优势。

数据分片
  在ORACLE 中,全局关系是一个视图,而数据分片是通过关系数据的基本运算实现的,这一点在全局视图的定义中体现。

数据分片主要有两种方式:
(1) 水平分片
  按一定条件将全局关系的所有元组划分成若干个相交的子集,每个子集为关系的一个片段。
  例如,一个公司下属两个子公司,每个子公司建有自己的数据库,并存放本公司的职员信息。在总公司的数据库上建立一个全局关系,可以看到全公司的全体职员信息。建立全局关系emp(视图)的语句如下:
  CREARTE VIEW emp AS
  (SELECT* FROM emp1@ D1)
  UNION
  (SELECT *FROM emp2@ D2);
  这样,全局关系emp中的元组实际上是分布在另外两个不同的数据库上。

(2) 垂直分片
  把全局关系的属性集分成若干子集,形成几个垂直片段。
  例如,全局关系emp中,有关职工的人事信息在数据库D1上,而职工的业务信息在数据库D2上。当然,有些属性(如职工号这样的关键字属性)应出现在每个垂直片中。建立全局关系EMP(视图)的语句如下:
  CREATTE VIEW emp AS
  SELECRT emp1.eno, emp1.ename, emp2.sal,…
  FROM emp1@D1, emp2@D2
  WHERE emp1.eno=emp2.eno;
  全局关系实际上是将分布在不同数据库中的一个职工记录的各部分重新连接起来,然后投影出所要的属性。
实际上,我们可以通过视图的定义,实现全局关系数据的多种分布要求,全局关系屏蔽了数据的物理分布,提供了数据分布的又一个透明性。

分享到:
评论

相关推荐

    论文研究-关系数据库分片研究 .pdf

    关系数据库分片研究,王建周,李端玲,文章基于关系数据库,研究关系数据库在数据量增加以及访问量增加时的数据分片方法,从而扩展数据库的存储和性能。文章主要研究了

    分布式数据库试题及答案.doc

    1.3.1. 将全局模式进行分片,写出分片定义和分片条件。 7 1.3.2. 指出各分片的类型,并画出分片树。 8 1.3.3. 假设要求查询系号为1的所有学生的姓名和成绩,写出在全局模式上的SQL查询语句,并要求转换成相应的关系...

    《分布式数据库技术金融应用规范》的技术架构及分布式事务核心功能的解读揭秘v1.0.pptx

    4、分布式事务数据库、分布式事务、数据分片、数据节点、计算节点、存储节点等专业术语定义 5、分布式事务数据库的全局序列、读写分离、并行计算 6、分布式事务应用透明的计算节点架构和引入管理协调节点架构的...

    Mycat数据库中间件技术总结

    mycat数据库中间件、支持分库分表。本文档对数据库的水平拆分配置、环境搭建、分片规则等做了详细描述。

    数据库专家谈MySQL分片.pdf

    数据库专家谈MySQL分片.pdf

    Sharding JDBC 实现数据分片 - 技术分享.pdf

    初步了解sharding jdbc实现数据分片的技术文档

    分布式数据库系统管理与设计实验报告

    实验实现了分布式数据库的水平分片、垂直分片和混合式数据分布。 MS SQL Server 2000 分布式数据库功能允许用户把多个不同场地的数据库当作一个完整的数据库看待,允许用户透明地查询和操作远程数据库实例的数据,并...

    高中信息技术-浙教版选修四数据库与数据库管理系统.pptx

    数据库与数据库管理系统 高中信息技术-浙教版选修四数据库与数据库管理系统全文共13页,当前为第1页。 1.了解数据、数据库的基本概念; 2.了解数据库管理系统的作用及分类; 3.了解字段、字段名、记录的含义; 4....

    分布式数据库系统教程

    分布式数据存储的两种形式(分片和分配)。 (4)DDB的体系结构:六层模式,分布透明性的三个层次,DDBS的组成,DDBMS的功能和组成。 (5)分布式查询处理的查询代价,基于半联接的优化策略,基于联接的优化策略。 ...

    mongodb分片技术_动力节点Java学院整理

    在mongodb里面存在另一种集群,就是分片技术,当数据量达到T级别的时候,我们的磁盘,内存就吃不消了,针对这样的场景我们该如何应对。 一:分片 mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上的一种...

    分布式数据库系统复习材料.doc

    分片、分布处理、授权、事务恢复等的必要信息 17、数据分片有三种基本方法:水平分片、垂直分片、混合分片 18、定义各类片段要遵守的规则:完备性条件、可重构条件、不相交条件 19、所谓数据分布是指分布式数据库中...

    [详细完整版]数据库发展史.pdf

    数据库发展史 数据库技术从诞生到现在,在不到 半个世纪的时间里,形成了坚实的理论 基础、成熟的商业产品和广泛的应用领 域,吸引越来越多的研究者加入。数据库 的诞生和发展给计算机信息管理带来了 一场巨大的革命...

    研究生分布式数据库参考习题

    1.3.1. 将全局模式进行分片,写出分片定义和分片条件。 7 1.3.2. 指出各分片的类型,并画出分片树。 8 1.3.3. 假设要求查询系号为1的所有学生的姓名和成绩,写出在全局模式上的SQL查询语句,并要求转换成相应的...

    人工智能-项目实践-区块链-于分片技术实现高性能区块链.zip

    人工智能-项目实践-区块链-于分片技术实现高性能区块链 原理分析 添加RPC操作,完善区块结构、交易结构 添加RLP处理操作 添加数据库操作相关的文件blockdb 添加日志文件log 添加监控相关的文件metrics 添加测试...

    Mycat数据库中间件技术最佳实践手册-中台

    Mycat是一个开源的高性能的数据库中间件,主要用于数据库的分...主要介绍了Mycat的基本概念、原理特性、开发环境搭建、详细的相关配置、Mycat常用分片规则以及支持的语法规范等知识点和技术点进行了全面的讲解和论述。

    MongoDB分片详解

    使用几乎所有数据库软件都能进行手动分片,应用需要维护与若干不同数据库服务器的连接,每个连接还是完全 独立的.应用程序管理不同服务器上的不同数据,存储查村都需要在正确的服务器上进行.这种方法可以很好的工作,...

    分布式数据库的设计与实现.doc

    在全局数据与各部门之间,以及数据库服务器与web数据库服务器的数据关系中,采 用垂直分片的方式。设计过程中采用了基于视图概念的数据库设计方法。开发过程中在 数据集成、测试、分布式数据库部署等方面做了大量的...

    MongoDB入门教程之分片技术详解

    在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存就吃不消了,针对这样的场景我们该如何应对。  一:分片  mongodb采用将集合进行拆分...

Global site tag (gtag.js) - Google Analytics