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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
简介: 数据库新技术那些让人眼前一亮的设计

数据库领域的热度目前逐渐从传统关系型数据库系统向分布式数据库系统转移,例如:擅长于分布式一致性、宽表分析的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。关键这是上层应用建筑而非硬件底层依赖,这样就很方便的衔接在开发和运维过程之中。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
SQL 算法 关系型数据库
(二十)MySQL特性篇:2022年的我们,必须要懂的那些数据库新技术!
 MySQL数据库从1995年诞生至今,已经过去了二十多个年头了,到2022.04.26日为止,MySQL8.0.29正式发行了GA版本,在此之前版本也发生了多次迭代,发行了大大小小N多个版本,其中每个版本中都有各自的新特性,所有版本的特性加起来,用一本书的篇幅也无法完全阐述清楚,因此本章主要会挑重点特性来讲,具体各版本的特性可参考MySQL官网的开发手册。
199 1
|
7月前
|
机器学习/深度学习 搜索推荐 数据库
矢量数据库的未来发展趋势:新技术与应用展望
【4月更文挑战第30天】随着AI和机器学习的发展,矢量数据库在处理非结构化数据方面的重要性日益增强。预测到2028年,全球矢量数据库市场将从2023年的15亿美元增长至43亿美元。未来趋势包括:并行计算与分布式架构提升处理能力,硬件加速技术(如TPU和昇腾芯片)提高性能,自适应索引机制优化查询效率。应用领域将拓展至NLP、图像视频分析和推荐系统,为各行业带来更多创新和价值。
|
存储 Cloud Native Oracle
李飞飞:新技术变革时代的数据库产业
近日,阿里云智能数据库事业部负责人李飞飞在媒体沟通会上发表了“新技术变革时代的数据库产业”主题演讲。
214 0
李飞飞:新技术变革时代的数据库产业
|
存储 Cloud Native Oracle
|
5天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
19 3
|
5天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
23 3
|
5天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
29 2
|
18天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
130 15
|
12天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。