自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 开务正式加入中国信通院数据库应用创新实验室

近日,开务数据库正式加入由中国信息通信研究院(简称:中国信通院)发起成立的数据库应用创新实验室。

2022-09-29 14:43:19 142

原创 分布式系统中自适应统计信息收集策略

传统的统计信息收集存在一些共性问题:对于收集统计信息的时间(触发条件)判断简单,一般只看增量数据,没有综合考虑多种因素;执行和存储模型不通用,不能适应各种情景;收集任务的执行不能自适应地控制。ASC 用三个组件解决以上问题:Adaptive Triggering 利用更加丰富的信息判断何时触发;Adaptive Scheduling 为每个任务选择最合适的执行模型和执行位置;Adaptive Executing 自适应地控制任务的执行时间。

2022-09-28 15:54:53 584

原创 深入浅出带你走进 RocksDB

RocksDB 是基于 Google LevelDB 研发的高性能 Key-Value 持久化存储引擎,以库组件形式嵌入程序中,为大规模分布式应用在 SSD 上运行提供优化。RocksDB 重点是提供工具支持,具体实现将交给上层应用。正是这种高度可定制化能力,使得 RocksDB 可涵盖包括工作负载等众多场景的应用,今天我们将逐一为大家介绍:"为什么需要内存管理器?为什么不使用现有的内存管理器?RocksDB 究竟是如何实现的?"

2022-09-21 16:29:30 240

原创 分布式架构下如何选择最佳 Store?

在多节点多 Store 的情况下,如何选择存储数据的 Store 尤为重要。开务数据库中通过特定算法,根据 Store 的存储容量、磁盘介质以及每个 Store 的 QPS 等综合因素,计算出最佳的 Store 以完成数据存储,我们把这个过程称之为Store 的 Rebalance。但是此过程从集群初始化就持续地进行,势必将带来一些现实问题。为此开务数据库研发了 Store 的禁用启用功能,本篇博客将为大家介绍具体的设计思路。

2022-09-19 11:21:42 59

原创 Online Schema Change(在线更新元数据)

传统的关系型数据库在执行 Schema 变更时,为了保证数据一致性需要锁表,锁表期间任何读写操作都会受到阻塞,直到 Schema 变更结束,释放表锁。这样做法使处理流程简单化,但同时弊端也很明显,那就是其他的 DML 操作都会受到阻塞,影响正常业务。开务数据库的 OSC 引进 2 个中间状态,通过控制过渡状态来保证数据一致性且不需要锁表,因而不影响正常业务。本文将带你一览开务数据库具体是如何实现的...

2022-09-08 17:49:27 89

原创 Metric模块源码解析

分布式系统的监控告警及运维服务离不开指标监控,开务作为浪潮自主研发的一款分布式数据库自然也不例外。在兼顾强一致性、高可用分布式架构、在线水平扩展、企业级安全等特性下,开务的metric模块可提供监控指标,实现预先定义指标的周期性采集。同时,可以提供兼容 Prometheus 标准格式的 API 接口,方便与外部的 Prometheus 服务进行集成。...

2022-08-30 15:50:35 125

原创 SQL优化-RBO(Rule-Based Optimization)

SQL 优化的过程可以分为逻辑优化和物理优化两个部分。逻辑优化主要是基于规则的优化,简称 RBO(Rule-Based Optimization)。物理优化会为逻辑查询计划中的算子选择某个具体的实现,需要用到一些统计信息,决定哪一种方式代价最低,所以是基于代价的优化 CBO(Cost-Based Optimization)。优化器是开务数据库中的一个核心的模块,开务数据库使用优化器来完成对 SQL 语句优化并得到最优的逻辑计划,开务数据库里的优化器分为 RBO 和 CBO 两个阶段。

2022-08-25 17:05:51 165

原创 我们有新名字啦!

很高兴在这里与大家分享我们的新名字:开务数据库。

2022-08-25 16:49:41 189

原创 混沌工程实践

混沌工程是一个工程学科,这就意味着需要做实验。通过设计并进行混沌实验,观察系统对各类故障的真实反应,以此来完善保证系统的稳定性。混沌工程是一种提高技术架构弹性能力的复杂技术手段,是一种可试验的、基于系统的方法,用于处理大规模分布式系统中的混乱问题。

2022-08-19 15:20:21 44

原创 常用时序数据压缩编码算法浅析

