【技术解密】SequoiaDB分布式存储原理
分布式架构势在必行
在传统的数据库技术中,为了保证数据的安全与高性能,通常会选择高端的外置存储作为数据库的主要存储源,而本地磁盘则被视为不可靠的性能低下的一种设备。这种观念的产生,主要是由于过去本地磁盘的生产技术存在一定的瓶颈,并且其稳定性和性能确实都远落后于高端存储。
- 互联网应用迅猛发展
在过去, 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分布式存储原理的更多相关文章
- 【操作教程】SequoiaDB分布式存储教程
1.各模式适用场景介绍 由于SequoiaDB对比其他的NoSQL有更多的方式将数据分布到多台服务器上,所以下面笔者为阅读者一一介绍每种分布式方式适合于哪种场景. 1.1 Hash 方式分布数据 在H ...
- 非对称加密技术- RSA算法数学原理分析
非对称加密技术,在现在网络中,有非常广泛应用.加密技术更是数字货币的基础. 所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密. 但是对于其原理大部分同学应 ...
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
- 2018-2019-2 网络对抗技术 20165232 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165232 Exp2 后门原理与实践 1. 后门原理与实践实验说明及预备知识 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 ( ...
- 2018-2019-2 20165237《网络对抗技术》Exp2 后门原理与实践
2018-2019-2 20165237<网络对抗技术>Exp2 后门原理与实践 一.实践目标 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell, ...
- 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...
- 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践
- 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践 - 实验任务 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主 ...
- 2018-2019-2 网络对抗技术 20165323 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165323 Exp2 后门原理与实践 一.实验要求 (3.5分) (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用soc ...
- 2018-2019-2 20165235《网络对抗技术》Exp2 后门原理与实践
2018-2019-2 20165235<网络对抗技术>Exp2 后门原理与实践 实验内容 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shel ...
随机推荐
- 用 Vue 全家桶二次开发 V2EX 社区
一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...
- [UWP]不怎么实用的Shape指南:自定义Shape
1. 前言 这篇文章介绍了继承并自定义Shape的方法,不过,恐怕,事实上,100个xaml的程序员99个都不会用到.写出来是因为反正都学了,当作写个笔记. 通过这篇文章,你可以学到如下知识点: 自定 ...
- CopyOnWriteArrayList实现原理及源码分析
CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可 ...
- UILabel图文混排显示图片和文字
//传入文字 自动图片放在左边文字紧接着后排排布 -(void)setAttrDetailLabelWithTitle:(NSString *)title { NSMutableAttributedS ...
- WPF自动更新程序
WPF AutoUpdater 描述: WPF+MVVM实现的自动更新程序 支持更新包文件验证(比较文件MD5码) 支持区分x86与x64程序的更新 支持更新程序的版本号 支持执行更新策略 截图: 使 ...
- kotlin语言使用初体验(一)
居说谷歌新认的干儿子kotlin极为受宠,隐隐有替代Java在 android平台老大位置的趋势.kotlin有谷歌撑腰,加上自己的底子也厚,再之与Java无缝兼容,将来在流行的编程语言中占有一席之地 ...
- $.when()方法翻译
地址:http://api.jquery.com/jQuery.when/ jQuery.when( deferreds ),returns Promise 正文 Description: Provi ...
- eclipse hibernate导出数据库实体类
打开eclipse->help->Eclipse Marketplace->查找hibernate->安装如下插件 只要安装其中一个,hibernate tool即可: 安装完 ...
- Images as x-axis labels
Open-source software is awesome. If I found that a piece of closed-source software was missing a fea ...
- Adobe After Effect CC2017 for Mac
前段时间学习使用 Lottie 制作炫酷的动画,需要 Adobe After Effect 安装 bodymovin 插件,然后导出动画的 json 文件.尝试安装 AE 工具.网上查找 史蒂芬周的博 ...