分布式数据库中数据的分片----《分布式数据库系统及其应用》

数据分片也称数据分割,是分布式数据库的特征之一。在一个分布式数据库中,全局数据库是由各个局部数据库逻辑组合而成;反之,各个局部数据库是由全局数据库的某种逻辑分割而得。

在分布式数据库中,数据存放的单位是数据的逻辑片段。对关系数据库来说,一个数据库的逻辑片段是关系的一部分。数据分片有三种基本分法,它们是通过关系代数的基本运算来实现的。

  1. 水平分片

    按特定条件把全局关系的所有元祖分划成若干个相互不相交的子集,每一子集为全局关系的一个逻辑片段,简称片段。它们通过对全局关系施加选择运算得到,并可通过对这些片段执行合并操作来恢复该全局关系。

  2. 垂直分片

把全局关系的属性集分成若干子集。为得到这些子集,对全局关系作投影运算,要求全局关系的每一属性至少映射到一个垂直片段中,且每一个垂直片段都包含该全局关系的建。这样,可以通过对这些片段执行连接操作来恢复该全局关系。

3) 混合分片

是以上两种方法的混合。可以先水平分片再垂直分片,或先垂直分片再水平分片,但他们的结果是不相同的。

       分布式数据库的分片,是不是觉得在现在互联网架构中很熟悉,对,那就是解决数据库瓶颈的垂直拆分与水平拆分。

时间: 2024-12-25 17:00:13

分布式数据库中数据的分片----《分布式数据库系统及其应用》的相关文章

分布式数据库中的Paxos 算法

分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvYfDDmg3Rg1Aw6YyobKozdN599x2sCiJNNHV_ Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法.这个算法被认为是类似算法中最有效的. 中文名 Paxo

分布式数据库中全局唯一主键

[相关文章] <分布式数据库中全局唯一主键生成策略的设计与实现><activiti5.10解决分布式集群部署的主键问题><分布式环境下数据库主键方案><如何在高并发分布式系统中生成全局唯一Id><分布式环境下ID生成方法总结> <分布式环境下数据库主键方案> [ http://www.2cto.com/database/201309/243195.html ] 在只使用单数据库时,使用自增主键ID无疑是最适合的.但在集群.主从架构上时

为什么分布式数据库中不使用uuid作为主键?

分布式数据库当然也有主键的需求,但是为什么不直接使用uuid作为主键呢?作为曾经被这个问题困惑过的人,试着回答一下 1. UUID生成速率低下 Java的UUID依赖于SecureRandom.nextBytes方法,而SecureRandom又依赖于操作系统提供的随机数源, 在Linux系统下,它的默认依赖是/dev/random,而这个源是阻塞的. 最可怕的是,这个nextBytes方法还是一个synchronized方法,也就是说,如果多线程调用UUID,生成速率不升反降. 测试结果:在一

数据库中数据DELETE了怎样恢复

USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date: 07/12/2014 15:09:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Recover_Deleted_Data_Proc] @Database_Name NVARCH

QTP校验数据库中数据后台项目

数据校验功能后台主要包括两个类:QTPCommonServlet.java和QTPCommonDao.java 其中QTPCommonServlet.java为: package com.runqianapp.qtp; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.runqiana

QTP校验数据库中数据前台项目

首先看一下效果图: 未操作之前页面: 进行操作之后的页面: 前台jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); request.setCharacterEncoding("UTF-8"); String basePath =

分布式数据库选型——数据水平拆分方案

概述 水平拆分的概念随着分布式数据库的推广已为大部分人熟知.分库分表.异构索引.小表广播.这些功能几乎是产品功能需求标配.然而有些客户使用分布式数据库后的体验不尽如意.本文尝试从数据的角度总结分布式数据的复制(replication)和分区(partition)技术原理和方案,其中分区也有称为分片(sharding),希望能引起读者一些思考,在分布式数据库选型中能注意这些细节的区别,选择适合业务的数据水平拆分方案. 分布式数据库架构 分布式数据库以集群形式存在,有多个节点.集群架构有共享磁盘架构

JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作

(—)通过mysql workbench 创建一个数据库,在这里命名为company,然后建一个tb_employee表 (二)以下是java代码对表tb_employee的操作 1 创建一个Employee类,包括员工的一些信息,如  id  name age sex 2创建DatabaseConnection类,用于数据库的连接 3创建一个EmployeeOperation类,用于操作数据库,它里面包括了 以下方法 (1)getInstance()   //返回EmployeeOperati

使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中. 1.问题背景 使用Sqoop把oracle数据库中的一张表,这里假定为student,当中的数据导入到hdfs中,然后再创建hive的external表,location到刚才保存到hdfs中数