【SequoiaDB 学习笔记】巨杉分布式数据库初接触_sequoiadb实时数仓-程序员宅基地

技术标签: 学习  sequoiadb  数据库  

前言

SequoiaDB 巨杉数据库是一款国产自研的金融级分布式数据库。我首次了解到巨杉数据库是在深圳大学的数据库内核课上,再后来参与了巨杉数据库在深圳大学开设的公开课,了解到了巨杉数据库的发展过程、发展理念以及他们的发展方向。之后观看了 SequoiaDB V5.2 发布会视频,了解了巨杉数据库产品的最新特点。

下面我就公开课以及发布会中学习到的一些内容做一个简单小记

巨杉数据库——释放全量数据价值

全量数据 ?

首先,大概了解一下什么是结构化数据、半结构化数据、非结构化数据,简单地说就是:

  • 结构化数据:比如平时我们用的关系型数据库存的那些一行行的,有很多属性的,能够用二维表结构表示的数据
  • 半结构化数据:用相关标记来分隔语义元素以及对记录和字段进行分层,如HTML文档,JSON,XML和一些NoSQL数据库
  • 非结构化数据:没有固定结构的数据,就例如 音频、视频文件

非结构化数据相比于结构化数据的一个问题就是难以存储和利用,在上一个信息化的大数据时代,我们往往用以数据分析挖掘的是结构化的结果数据,非结构化数据的价值还未被充分挖掘和发挥。那巨杉数据库的一个目标就是释放全量数据价值

传统交易核心与数据核心

伴随数字化的发展,企业不但需要面向业务的交易核心,同时需要面向全量数据价值的数据核心

  • 交易核心:解决交易系统的问题,交易过程当中产生的全量行为数据、流水数据等称为数据核心的生产要素
  • 数据核心:依托分布式技术,解决数据的采集、整理、聚合、运用等问题为传统业务的交易核心提供实时跨业务的全量数据支持以及基于数据的决策依据,实现数据价值的持续释放

传统交易核心与数据核心

全量行为数据、流水数据相比于结果数据是十分庞大的,可以想象每个人的账户都有一笔钱,但是账户之间的交易流水数据是非常非常多的,每刷一次支付码就多一条流水记录,可以想象这个量级是多么恐怖

相比于聚焦于处理业务结果数据的交易核心数据库,处理海量数据就需要借助分布式技术强大的横向扩展能力,这就对数据核心的数据库提出了与交易核心截然不同的需求:

  • 多模:数据类型复杂,数据量庞大,需要提供多模的能力保存和处理全量数据
  • 实时:面向全量数据提供直接实时对客的查询能力,释放全量数据价值,提高客户整体满意度。比如客户不单能快速查询账户余额,还能从庞大的流水记录中快速查询出自己的流水账单
  • 分析:对于企业的数字化决策要提供准确且统一的数据,提升数据流动和使用的效率,也是为了释放全量数据价值

释放全量数据价值

从异步离线到实时对客

异步离线:

当下不少企业处理全量数据的方案是通过MPP数据仓库+Hadoop大数据平台构建数据库系统。但是因为MPP和Hadoop的各种限制,很难提供高并发的实时对客查询访问,数据的价值就仅仅停留于对系统的提供离线的数据分析、统计、加工等能力

然而在数字化经济的发展当中,全量数据的实时对客查询以及分析能力,是提升客户满意度的关键的因素。因此这个需求推动着巨杉数据库的发展

实时对客:

巨杉数据库在数据流入以及数据的高并发加粗样式对客两个方向提供实时的能力支持:数据实时流式入户以后除了可以进行实时的分析统计加工以外,更可以提供对结构化、半结构化数据的实时可高并发查询,以及对对象数据提供实时存取的服务能力

实时需求
巨杉数据库并不是要替代左边或是右边,而是希望通过湖仓一体的能力,服务于面向全量数据价值的全新的数据核心,为客户在不同需求场景提供不同的产品选择

需求推动发展

巨杉数据库早在十年前看到Hadoop并不能满足数字化的发展,于是开始自研原生分布式内核。也正是由于中国经济数字化发展领先于全球,中国的金融、银行业对数字化转型的需求是比世界其他国家都要大的,可以说巨杉数据库是带有中国特色的创新。从2013年正式商业化以后,随着客户对于多模数据处理实时高并发,以及数据分析的一个业务需求,推动着巨杉数据库从多模数据湖到实时数据湖,再发展到湖仓一体。v5.2将进一步增强流式处理、查询分析等能力

