数据库新技术那些让人眼前一亮的设计

2024-06-08 19:32

本文主要是介绍数据库新技术那些让人眼前一亮的设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库领域的热度目前逐渐从传统关系型数据库系统向分布式数据库系统转移,例如:擅长于分布式一致性、宽表分析的HBase;优势在高可用、线性扩展、海量查询的Cassandra;高度成熟的高可靠并适合于数据底座的HDFS;国内广泛应用且很成熟的全文搜索兼备海量存储的Elasticsearch;专业于工业、监测领域以时间为主线支撑超大规模吞吐与存储的influxdb;以及通过分布式事务的优势开拓关系型数据库领域的市场,并具有oltp+olap融合优势的TiDB。

要说眼前一亮的事情,我就罗列一些架构设计方面的特性,但并不一定是这些数据库的主要优势:

结合基础环境会变得更方便, 分布式文件系统中,除了我们熟知的Hadoop HDFS之外还有GlusterFS,MooseFS,这两位都有一个比较牛逼的特征,那就是结合了Unix/Linux的FUSE内核机制,有了这层机制,就可以在使用分布式文件系统的时候当成客户端挂载(Mount)的一个目录,当做本地文件来操作,这实在是太方便了,而且应用面会很广泛,例如:可以将MySQL的数据存储目录的设定放到挂载的这个目录里,那么MySQL就自带高可靠了!

优雅的共识规则更胜于元管理, 我们再谈到分布式列簇数据库Cassandra,它将kv数据在集群节点的分布设计成了一致性哈希环,但是优于普通的一致性哈希环,设计得非常优雅,本质上Cassandra并没有直接让集群节点与一致性哈希环做绑定,而是设计出了token这样虚拟的节点概念,那么如果一个节点有512个token,4个节点就有2048个token分布在环上,4个节点的token在环上都是交替排列,这样只要写入的数据记录hash(rowkey)匹配了一个token范围,那么数据就落入环的此token位置,副本依次顺时针向下一个token存放(遇到机架和数据中心会根据策略来定),落到哪个token就存在哪个节点里。这种机制不仅写入的时候分布的数据非常均匀,如果取消一个节点,512个token从犬齿交错的环上被拿掉后,会顺时针找到下一个token,而下一个token所属节点依然是均匀分布的,不会出现数据倾斜,新增一个节点同理。总之Cassandra面向去中心化的设计在一致性哈希环的设计上极为优雅,那么再多的节点伸缩也会在这种规则下平稳的运行。

完美契合业务特征那才叫专业, 最后在说说专业的时序数据库influxdb的分区组(shardgroup),这绝对是influxdb一大创新亮点。influxdb的特征在于先说清楚数据保留多久,保留这么久的数据再平均按照多久做一次切分,那么这就是保留策略(RP)和分区组(shardgroup)的作用了!假如我们把数据保留1个月,每天做一次切分,那么shardgroup就会按照每天做一次数据目录和文件的分隔,这就相当于把时序数据库的数据切成了一段一段,在查找的数据的时候,就可以根据时间范围知道在哪几段的分区文件上找。更有意思的是influxdb集群模式会有多个节点,例如4个节点2个副本策略,相当于4/2形成了双分区双副本,也就是一个shardgroup里面管理2个shard,也就是说在一个分区组的时间段内,写进来的时序数据可以再分布到两个分区,分布都手段就是hash(series)取模,这样是不是又把数据读写的压力分担在了不同的节点上了,因此influxdb集群的设计思路就是基于时间线的数据分段以及在分段中进行数据分布式存放与访问,完美契合时序的特征。

数据高可靠的新玩法, 对于高可靠的理解可以使用在很多方面,例如:Redis的哨兵模式,挂掉的Redis Master数秒后会被Redis Slave替代,这就是Redis利用哨兵的集体投票选出了新的领袖机制,这就是保障了服务运行的高可用,对于这个系统不中断的高可用场景,可以认为是运行高可靠。

但分布式文件系统对上层应用提供的高可靠主要是数据冗余,做到数据的高可靠,列如:运行MySQL的节点宕机无法启动,传统方式就希望存储工程师从OS层面的存储中恢复或者在slave备份中找。

但若是我们把MySQL的data目录部署在了MooseFS所挂载的目录,一方面实例照常运行,但数据是在DFS中保存着,另一方面MySQL实例节点故障亦或者DFS某个节点故障都不是问题,也就是说数据始终在独立的数据底座中可靠的运行着,对于运维就很方便,换一个MySQL实例就行了。那么我们可以将这种数据冗余的场景称之为数据高可靠。

MySQL master/slave岂不是更方便?很多人会这样理解,我的新的观点是:如果仅仅是为了数据备份,主从架构只能服务于MySQL!另外主服务宕机始终还要手动切换。

但是DFS提供了一种通用的备份冗余底座,为MySQL形成了数据引擎与数据存储的分离,又不仅仅服务于MySQL。关键这是上层应用建筑而非硬件底层依赖,这样就很方便的衔接在开发和运维过程之中。

守护石 「技术创作」
关注领域:大数据技术、分布式架构 | 技术管理

这篇关于数据库新技术那些让人眼前一亮的设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043103

相关文章

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1