此论文描述了在无共享架构的多处理器机器上的数据库系统的数据冗余分布方法。该方法提高了系统的可用性,同时在单节点故障的情况下,可以很好的实现负载均衡。以下是论文的一些摘要,详细可以参见论文原文
 

Tandem’s Mirrored Disks Architecture

 
每个disk 分区都有一份copy
每个disk对应两个IO controller
每个controller对应两个Processors
单个disk fail只会影响读,不影响写
单个processor fail 对 cup bound应用影响 
 
Teradata’s Data Clustering Scheme
   每个分片通过key hash分布到各个磁盘。
   每个分片有主分片和备分片
   每个磁盘的备分片平均分配到其它磁盘,当某个磁盘故障时,其它磁盘可以均摊故障磁盘的压力。但是这种分布下,任意两个磁盘同时故障都会导致数据不可用。
   只支持hash分区不支持range和round-robin.
 RAID’s Data Storage Scheme
 
 
  raid5,奇偶校验信息平均分布到各个磁盘,没次写入都要读取每个磁盘,算出校验信息。
  读取只需要读相应的盘,但当出现一个坏盘是,读取需要读每个盘来恢复构造数据。因此raid坏盘是读取会有明显影响。 
 
Chained Declustering Strategy
 
 数据分片算法如下:
    Assume that there are a total of M disks numbered from 1 to M. For every relation R, the i-th fragment of the primary copy is stored on the {[i-1+C(R)] mod M + 1}-th disk drive, and the i-th ragment of the backup copy will be stored on the {[i+C(R)] mod M + 1}-th disk drive;insuring that the primary and backup fragments are placed on different disk drives.
 
    relation-cluster:如果节点数过多可以分组为多个relation-cluster;
    chain-clusters:如果 relation-cluster中的节点数过多还可以将其分组为多个chain-cluster,单个节点故障后,在故障节点所在的chain-cluster内负载均衡。
 
   下图8个节点组成一个relation-cluster,包含两个chain-cluster,每个chain-cluster包含4个节点
 Availability and Load Balancing
    集群中磁盘节点数越多,任意两个磁盘同时故障的概率越大。Chained Decluster分组后,只需计算组内的两个磁盘同时故障的概率,故障大大降低。
 
Responsible Range and Extent Map
 
    active fragment table:每个节点都有主备数据,active fragment table用来就记录主备数据分别那部分数据用于当前访问。正常情况只访问主数据,此时active fragment table记录的只是主数据;只有当节点故障才访问备数据,此时active fragment table记录了主备数据的访问分配情况。 
 
    Responsible Range:对于range分区指定边界范围
                       对于hash分区指定fold范围
 
    Extent Map:对于heap组织的数据指定extent的物理地址范围
 
Load Balancing Algorithm
   Changing the Selection Predicate:
   Adding a Selection Predicate
   Using the Extent Map
   文中举了三个例子,其中对于hash分区例子,通过分区值得到主数据所在节点,然后通过active fragment table确定访问主数据节点还是备数据节点。
 
Availability and Performance
 
 
 
 一些思考: 
    两个节点fail(不是逻辑相邻的节点)后如何分布:负载将不一定均衡,4节点是均衡的,5节点不军衡(1-5节点,2,4同时故障,3节点作为2和4的相邻节点,其主备数据都要完整访问,占整个数据的2/5,而实际上每个节点占1/3才平均)2/N=1/N-2=>N=4 故障节点只相邻一个节点情况下只有4节点是平衡的。其它情况6个节点2个故障也可以达到平衡。
   active fragment table的维护代价:每个表可能有多个active fragment table 
   负载均衡算法只考虑读的情况,写本身是均衡的。均衡算法跟原始数据分布是否均匀有关,而且4.4的表格中还列了些均衡不可用的情况。 
   如何增加节点 ?
 
参考:  

H.-I. Hsiao and D. J. DeWitt, “Chained declustering: A new availability strategy for multiprocessor database machines,”in roceedings of Sixth International Conference on Data Engineering (ICDE), pp. 456–465,Los Angeles, CA, November 1990.