image-20221011222615823

SequoiaDB V5.2 特性

Join 优化

在数据湖的应用场景中,数据的导入和使用都是离线的。过去几年流批一体的数据导入模式使得数据集成不再依赖于单纯的异步ETL处理,流式处理让数据库的数据输入更实时,但还是只能离线进行数据分析统计,无法提供实时的对客服务。

巨杉数据库基于湖仓一体架构深度优化了实时查询处理能力,针对交易进行了深度的优化,特别是在 BKA Join 和 Index Merge 方面进行了深度优化

  • 交易操作的列表有可用的索引进行访问时,使用缓存区累积JOIN外表查询的记录,再批量拉取列表结果与缓存区哈希查找,匹配性能表现获得了巨大提升
  • 在 Index 的使用上,在特定的后条件的 Index merge 场景下,通过避免回表操作减少网络IO以提升查询性能

多维分区

为了让高并发的对客实时查询更加平稳,巨杉提供了多维分区技术

基于数据域,按需基于时间范围分类等条件实现数据的精准定位,在基于条件的范围查询中避免形成全标的数据偏离,降低网络IO提升并发效率

在数据域内的数据再进行基于ID、名字等具体属性的二次哈希分区,在进行基于明确属性的精准查询中,可以有效分散数据IO,避免IO拥堵

在这里插入图片描述

列存微分区

为了解决客户的实时数据分析需求,巨杉引入全新的列存存储能力,并通过SequoiaDB的引擎级多模能力,将数据统一存储在分布式存储底座中

列存相比于行存的优势:
行存情况下,在选择查询只涉及少数几项属性时,数据库必须读取每一条完整的行记录,读取效率低。列存这时候可以只读取与查询目标相关的列,减少无关IO避免全表扫描
列存相比于行存的优势

接下来版本中,巨杉还将提供行列转换的能力,同时也可以提供对外的增量数据输出能力,实现湖对下游提供数据服务,实现端到端打通

另外,巨杉引入了自研的微分区技术有效的缓解了数据膨胀,同时将微分区以及分区之上各个列的统计信息相结合,在查询过程当中,更大程度的减少了数据访问量带来额外的性能提升。在极端的场景下也可以直直接使用我们的统计信息,如select count(*)

分片并发+可变分片大小

上面几个特性是巨杉数据库在结构化数据查询、数据分析实施能力的体现,而分片并发加可变变化大小实得非结构化数据处理更实时

非结构化数据系统需要具备的能力:

  • 从过去的归档存储加后台查阅的方式变成在线存取加在线对客的使用,要求非结构化数据系统必须提供稳定的实时访问能力和在线能力
  • 无纸化和在线化的推动让大量的业务系统都会访问非结构化数据,要求非结构化数据系统必须满足高并发范围下的实施能力
  • 数据量在快速增长往全量数据平台发展,要求非结构化数据系统必须能够提供良好的扩展性和基于全量数据的生命周期管理能力
  • 对非结构化数据的治理和价值挖掘不断提出新的探索和挑战,标签管理、原数据检索、内容检索等也成为必要的能力


在巨杉数据库中通过两部分进行非结构化数据的管理和访问——上层的数据引擎层和下层的存储引擎层,它们分别进行专门的数据优化处理以提高非结构化数据的处理能力:

  • 当业务系统向数据引擎层写入对象时,提供了高速数据通道减少对象数据在各模块中的网络传输,对象数据始终在数据通道中共享并进行压缩,以此提高流通效率缩短响应时延
  • 在存储引擎层传入的对象数据会根据分区元数据缓存进行哈希分片,并将分片数据打包发给各存储节点并发执行。打包的分片数据在各存储节点上再次采用哈希算法进行一跳快速寻址以及连续空间分配,极大的利用了顺序IO的能力降低了IO的访问次数

没有中间节点的交互,且分片元数据以及分片数据可以存储在不同的存储介质上,可以将分片元数据存在高性能的SSD上,分片数据存在高密度的HDD上

分片并发

但是分片并发有个缺点就是分片小了浪费IO,分片大了浪费空间。业界大多采用后台合并来重新压缩空间,这就带来了大量IO放大和分片寻址IO次数增加,对上层业务读写带来性能波动。巨杉数据库采用可变分片大小技术,根据对象自身的大小自适应调整分辨大小,业务对象写入巨杉数据库后后台不会发生任何的IO合并,保障业务读写的性能稳定性确保实施能力

