SequoiaDB数据水平分区简介

1. 数据水平分区简介

在SequoiaDB中,默认情况下,表(集合)的数据只会存储在一个复制组中。这样,对该表的CRUD操作只会落到一个复制组中。

随着对表的IO请求上升/数据量的增加,就会造成性能瓶颈,导致访问时延增加。为了解决这个问题,便引入了水平分区的功能。

水平分区可以将表(集合)切分成若干分区,并将分区指定到不同的复制组中。示意图如下:

上图中,将集合2切分成N个分区, 每个分区可以指定到不同的复制组。这样,当查询数据时,就会根据条件将请求发给不同的复制组,提升查询性能。

2. 如何使用水平切分

假设前提场景:

已经安装了集群模式的SequoiaDB,并且创建了两个复制组db1, db2.

执行SequoiaDB shell工具sdb,并连接上协调节点

./sdb>db = new Sdb(‘localhost‘, 11810)                         //连接本地的协调节点>db.createCS(‘cs‘).createCL(‘cl‘, {Group:‘db1‘})          //创建表cs.cl,并将表数据指定在复制组db1上

a、修改表属性,设置分区键

>db.cs.cl.alter((ShardingKey:{a:1}})         //指定表中名为a的字段作为分区键, {a:1}其中1表示升序

b、设置了分区键之后,就可以将表按分区键做切分

>db.cs.cl.split(‘db1‘, ‘db2‘, {a:100})     //将表中a在范围[100, 无穷大)的数据从db1中切分到db2中

c、验证设置成功与否

>db.snapshot(8, {Name:"cs.cl"})            //获取表cs.cl的快照信息
{
  "CataInfo": [
    {
      "ID": 0,
      "GroupID": 1000,
      "GroupName": "db1"
      "LowBound": {
        "a": {
          "$minKey": 1
        }
      },
      "UpBound": {
        "a": 100
      }
    },
    {
      "ID": 1,
      "GroupID": 1001,
      "GroupName": "db2"
      "LowBound": {
        "a": 100
      },
      "UpBound": {
        "a": {
          "$maxKey": 1
         }
      }
    }
  ]  "EnsureShardingIndex": true,
  "_id": {
    "$oid": "55272fa4d9150b7ff15a6ddc"
  },
  "Name": "cs.cl",
  "Version": 3,
}

这样当访问a在(无穷小, 100)范围的数据时,就只会访问复制组db1,

当访问a在[100, 无穷大)范围的数据时, 只会访问复制组db2。这样可以使请求分流,并解决表数据量过大的问题。

时间: 2024-10-08 21:26:33

SequoiaDB数据水平分区简介的相关文章

巨杉Tech | SequoiaDB数据域及存储规划

1 背景近年来,企业的各项业务发展迅猛,客户数目不断增加,后台服务系统压力也越来越大,系统的各项硬件资源也变得非常紧张.因此,在技术风险可控的基础上,希望引入大数据技术,利用大数据技术优化现有IT系统实现升级改造,搭建一个统一存储和管理历史.近线数据的服务平台,同时能够对外支持高并发.低延时的数据查询服务,以提高IT系统的计算能力,降低IT系统的建设成本,优化IT系统的服务体系,为各个业务部门提供更加优质的IT服务.这类服务平台在整个IT系统架构中实质上是一个为核心业务系统减负的系统.Sequo

硬盘MBR,GPT分区简介

硬盘分区简介 硬盘相关知识 硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的).每个盘片的划分规则通常是一样的.这样每个盘片的半径均为固定值R的同心圆在逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0.1.2--每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则

mount命令及swap分区简介

 mount:挂载设备 使用格式: mount [type] [options] device(设备名) dir(挂载点) 1.-t:指定挂载设备文件系统格式,通常不需要指定,mount调用blkid命令自动选择文件系统格式 光盘或光盘镜像:ISO9660 linux网络文件系统:NFS windows文件系统格式:FAT32.NTFS linux系统文件格式:ext2.ext3.... -a:挂载/etc/fatab中定义的所有文件系统 -n:默认情况下,mount没挂载一个设备都会把挂载设备

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

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

55种开源数据可视化工具简介

55种开源数据可视化工具简介 雪姬 2015-04-21 11:47:56 数据可视化 评论(2)   数据时代数据可视化成为理解和表达数据的有效甚至是唯一的手段. 一共56个,盘点最实用的大数据可视化分析工具 工欲善其事必先利其器,本文对55个流行的数据可视化工具开源协议,主页,文档,案例等资源的进行简单介绍,其中包括著名的D3.js,R,Gephi,Raphaël,Processing.js,Tableau Public,Google Chart Tools,Arbor.js等,资料来源ht

linux数据盘分区以及格式化

首先切换到root账户下  sudo -i 手动格式化 请根据以下步骤对数据盘进行分区以及格式化,并挂载分区使数据盘可用. 注:执行以下命令时,请注意修改数据盘符,可以使用"fdisk -l"查看盘符等相关信息,以下均以xvdb为例,若是其他盘符,仅需将vdb替换为该盘符即可,如fdisk /dev/vdb替换为fdisk /dev/xvdb请确认路径为"/dev/vdb",若错填为"/dev/vda",将会造成云主机崩溃 2.1 查看数据盘信息

iOS中常用的四种数据持久化方法简介

iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject <NSCoding>@property (nonatomic, assign) NSInteger userID;@property (nonatomic,

Linux系统下常见的数据盘分区丢失的问题以及对应的处理方法

在修复数据前,您必须先对分区丢失的数据盘创建快照,在快照创建完成后再尝试修复.如果在修复过程中出现问题,您可以通过快照回滚将数据盘还原到修复之前的状态. 前提条件 在修复数据前,您必须先对分区丢失的数据盘创建快照,在快照创建完成后再尝试修复.如果在修复过程中出现问题,您可以通过快照回滚将数据盘还原到修复之前的状态. 工具说明 在Linux实例里,您可以选择以下任一种工具修复磁盘分区并恢复数据: fdisk:Linux系统默认安装的分区工具. testdisk:主要用恢复Linux系统的磁盘分区或

内存数据网格IMDG简介

1 简介 将内存作为首要存储介质不是什么新鲜事儿,我们身边有很多主存数据库(IMDB或MMDB)的例子.在对主存的使用上,内存数据网格(In Memory Data Grid,IMDG)与IMDB类似,但二者在架构上完全不同.IMDG特性可以总结为以下几点: ?  数据是分布式存储在多台服务器上的. ?  每台服务器都是active模式. ?  数据模型通常是面向对象和非关系型的. ?  根据需要,经常会增减服务器. 此外,IMDG与普通缓存系统也是不同的.同样地,在主存使用以及水平扩展上缓存系