Chained Declustering的更多相关文章

  1. 利用jquery.chained.remote实现多级级联

    多级级联一直是前端比较烦人的一个功能,本次用jquery的插件,chained.remote实现多级级联. 应用场景:至少有二个下拉框,下拉框的个数不定. 应用步骤: 1.引入js文件,当然这个插件需 ...

  2. Chained Exceptions in Java

    1. Overview In this article, we’ll have a very brief look at what Exception is and go in depth about ...

  3. [每天解决一问题系列 - 0005] WiX Burn 如何校验chained package的合法性

    问题描述: 项目中使用Wix burn打包,内部包含了多个MSI.有时候会遇到如下错误 Error 0x80091007: Failed to verify hash of payload: Setu ...

  4. PyCharm黄色波浪线提示: Simplify chained comparison

    译过来就是,可简化连锁比较: case 1 if a >= 0 and a <= 9: 1 可简化为: if 0 <= a <= 9: 1 就像我们的数学表达式一样.显然这种情 ...

  5. This inspection highlights chained comparisons that can be simplified.

    https://stackoverflow.com/questions/26502775/pycharm-simplify-chained-comparison In Python you can & ...

  6. chained get value from nested json

    static getValueByKey(o, p, defaultValue = false) { return p.split('.').reduce((r, k) => { if (typ ...

  7. MVVM大比拼之knockout.js源码精析

    简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有 ...

  8. JavaScript资源大全中文版(Awesome最新版)

    Awesome系列的JavaScript资源整理.awesome-javascript是sorrycc发起维护的 JS 资源列表,内容包括:包管理器.加载器.测试框架.运行器.QA.MVC框架和库.模 ...

  9. PHP的学习--新特性

    最近做的项目使用了 php7,但感觉有很多新特性没有用起来.就想总结一下,一些可能会用到的新特性.之前使用的环境是 php5.4,所有也会有 php5.5 和 php5.6 的特性总结进来,这里只列出 ...

随机推荐

  1. 使用GMap.NET类库,实现地图轨迹回放。(WPF版)

    前言 实现轨迹回放,GMap.NET有对应的类GMapRoute.这个类函数很少,功能有限,只能实现简单的轨迹回放.要实现更复杂的轨迹回放,就需要自己动手了. 本文介绍一种方法,可以实现复杂的轨迹回放 ...

  2. How to correctly handle ThreadLocal.get() returning null

    Java's ThreadLocals make certain things easy, but special care must be taken to make sure they are r ...

  3. Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)

    Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!  Web网站上的图片,视频等其它多媒体文件以及大文件,因 ...

  4. SQL PKG示例

    CREATE OR REPLACE PACKAGE PKG_SYS_LOG IS -- Author : Li Cong -- Created : 2009-10-12 -- Purpose : 存放 ...

  5. ES 入门记录之 match和term查询的区别

    ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...

  6. javascript 易错点、难点笔记

    本文主要记录在学习过程中遇到的JavaScript难点或者容易疏忽的细节,也方便自己日后翻阅学习. 1.arr.length === + arr.length arr.length === + arr ...

  7. 手把手教你实现自己的abp代码生成器

    代码生成器的原理无非就是得到字段相关信息(字段名,字段类型,字段注释等),然后根据模板,其实就是字符串的拼接与替换生成相应代码. 所以第一步我们需要解决如何得到字段的相关信息,有两种方式 通过反射获得 ...

  8. C#操作MongoDB入门

    1.MongoDB安装及配置 (1)下载:   mongodb官网 https://www.mongodb.com/download-center      进入官网下载页,你会发现版本都是windo ...

  9. 未能找到类型或命名空间名List

    解决方法添加引用using System.Collections.Generic;

  10. C#调用百度地图API经验分享(二)

    接着上一篇,将上一篇代码的js提取出来:<script type="text/JavaScript">var map = new BMap.Map("allm ...