可变分片大小

多模数据统一容灾管理

过去的数据平台中,结构化数据和非结构化数据只能采用不同系统来混合搭建,因此在容灾上页只能针对各系统采用独立的容灾方案,这会带来容灾数据不一致的问题

巨杉数据库通过多模的数据管理能力对多模数据进行统一的容灾管理,提供多种在线容灾策略,保证了一致性且极大简化了运维

多模数据统一管理

全量数据生命周期管理

为了让数据根据本身的访问和价值的特点在不同配置的硬件中实现按需分布,实现全链路的生命周期管理,巨杉数据库通过数据域在统一的平台中,可以实现异构的硬件配置,可以同时实现高性能的热数据域和大容量的温数据域满足不同数据的特性要求。对于长期需要保存、极少参与或不再参与在线业务的冷数据也支持将数据同步至第三方存储,以对象数据的方式进行异构存储的管理

全量数据生命周期管理

SAC链路监控

巨杉数据库为客户提供了名为SAC的分布式数据库集群管理工具,面向巨杉的全系列的产品提供一站式的运维管理平台,覆盖了集群管理、系统管理、数据管理、监控、安全管理五大方向。它的监控能力杠杠的,帮助快速定位解决故障问题且提供趋势分析预警

在数据的监控能力方面,又分为性能、集群、查询、事务、会话、死锁六大监控模块

通过发布会的演示可以清晰地看到,SAC分布式数据库集群管理工具的功能非常丰富。首先在趋势分析里能看到某个时间段的数据库整体统计信息、数据库性能信息。在慢查询监控中能看到慢查询详细信息,能看到网络开销情况、访问计划、查询路径等,很多。
查看慢查询的查询路径


主要内容就这么多啦~


图片以及资料来源:

简述结构化数据、非结构化数据、半结构化数据
巨杉数据库SequoiaDB V5.2发布会回放完整版
巨杉湖仓一体技术解读|列存+微分区优化,分析性能10倍提升

详细的内容大家可以自行观看发布会视频,在发布会中更有赛迪顾问对《湖仓一体技术研究报告》进行深度解读。在巨杉数据库的微信公众号也有许多技术解读内容。

另外,巨杉在人才培养方面开设了一个SequoiaDB University,里面有许多学习课程,它致力于培养熟悉分布式架构和数据库技术的一流人才,提供线上线下的培训考试和认证,助力拓展技术视野,共同促进技术生态发展。在官网也有SequoiaDB文档,有兴趣深入学习的朋友们可以去康康。

鄙人资历尚浅,对数据仓库和分布式的了解不多,湖仓一体也是刚刚接触到的一个概念。如有谬误或整理不到位之处,烦请指教~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45943953/article/details/127284634

智能推荐

自适应滤波算法(LMS算法)-程序员宅基地

文章浏览阅读9.7k次,点赞6次,收藏68次。引言 LMS学习算法是由Widrow和Hoff于1960年提出的,该算法也称为Δ\DeltaΔ规则,该算法与感知器网络的学习算法在权值调整上都基于纠错学习规则,但LMS算法那更容易实现,因此得到了广泛应用。   注意:LMS算法只能训练单层网络,但这并不影响其功能,从理论上讲,多层线性网络并不比单层网络强大,它们具有同样的能力,即对于每一个多层线性网络,都具有一个等效的单层..._lms算法

【文末福利】为什么我们要掌握Linux系统编程?_学习了linux系统编程可以结合什么用-程序员宅基地

文章浏览阅读9.1k次,点赞9次,收藏14次。作为一个嵌入式开发者,我觉得基于Linux的系统编程,这个应该是绕不开的话题。本文将围绕,为何要掌握Linux系统编程这个问题,给出一些观点,希望对各位有所帮助。_学习了linux系统编程可以结合什么用

LoRaAN终端OTAA入网方式的详细介绍_join_devnonce_err-程序员宅基地

文章浏览阅读1k次。在之前的文章中向大家介绍了“该如何选择LoRaWAN终端入的网方式”,本文主要介绍了OTAA节点是如何入网的。此文来自微信公众号“小七说LoRa”,内容已获小七老师授权,小七老师是腾讯云在线课程讲师,点击链接https://mp.weixin.qq.com/s/WvGmi81zBMzbAX8OUb-DpA可以观看课程视频。OTAA的全称是Over The Air Activation。它的入网步骤是这样的:节点发出的Join Request请求通过网关转发到服务器,也就是NS;NS会对该请求做一些判断处_join_devnonce_err

