分布式架构势在必行

在传统的数据库技术中,为了保证数据的安全与高性能,通常会选择高端的外置存储作为数据库的主要存储源,而本地磁盘则被视为不可靠的性能低下的一种设备。这种观念的产生,主要是由于过去本地磁盘的生产技术存在一定的瓶颈,并且其稳定性和性能确实都远落后于高端存储。

  • 互联网应用迅猛发展

在过去, IT行业的发展远没有现在蓬勃,大家更多的是在家里或者办公室通过桌面级设备上网查询资料和浏览世界各类时事新闻。在这样的时代背景下,互联网企业和像银行、通讯类公司这种对IT部门十分依赖的传统企业,一台小型机和一个优秀的关系型数据库就能够很好的处理企业内部多个系统之间的数据了。

但是在最近10年,甚至更短的时间里,每个人手中都拥有了一部或者多部智能移动终端,它们除了能够打电话、发短信,也能够像笔记本电脑一样,上网、玩游戏、购物、聊天。各种智能应用和业务场景也被开发者发掘出来了,这些新颖的应用也正在被大部分消费者所接受。

  • 硬件成本大大降低

一台小型机+一个优秀的关系型数据库已经越来越不能满足IT部门对急速膨胀的数据量的处理需求了,重要一个原因,传统的数据库技术无法做到方便快捷地将海量数据分配给多台服务器去计算,而永远只能通过垂直扩容硬件的方式提升系统性能。

经过这10几年的发展,过去不被企业认可的磁盘技术有了很大的进步,从SATA磁盘到SAS磁盘,从机械磁盘到SSD磁盘,技术的进步,使得本地磁盘的稳定性和读写性能都有了非常大的提升。它们也逐渐被企业使用在重要的生产环境中。

  • 分布式大数据技术革新

与磁盘技术同时发展起来的,还有各种大数据技术。先有谷歌的三篇著名论文,后有各种技术特点的NoSQL/NewSQL数据库。它们的技术实现,都是基于廉价的X86服务器和本次磁盘作为主要的硬件服务器而设计。

并且各种NoSQL/NewSQL数据库的技术特点,都包含了数据分布式存储的功能技术,以解决当前企业数据量快速膨胀,客户对IT系统的相应时间要求越来越高的技术难题。

数据库分布式原理介绍

Hash 方式分布数据

数据库Hash方式分布数据,原理就是用户在建立集合时,指定此集合的切分方式为Hash,并且显式指定ShardingKey 为记录中哪个字段。

图1

当应用APP向数据库发送写入记录的请求时,首先会将记录与请求发送到数据库的Coord节点,Coord节点会根据此集合的切分方式,例如ShardingKey=id,ShardingType=Hash,以及记录中ShardingKey的Hash值,判断应该将此记录分发给哪个数据分区组。一旦数据分区组接收到写入记录请求与写入的数据信息,数据分区组会调用数据库中相应的方法将此记录持久化到磁盘上,并且同时更新此数据分区组中对应集合的索引数据。

Range 方式分布数据

数据库Range方式分布数据,原理就是用户在建立集合时,指定此集合的切分方式为Range,并且显式指定ShardingKey 为记录中哪个字段。

图2

当应用APP向数据库发送写入记录的请求时,首先会将记录与请求发送到数据库的Coord节点,Coord节点会根据此集合的切分方式,例如ShardingKey=id,ShardingType=Range,以及记录中ShardingKey的值,判断此记录是属于哪个范围的数据分区组,然后再将此记录发送给对应的数据分区组。一旦数据分区组接收到写入记录请求与写入的数据信息,数据分区组会调用数据库中相应的方法将此记录持久化到磁盘上,并且同时更新此数据分区组中对应集合的索引数据。

Partition 方式分布数据

在SequoiaDB数据库中,对比其他的NoSQL数据库的简单数据切分功能,使用了“主子表”的功能,这个功能与部分关系型数据库的Partition功能类似,都是在数据库中建立一张逻辑的总视图,然后将多个Partition通过某个字段的范围限定挂载到总视图上。

通过“主子表”这种分布式方式,用户可以按照需求对于数据进行更好、更细化的切分工作。同时,类似于时间序中或冷热数据可以做到天然的切分,这样更有利于硬件资源的充分利用。

在SequoiaDB中,main collection 对应关系型数据库的总视图,sub collection 对应关系型数据库的partition。而SequoiaDB数据库中,比较特殊的是,sub collection 实际上就是一个普通的集合,而main collection 则是只存在于数据库的编目节点中,并不会在任何数据分区组中写入任何数据。

用户基本可以理解为main collection为逻辑视图,只在编目节点中保留一些数据范围信息,而sub collection 则是数据库中普通建立的集合,只是在配合main collection 一起使用时,才被称呼为sub collection。

图3

在一般情况下,用户建立一个集合,此集合会随机被分配到某个数据分区组上。如果用户要利用主子表功能来实现数据的分布式存储,还需一些小技巧。用户在建立集合时,可以通过显式指定此集合被分配到哪个数据分区组上,从而避免sub collection扎堆在某个数据分区组上。

用户最后一个步骤就是给每个sub collection 划定范围分区,然后将各个sub collection attach到main collection 上。