时序数据是指时间序列数据,是按时间顺序记录的数据列。时序数据可以是时期数,也可以时点数。从时序数据的特点来看,通用的压缩算法和按行压缩并不能很好的压缩时序数据,因此时序数据库大多都针对不同类型的数据按列采用不同压缩编码方式来减少数据存储的空间占用,提高存储空间利用率。...

2022-08-15 16:39:00 118

原创 分布式数据库跨版本升级数据迁移方案

向后兼容性对数据库至关重要,但会给代码库带来相当大的复杂性。在其他条件相同的情况下,最好将向后兼容性逻辑与分布式数据库软件系统所固有的复杂性隔离开来,尤其是诸如元数据等各种系统数据,需要一个整体的升级迁移方案来统一处理。...

2022-07-14 19:30:00 151

原创 开务分布式数据库 Tracing(二)—— 源码解析

​按照【开务数据库Tracing(一)】介绍的使用opentracing要求,本文着重介绍开务数据库Tracing模块中是如何实现Span,SpanContexts和Tracer的。​

2022-07-12 19:30:00 80

原创 一种将 Tree-LSTM 的强化学习用于连接顺序选择的方法

本篇博客讲解的是2020年由清华大学李国良教授团队发表在ICDE上的论文,介绍它所提出的算法与实验结果,并结合实际情况给出一些思考。

2022-07-07 19:45:00 391

原创 PostgreSQL 存储结构浅析

PostgreSQL 数据库是功能强大的开源数据库,越来越多的公司开始使用 PostgreSQL。存储系统是 PostgreSQL 的最底层模块,它向下通过操作系统接口访问物理数据,向上为上层模块提供存储操作的接口和函数。本文通过对 PostgreSQL 的存储结构进行浅析,帮助大家了解这一强大的关系型数据库是如何存储数据的。...

2022-06-28 19:30:00 405

原创 分布式数据库使用逻辑卷管理存储之扩容

逻辑卷是使用逻辑卷组管理 (Logic Volume Manager) 创建出来的设备,如果要了解逻辑卷,那么首先需要了解逻辑卷管理中的一些概念。

2022-06-21 19:30:00 355

原创 分布式云原生数据库中的共识流程

Raft Scheduler 在节点初始化时会一起启动,同时还会一同启动 raftTickLoop 进程用于定时产生 tick 请求。我们在后续优化云溪数据库版本的过程中将 RaftScheduler 额外划分了一部分资源用于处理 tick 请求从而降低心跳延迟,这并不影响我们理解整体的逻辑处理流程。...

2022-06-15 20:45:00 69

原创 基于分布式数据库本身的定时备份方法

云溪分布式数据库提供了一种定时备份方法。此种方法可通过数据库本身定时对数据库数据进行备份,避免数据的大规模丢失,保障数据的安全性。同时,相比于其他类似技术,该方法解决了定时备份任务强依赖于操作系统及脚本的问题,使得定时备份变得更为灵活且容易实现,更利于数据库管理人员操作使用。...

2022-06-10 19:45:00 79

原创 浪潮云溪分布式数据库协议代码解析(2)