0.96寸OLED使用IIC接口和SPI接口arduino连接方式的说明_spi的dc怎么接-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏15次。7pin0.96寸 OLED模块支持SPI和 IIC接口;默认是SPI接口;如果想用 IIC接口;操作如下几步骤:1.将模块背面的电阻R3换到R1 位置,此时将模块切换为IIC接口;电阻 R8 可以用0 欧姆电阻或是用焊锡短接电阻两端。2.CS脚接地。3.DC脚的处理:在 IIC 通信中 DC的高低电平是用来选择IIC通信地址的;当 DC接地时 IIC从机地址为:0x..._spi的dc怎么接

Writing Solaris Device Driver: Basic_9、device driver basic-程序员宅基地

文章浏览阅读828次。Device Driver BasicsThis section introduces you to device drivers and their entry points on the Solaris platform.What Is a Device Driver? A device driver is a kernel module that is responsible_9、device driver basic

Spring Boot整合Shiro完成认证,权限管理,MD5+salt加密_shiro整合md5+权限-程序员宅基地

文章浏览阅读786次。Spring Boot整合Shiro完成认证,权限管理,MD5+salt加密整合代码如下Pom.xml后端代码配置文件application.properties前台代码整合代码如下Pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"..._shiro整合md5+权限

随便推点

Android系统属性值设置和使用_property_value_max-程序员宅基地

文章浏览阅读2.8k次。转载:https://blog.csdn.net/qq_30624591/article/details/102679377每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务..._property_value_max

SAS学习6(freq过程、tabulate过程、univariate过程、plot过程、chart过程)_sas中vbar什么意思-程序员宅基地

文章浏览阅读1.4k次。SAS学习6(freq过程、tabulate过程、univariate过程、plot过程、chart过程)_sas中vbar什么意思

xxl-job手动触发报错 xxl-rpc remoting error(no protocol: ip/run_xxl-job remoting error(no protocol: 10.200.7.184:9-程序员宅基地

文章浏览阅读1.9k次。今日在xxl-job任务调度中心,指定定时任务执行的机器地址时,报了xxl-rpc remoting error(no protocol: [指定ip]/run), for url : [指定ip]/run 错误。2、最后发现指定机器地址:http://127.0.0.1:9999/就可正常运行定时任务了。但是手动执行任务时却还是报错,根本就没有进入,猜测是地址问题。1、将执行器节点ip改为:http://127.0.0.1:9999。2、状态码 200 表明请求已经成功,服务器已成功处理了请求。_xxl-job remoting error(no protocol: 10.200.7.184:9999/run), for url : 10.200

openGauss企业版安装_opengauss_3.0.5 企业版安装-程序员宅基地

文章浏览阅读8.3k次,点赞40次,收藏44次。目录安装前准备服务器数据库安装包依赖的软件修改操作系统配置配置文件准备预安装安装及验证安装前准备这里要准备三个部分,服务器(OS已安装好)+数据库安装包+依赖的软件。服务器首先找小伙伴申请了华为云服务器安装好了OS,这里使用的是x86_64+openEuler 20.03LTS。你要是没有这么给力的小伙伴就自己亲力亲为吧~ 华为云服务器现在可是很划算呢,安装也很方便。[root@pekphisprb70593 ~]# cat /etc/os-_opengauss_3.0.5 企业版安装

java 从1到30中随机取出7个数_随机七个数-程序员宅基地

文章浏览阅读6.9k次。package com.abcchina;import java.util.ArrayList;import java.util.Collections;import java.util.LinkedList;import java.util.List;public class Suijishu {/*** @param args*/public static void main..._随机七个数

(四)在Navicat中,利用Query对表进行查询_navict查询1988年的学生-程序员宅基地

文章浏览阅读2.4k次。1.查询所有班级代码如下:select * from TB_Class;2.查询班级编号是1的班级信息代码如下:select ClassID,className,descript from TB_Class where ClassID=1;3.查询班级编号是2,并且学历是bachelor的学员信息代码如下:select * from TB_St..._navict查询1988年的学生

推荐文章

热门文章

相关标签