多维分区

在SequoiaDB数据库多种分布式原理上,最为复杂和最为高效的方法,就是数据多维分区。多维分区,顾名思义,就是在对集合做数据分区时,不止一种分区方式同时作用在一个集合上。

如图4 ,多维分区实际上就是主子表和Hash分区相结合的一种方式。

图4

目前SequoiaDB的多维分区可以为一个集合提供两个字段的做分区。一般情况下,用户可以在主子表中对time字段做范围切分,然后再对sub collection 的id字段做Hash切分。

用户使用多维分区的方式,主要的优势在于可以将一个海量数据的集合以更加小的颗粒度做数据均衡,以提升数据库的性能。

用户在使用多维分区功能时,还可以结合数据库的Domain 功能,来更好地处理数据分区任务。

图5

Domain,就是数据库将多个数据分区组整合在一起的一个逻辑域,用户可以在建立集合空间时直接指定此集合空间属于哪个Domain上,然后基于此集合空间建立的集合,只要是ShardingType=Hash的,数据库就会自动将此集合按照ShardingKey的Hash 值分发给属于此Domain的数据分区组。

分布式架构是未来大数据甚至所有互联网应用的大势所趋,而对于海量数据的存储和管理,分布式架构天然具有高性能、高可用等等核心优势点。

SequoiaDB巨杉数据库提供的多种数据分布/分区功能,不仅在存储架构上提供了多样化的选择,满足了更多大数据应用场景下的需求。同时,通过我们的“主子表”、“多维分区”等数据分区功能,在满足业务需求同时还大大的提升了系统的性能。

SequoiaDB巨杉数据库2.6最新版下载

SequoiaDB巨杉数据库技术博客

SequoiaDB巨杉数据库社区

【技术解密】SequoiaDB分布式存储原理的更多相关文章

  1. 【操作教程】SequoiaDB分布式存储教程

    1.各模式适用场景介绍 由于SequoiaDB对比其他的NoSQL有更多的方式将数据分布到多台服务器上,所以下面笔者为阅读者一一介绍每种分布式方式适合于哪种场景. 1.1 Hash 方式分布数据 在H ...

  2. 非对称加密技术- RSA算法数学原理分析

    非对称加密技术,在现在网络中,有非常广泛应用.加密技术更是数字货币的基础. 所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密. 但是对于其原理大部分同学应 ...

  3. 《大型网站技术架构:核心原理与案例分析》【PDF】下载

    <大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...

  4. 2018-2019-2 网络对抗技术 20165232 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp2 后门原理与实践 1. 后门原理与实践实验说明及预备知识 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 ( ...

  5. 2018-2019-2 20165237《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 20165237<网络对抗技术>Exp2 后门原理与实践 一.实践目标 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell, ...

  6. 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...

  7. 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践 - 实验任务 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主 ...

  8. 2018-2019-2 网络对抗技术 20165323 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165323 Exp2 后门原理与实践 一.实验要求 (3.5分) (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用soc ...

  9. 2018-2019-2 20165235《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 20165235<网络对抗技术>Exp2 后门原理与实践 实验内容 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shel ...

随机推荐

  1. 单词计数,杭电0j-2072

    原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2072 [Problem Description] lily的好朋友xiaoou333最近很空,他想了一 ...

  2. iOS textfield 限制输入字数长度

    iOS textfield限制输入的最大长度 [self.textFiled addTarget:self action:@selector(textFieldDidChange:) forContr ...

  3. Windows 自动获取IP脚本

    @echo off echo 正在自动获取IP地址.... set 连接名称=以太网 netsh interface ip set address name = "%连接名称%" ...

  4. 图的M着色问题

    问题描述: 给定无向连通图 G 和 m 种不同的颜色.用这些颜色为图 G 和各顶点着色,每个顶点着一种颜色.是否有一种着色法使得图 G 中每条边的两个顶点着不同的颜色.这个问题是图的 m 可着色判定问 ...

  5. [原创]MySQL数据库忘记root密码解决办法

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:

  6. 你知道“移动端车牌识别”可以嵌入到PDA中应用吗?

    一.移动端车牌识别产品描述 移动端车牌识别软件是基于移动平台的OCR识别应用程序,支持Android/IOS等多种主流移动操作系统.该产品只需通过智能手机或Pad的摄像头对准车牌,无需拍照,实现自动采 ...

  7. JAVA POI 应用系列(1)--生成Excel

    POI简介(官网:http://poi.apache.org/)     Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office ...

  8. 2016计蒜之道复赛B题:联想专卖店促销

    题解 思路: 二分答案,设我们要check的值为x. 注意到每一个礼包都有,一个U盘,一个鼠标. 剩余的,分别为一个机械键盘,一个U盘,一个鼠标. 当礼包数目为x时,我们至多可以提供a-x个普通,b- ...

  9. GPU编程--kernels(2)

    "如何区分不同的数据单位单位呢?" "如何确定程序是在CPU端执行,还是GPU端执行呢?" "如何确定要调用的GPU线程数呢?" 下面举一个 ...

  10. Python爬虫Dota排行榜爬取

    1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法异步请求数据 在 XHR一栏里,我们找到所请求的 ...