- 数据请求阶段 -Part 1 - 简单查询1.客户端发送Query (‘Q’)消息给服务端,包含了一条字符串类型的SQL语句。func(cn *conn) query(query string, args []driver.Value)(_ *rows, err error){ ... // Check to see if we can use the "simpleQuery"interface, which is // *much* faster t...

2022-05-30 19:30:00 56

原创 分布式数据库DDL的编译与执行

DDL是数据定义语言,用于定义和管理SQL 数据库中的所有对象的语言,常用的命令有:create,drop,alter等。通常来说,浪潮云溪数据库DDL语句的流程主要分为四个部分,分别是逻辑计划生成,物理计划生成,计划执行和schemachange。本文主要介绍逻辑计划生成,物理计划生成和计划执行。- 逻辑计划生成 -逻辑计划生成主要是生成一个planNode逻辑计划节点,每一条SQL都会有自己的planNode,以create table为例,该SQL生成的planNode中包含有CREAT.

2022-05-26 15:54:18 91

原创 浪潮云溪分布式数据库协议代码解析(1)

浪潮云溪数据库支持PostgreSQL protocol 3.0,用于客户端与服务端之间的信息通信,应用于连接认证及数据请求阶段。PostgreSQL协议的消息通用格式如下图所示,包含1字节的消息类型,4字节的长度(不包括类型的长度),以及消息的内容。由于历史原因,startup消息不包含类型。连接认证阶段1. 用户使用客户端,通过云溪数据库sql命令,尝试连接服务端时,客户端会获取连接命令的参数,生成URL,具体格式如下postgres://&l...

2022-05-20 19:30:00 75

原创 分布式数据库 Tracing (一)— Opentracing

Part 1 - 为什么需要 Tracing当前微服务架构和分布式系统变得越来越流行,系统庞大且服务数量繁杂多样,甚至数据库也开始使用分布式架构。当一个生产系统面对真正的高并发,或者解耦成大量微服务时,以前很容易实现的重点任务变得困难了。开发过程中需要面临一系列问题:用户体验优化、后台真实错误原因分析,分布式系统内各组件的调用情况等。在这些问题的驱动下,Tracing 变成了分布式系统必不可少的组成部分。Part 2 - Opentracing 的产生当代分布式跟踪系统(例如,Zipkin,

2022-05-13 21:00:00 332

原创 BadgerDB 原理及分布式数据库的中应用与优化

Part 1 - BadgerDB设计架构Badger[1]是基于论文:WiscKey: Separating Keys from Values inSSD-conscious Storage[2]的思想利用Go语言进行设计实现的。LSM-Tree的优势在于将随机写转换为顺序写,将大块的内存连续地写入到磁盘,减少磁盘寻址的时间,同时数据是按照key排序,查找起来速度快,同时也带来了写、读放大。LSM-Tree的这些优化很适用HDD,但是SSD的性能却受到限制(写放大)。因...

2022-05-09 19:45:00 78

原创 解析分布式云原生数据库中Raft算法的消息类型

本文主要介绍了Raft共识算法在云溪数据库中定义的消息类型,通过上述介绍的消息类型,实现和保证了副本数据的同步。可以看出,云溪数据库中的Raft算法将共识分解成了几个关键模块,例如预选举模块、正式选举模块、探活模块、日志复制模块等。基于此,实现将分布式一致性的复杂问题划分为一系列的模块化问题,大大降低了算法复杂性。

2022-04-28 19:00:00 612

原创 io_uring技术在分布式云原生数据库中的应用

Part 1 - 背景1.1异步I/O异步I/O是计算机操作系统对输入输出的一种处理方式:发起I/O请求的线程不等待I/O操作完成,就继续执行随后的代码,I/O结果用其他方式通知发起I/O请求的程序。与异步I/O相对的是更为常见的“同步(阻塞)I/O”:发起I/O请求的线程不从正在调用的I/O操作函数返回(即被阻塞),直至I/O操作完成。同步IO机制存在着一定的弊端,例如:IO的实现都是在当前进程上下文的系统调用中完成的,会阻塞当前进程,降低系统的实时性,同时导致性能较低。对于I/.

2022-04-21 20:00:00 63

原创 分布式数据库--SQL优化之Plan Hint

Part 1- 关于HintHint是嵌入SQL语句的对优化器进行提示的信息,是DBA进行SQL优化的常用手段。SQL语句经过优化器(规则优化(RBO)、代价优化(CBO)),通常会选择正确的查询路径,但是智者千虑,必有一失,有时优化器也会选择一个很差的计划,使得该条SQL查询变得很慢,此时需要DBA人为干预(通过给SQL语句增加一个注释),告诉优化器要选择指定的访问路径(full scan、index scan)或join 类型(merge、hash、lookup),使得该条SQL语句可以高效的运行.

2022-04-18 21:00:00 2169

原创 深入浅出RedisTimeSeries-分布式数据库

Part 1 - 背景Redis作为一个灵活的高性能 key-value数据结构存储,可以用来作为数据库、缓存和消息队列。Redis 对比其他 key-value缓存产品有以下特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。 Redis支持字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等数据结构的存储。 时序数据是指一串按照时间维度索引的数据,其特点是没有严格的.

2022-04-08 21:00:00 674

原创 云原生分布式数据库云平台技术选择

Part 1 - 云平台简介浪潮云溪数据库云平台是由云溪数据库公司开发的针对特定的云溪数据库量身定做的数据库运维管理平台,其目的旨在于:提升用户对数据库部署操作的体验,为用户提供数据库原生自动部署、自动备份、自动容灾、数据恢复、监控、管理等全套解决方案。浪潮云溪数据库云平台,通过运行提供的部署脚本,能够直接完成一键式部署。同时浪潮云溪数据库云平台提供了直观便捷的可视化界面,大部分的操作只需通过鼠标点击便可以完成,方便快捷,而且每个操作的结果可以通过界面的形式直观地展现在用户面前,让用户对自己的操作有

2022-04-06 19:45:00 1418

原创 分布式数据库Snapshot快照功能实现解密

通常,我们对数据库进行误操作后,需要把数据库Rollback到之前的版本。一个常用的方法就是,使用日志来进行数据库恢复。这个方法虽然强大有效,但是花费时间等成本较高。而数据库表快照(Snapshot)功能,可以在某些时间点为数据表创建快照,保护快照时间点的数据不被修改,并可根据需要快速恢复快照点数据,从而达到高效、可靠的数据备份恢复能力。Snapshot是一个数据库或表的只读副本,它是数据库表所有数据的映射,由快照被执行的时间点来决定它的内容。由于快照是只读的,所以查询快照数据是无锁查询,会对查询速度有

2022-03-29 20:00:00 774

原创 分布式数据库--ZBConverter数据转换工具

- 基本介绍 -ZBConverter是一个可扩展、高性能的数据传输、模式转换和迁移验证的工具,支持云溪数据库、Oracle、MariaDB、MySQL、SQL Server、PostgreSQL、IBM DB2、Sybase、Informix、Teradata、Greenplum和Netezza之间数据库模式(DDL)、查询和DML语句、视图、存储过程、包、函数和触发器的转换。使用C/C++编写,使用本机低内存中批量加载器 API 来传输数据,适用于 Linux、Windows、64 位和 32 位平

2022-03-23 20:45:00 81

原创 分布式数据库--ZMP数据迁移平台

在云计算、大数据和物联网时代,数字化转型悄然在各行各业中进行。然而数据作为最基础的要素,如何进行多源异构的海量数据交换?如何保证数据的时效性和准确性?如何让海量异构数据实现云上、云下的协同?是我们长此以往关注的焦点。而ZMP数据迁移平台正致力于云间数据交换场景,支持不同数据结构,可帮助政企客户快速搭建高性能、高安全、高可靠、高稳定的数据交换平台。1.功能ZMP数据迁移平台不仅有基础的系统、用户和主题管理,也有可视化运维的服务器管理及消息监控等,更主要的是集成了消息服务、数据转换同步等中间..

2022-03-18 20:45:00 2985

原创 WAL的概念与实践分析

Part 1 - 预写式日志在计算机科学中,预写式日志[1](Write-Ahead logging,缩写WAL)是关系数据库系统中用于提供原子性和持久性(事务ACID属性中的A与D)的一系列技术。在使用WAL的系统中,所有的修改在生效之前都要先写入log文件中。log文件中通常包括redo和undo信息。假设一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了WAL,程序就可以检查log文件,并对突然掉电时计划执行的操作内.

2022-03-14 20:30:00 1414

原创 分布式数据库SQL引擎之解析器

SQL引擎是云溪数据库核心系统之一,主要包括三部分:解析器、优化器、执行器,它处理客户端传来的命令,解析器将命令解析编译成数据库能识别运行的命令,优化器将命令进行优化,优化的优劣直接影响数据库的性能,执行器最后进行执行命令。一条SQL语句的生命周期:图1 SQL执行流程从图1可以看出,一条语句在数据库中的执行过程如下:(1)数据库接收客户端传来的语句文本;(2)经过词法解析得到一组词条;(3)词条经过语法解析得到语法树(Abstract Syntax Tree,AST);

2022-03-04 20:45:00 2223

原创 副本的功能特性和使用方法

【摘要】:副本是云溪数据库分布式与高可用特性的实现基础,本文聚焦副本变更的整个流程,首先阐释副本的分类方式,并详细介绍了云溪数据库在raft算法基础上新增的各类副本的功能特性。Configure zone是控制副本数量、类型和分布的主要途径,我们将从语法、字段到特性,全面了解configure zone的使用方法。通过副本增加、删除和均衡,副本的数量、类型和分布将尽可能满足configure zone,整个数据库的性能和资源利用率也会得到提升。最后探讨云溪数据库对于数据分片的管理机制——Range分裂与

2022-02-25 16:51:45 1409

原创 浪潮云原生分布式云溪数据库--执行器概述

众所周知,执行器执行之前,需要计划的支撑。计划分为逻辑计划和物理计划。他们的关系就好比是我们要出去旅游,选择什么交通工具就相当于逻辑计划,在这一步比如选择了飞机后。选择哪家航空公司就相当于物理计划。最后,当你真正动身去旅游就相当于执行。下面给出SQL语句执行的基本构架图,从中可以清楚地看到优化器和执行器在整个流程中的执行过程。

2022-02-16 21:00:00 84

原创 Kubernetes使用云溪数据库简介

云溪数据库是单个可执行文件,可通过每个节点提供到数据库的通用网关。每个节点都是全对等的,唯一的区别是该节点管理的是哪部分数据。当遇到间歇性故障或进行滚动升级时, K8s 助力于数据库集群的快速恢复。

2022-02-11 15:30:00 61

原创 云原生数据库-浪潮云溪分布式数据库SST文件结构

LSM tree保证数据库是有序写入(memtable-skiplist),起高了写性能,但是因为其本身的分层结构,牺牲了读性能(一个key如存储在了低级别的level,从上到下每一层都要进行查找,代价极大)。所以,针对读的性能提升有了很多的优化:bloom filter (高校判读一个key是否不存在),index-filter(二分查找,消耗低内存的情况下)所以key-value数据。这一些数据库都需要存储在SST文件之中,用来进行k-v数据的有序管理。

2022-01-25 15:15:51 2138

原创 云溪云原生分布式数据库安全功能以及实现介绍

云溪数据库可以通过znbase cert命令创建CA证书和密钥,再创建由CA证书签名的节点和客户端证书。当节点之间建立联系,或者客户端与节点建立联系时,它们使用CA证书来验证彼此的身份。

2022-01-17 18:30:00 2502

原创 云原生分布式数据库事务隔离级别(下)

在前文中,我们已经介绍了事务的相关概念以及事务隔离的不同级别,本文将着重介绍快照隔离的发展。

2022-01-12 14:00:00 99

原创 云原生分布式数据库事务隔离级别(上)

云原生分布式数据库事务隔离级别(上):主要介绍事务等相关概念,以及事务隔离级别的各种不同种类。

2022-01-10 15:06:38 869

原创 云溪数据库选型ART树作为数据查找算法

云溪数据库选型ART树作为数据查找算法,包括 1. 数据查找相关定义,2. 比较树, 3. 哈希表,4. 前缀树, 5. MassTree, 6. 哈希树等具体内容。

2022-01-05 16:00:00 521

开务数据库-学习型索引在数据库中的应用实践

索引是数据库引擎的重要组成部分,在当下数据井喷式爆发的阶段,如何高效准确地在海量数据中快速检索某条或某个特定范围的数据就显得尤为关键。随着技术地不断演进,由 Google 和 MIT 推出的学习型索引新范式,极大地改变了 DBMS 索引结构的设计方式。本期我们将带领大家深入走进学术大咖们的“学习型索引”新世界。

2022-09-29

PostgreSQL 存储结构解析-浪潮开务数据库

PostgreSQL 是一款功能强大的开源数据库系统,凭借其可靠性、数据完整性、强大的功能集、可扩展性以及开源社区的奉献精神赢得了良好的声誉。PostgreSQL 旨在帮助开发人员构建应用程序,保护数据完整性并构建容错环境,提升数据管理效率。 本章内容主题为《 PostgreSQL 存储结构解析》,由开务数据库高级工程师赵钦虎老师为大家带来分享。赵老师长期专注于数据库存储引擎领域,现负责开务数据库时序存储引擎专项研发工作,在开发与管理上积累了丰富的实战经验。 存储引擎是数据库软件的核心,本章内容将通过介绍 PostgreSQL 的外存与内存管理,帮助大家了解 PostgreSQL 的存储结构,对数据库内核感兴趣的朋友千万不要错过!

2022-09-14

数字能源边缘实时计算实践-开务数据库

自2020年提出“双碳”目标以来,亟需数字技术与能源行业深度融合,真正实现能源清洁低碳转型与数字化升级。开务数据库聚焦“数字能源”领域,为用户打造数字化能源管理平台,提升综合能源和碳资产管理能力。 本期我们将围绕“数字能源”主题,由开务数据库研发工程师李刘鹏老师为大家介绍《数字能源边缘实时计算实践》。李老师长期专注于时序数据的存储与运算、实时计算等领域,目前负责数字能源边缘端研发工作,具备丰富的开发与管理经验。 传统能源行业涉及数据信息错综复杂,不仅需要采集各类设备实时运行的状态数据,同时还需围绕采集数据进行实时计算、分析及预测。本期直播将围绕边缘实时计算实践中使用的go-streams组件的技术原理、实现以及优化策略,深入解析开务数据库在边缘实时计算中的落地实践。

2022-09-01

Bloom Filter 在数据库系统的应用

Bloom Filter 在数据库系统的应用

2022-07-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除