资讯专栏INFORMATION COLUMN

【技术解密】SequoiaDB分布式存储原理

pinecone / 2490人阅读

摘要:并且各种数据库的技术特点,都包含了数据分布式存储的功能技术,以解决当前企业数据量快速膨胀,客户对系统的相应时间要求越来越高的技术难题。如果用户要利用主子表功能来实现数据的分布式存储,还需一些小技巧。

分布式架构势在必行

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

互联网应用迅猛发展
在过去, 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巨杉数据库社区

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38750.html

相关文章

  • NewSQL数据库大对象块存储原理与应用

    摘要:图元数据与数据文件结构映射在建立集合的过程当中,大对象存储必须依附于普通集合存在,一个集合中的大对象仅归属于该集合,不能被另外一个集合管理。 前言 企业内容管理(Enterprise Content Management,ECM)系统是一种管理非结构化内容的系统,传统代表为EMC Documentum或IBM Filenet等ECM解决方案。随着大数据技术的越发普及,越来越多的客户开始...

    xorpay 评论0 收藏0
  • NewSQL数据库大对象块存储原理与应用

    摘要:图元数据与数据文件结构映射在建立集合的过程当中,大对象存储必须依附于普通集合存在,一个集合中的大对象仅归属于该集合,不能被另外一个集合管理。 前言 企业内容管理(Enterprise Content Management,ECM)系统是一种管理非结构化内容的系统,传统代表为EMC Documentum或IBM Filenet等ECM解决方案。随着大数据技术的越发普及,越来越多的客户开始...

    Jenny_Tong 评论0 收藏0
  • 兼容MySQL的开源布式数据库SequoiaDB在去哪儿网的实践

    摘要:符合这样要求的分布式数据库有吗最近在开源数据库论坛大会上向开源社区做出分享的巨杉数据库恰好进入了我的视线。这个名称在数据库领域应该是比较熟悉了,他们已经做了很多年的分布式数据库,只是最近才出现在了社区。与巨杉数据库的协议转换器。 在开源数据库大会(ODF)在京举办成功落幕之际,也许很多人依然沉浸在技术大餐中,因为这些技术正是每个从业者所关注甚至是自己的饭碗。只有这样的技术会议,才会引起...

    elarity 评论0 收藏0
  • 新手福音:巨杉数据库教程专区上线啦!

    摘要:为了提供更优质的学习资源,巨杉数据库的技术大牛录制了一套视频教程,以简单直观的方式提供大家学习使用巨杉数据库。如果你是刚刚接触巨杉数据库的用户,本套教程会让你对巨杉产生一套完整的认知,并系统的掌握使用方法。 作为一个程序员 在经历了种种入门之后…showImg(https://segmentfault.com/img/bVMhAI?w=640&h=406); showImg(https...

    oujie 评论0 收藏0
  • 新手福音:巨杉数据库教程专区上线啦!

    摘要:为了提供更优质的学习资源,巨杉数据库的技术大牛录制了一套视频教程,以简单直观的方式提供大家学习使用巨杉数据库。如果你是刚刚接触巨杉数据库的用户,本套教程会让你对巨杉产生一套完整的认知,并系统的掌握使用方法。 作为一个程序员 在经历了种种入门之后…showImg(https://segmentfault.com/img/bVMhAI?w=640&h=406); showImg(https...

    liujs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<