选择KV数据库最重要的是什么

选择,kv,数据库,重要,什么 · 浏览次数 : 286

小编点评

**选择KV数据库最重要的是什么?** **1. 数据库稳定可靠** * 自建开源Redis有丢数据和数据不一致的风险广告竞价和推荐等大数据业务将海量数据存放在KV数据库,开源Redis是将全量数据存在内存中,虽然有RDB和AOF的备份机制,但那只是普通的文本文件,可靠性很低,只能作为兜底手段,关键数据该丢还是会丢。 * 开源Redis主备节点采用异步复制的机制,故障倒换的时候有可能出现明显的数据不一致,像是分布式锁这类场景就会很尴尬。 **2. 性能、兼容性和扩容** * 云厂商的KV数据库由于进行了技术创新与优化,一般比较给力,以GaussDB(for Redis)为例,支持3AZ部署和N-1故障的超高可用。 * 企业级特性3:双活解决方案支持极致稳定可靠,灵活组网,稳定性和可靠性远超开源Redis,是一款真正能让企业核心业务放心上云的KV数据库。 **3. 数据安全** * 企业级特性1:采用内存+NVMe的存储方案,全量数据三副本持久化存储GaussDB(for Redis)在存储池中有三副本落盘到NVMe存储池中,宕机不会丢数据,也不会存在主从同步的问题。

正文

本文分享自华为云社区《选择KV数据库最重要的是什么?》,作者:GaussDB 数据库 。

经常有客户提到KV数据库,但却偏偏“不要Redis”。比如有个做安全威胁分析平台的客户,他们明确表示自己对可靠性要求非常高,需要的不是开源Redis这种内存缓存库,而是KV数据库。

虽然最后我也没问清楚他们业务存啥(推测是这块业务数据比较机密),但确实业务本身对可靠性要求非常高,开源Redis自身的可靠性无法满足他们的要求,最终该用户选择使用GaussDB(for Redis)数据库,当前数据量已经是2TB规模,一直稳定运行中。

真正的KV数据库,业界有好几项开源的项目,云厂商也纷纷推出自家产品,比如华为云GaussDB(for Redis)。使用方在调研选型KV数据库的时候,由于要存储百GB甚至数十TB级的重要数据,首先关注的是数据库是否稳定可靠,同时懂行的客户一般也会聊到自建开源Redis的“不靠谱”问题,例如:

问题1:自建开源Redis有丢数据和数据不一致的风险

广告竞价和推荐等大数据业务将海量数据存放在KV数据库,开源Redis是将全量数据存在内存中,虽然有RDB和AOF的备份机制,但那只是普通的文本文件,可靠性很低,只能作为兜底手段,关键数据该丢还是会丢。

另外,开源Redis主备节点采用异步复制的机制,故障倒换的时候有可能出现明显的数据不一致,像是分布式锁这类场景就会很尴尬:

图片

问题2:“Cache+DB”的业务架构复杂

电商和游戏等互联网业务采用Redis缓存+持久化数据库的架构,通过缓存加速来提升业务的使用体验,业务需要设计缓存的淘汰机制,还需要解决缓存与持久化数据库之间的数据一致性问题,业务架构复杂。

问题3:开源Redis分片故障不能提供服务,故障场景对业务影响比较大

金融、财经和电商等业务对可靠性要求极高,开源Redis单个数据分片存放在主备两个节点上,如果两个节点都出现故障,则整个分片的数据不可访问,应对极端故障场景的能力不足。

社区开源的项目一般都引入了RocksDB存储引擎(这东西深的很),其实能把上层KV业务变得稳定许多,通过持久化存储介质替代内存的方式来弥补开源Redis的不足。但它们无法完美解决性能、兼容性和扩容的问题,更无法保证数据库的稳定可靠,还需要投入专门的人力进行搭建维护、调优等……最终综合算下来,成本并不低。

云厂商的KV数据库由于进行了技术创新与优化,一般比较给力,以GaussDB(for Redis)为例,下面从以下几个角度解释如何把一款产品做到“靠谱”:

企业级特性1:采用内存+NVMe的存储方案,全量数据三副本持久化存储

GaussDB(for Redis)在存储池中有三副本落盘到NVMe存储池中,宕机不会丢数据,也不会存在主从同步的问题。因此,客户可以直接拿GaussDB(for Redis)当做持久化数据库使用,一库顶多库,业务架构变得简单,也减轻了多套数据库的运维成本。

图片

企业级特性2:采用存算分离的架构,支持3AZ部署和N-1故障的超高可用

GaussDB(for Redis)支持3AZ部署计算节点,均匀分布在3个不同的可用区,如果遇到1个或2个可用区出现网络、制冷、电力等突发故障,剩余可用区的节点能接管故障节点的数据分片,还能继续支撑业务访问全量数据。

同样得益于存算分离的架构,GaussDB(for Redis)将全量数据落盘到分布式存储池,最多支撑N-1故障,哪怕只剩下一个节点正常,也能通过接管所有分片,继续支撑业务运行。

图片

 企业级特性3:双活解决方案支持极致稳定可靠,灵活组网

如果遇到大规模网络故障、电力故障、火灾或自然灾害,导致整个数据库实例不可用,甚至整个Region都不可用,GaussDB(for Redis)也在这些极端场景下保证业务的连续性。

GaussDB(for Redis)支持给两个跨region的实例建立双活关系,支持数据的同步,如果其中一个实例故障,另一个实例能接管业务,持续提供可靠的数据库服务。双活解决方案已在华为内部ERP中稳定部署运行,为ERP业务的持续运行提供强有力的保障。

图片

总结

综上所述,GaussDB(for Redis)提供了全量数据三副本持久化存储,支持3AZ部署和N-1故障的超高可用,双活解决方案支持极致稳定可靠,灵活组网,稳定性和可靠性远超开源Redis,是一款真正能让企业核心业务放心上云的KV数据库。

所以,如果你的业务需要一款稳定可靠的KV数据库,可以试试GaussDB(for Redis)。

点击关注,第一时间了解华为云新鲜技术~

与选择KV数据库最重要的是什么相似的内容:

选择KV数据库最重要的是什么

本文分享自华为云社区《选择KV数据库最重要的是什么?》,作者:GaussDB 数据库 。 经常有客户提到KV数据库,但却偏偏“不要Redis”。比如有个做安全威胁分析平台的客户,他们明确表示自己对可靠性要求非常高,需要的不是开源Redis这种内存缓存库,而是KV数据库。 虽然最后我也没问清楚他们业务

即时通讯系统为什么选择GaussDB(for Redis)?

摘要:如果你需要一款稳定可靠的高性能企业级KV数据库,不妨试试GaussDB(for Redis)。 每当网络上爆出热点新闻,混迹于各个社交媒体的小伙伴们全都开启了讨论模式。一条消息的产生是如何在群聊中传递的呢?让我们一起来探索即时通讯系统(IM)的原理。 IM系统架构的原理 当你在群聊“相亲相爱一

选择排序(简单版)(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def select_sort_simple(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.

选择排序(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def select_sort(li): for i in range(len(li)-1): # i是第几趟 min_loc = i for j in range(i+1, le

[转帖]选择mirrorlist 与 baseurl之间的区别

https://www.cnblogs.com/zhoading/p/17108133.html 发现还有一个问题,CentOS-Base.repo 下的mirrorlist 与baseurl mirrorlist指向的就是一堆baseurl(Specifies a URL to a file co

C#选择排序算法

选择排序原理介绍 选择排序(Selection Sort)是一种简单的排序算法,其实现原理如下: 遍历待排序数组,从第一个元素开始。 假设当前遍历的元素为最小值,将其索引保存为最小值索引(minIndex)。 在剩余的未排序部分中,找到比当前最小值还要小的元素,并更新最小值索引。 在遍历结束后,将找

5.14 汇编语言:仿写Switch选择结构

选择结构,也称为switch语句,是计算机编程中的一种控制结构,用于根据表达式的值选择不同的执行路径。它允许程序根据表达式的值来决定执行哪个代码块,从而实现多分支选择逻辑。switch语句由一个表达式、多个case标签以及对应的代码块组成。程序会将表达式的值与每个case标签进行匹配,一旦找到匹配的case标签,程序将执行对应的代码块,并继续执行该代码块之后的代码,直到遇到break语句或者swi

2.如何选择go语言基础类型——Leetcode习题9

[TOC] # 本篇前瞻 欢迎来go语言的基础篇,这里会帮你梳理一下go语言的基本类型,注意本篇有参考[go圣经](https://gopl-zh.github.io/),如果你有完整学习的需求可以看一下。另外,go语言的基本类型比较简单,介绍过程就比较粗暴,不过我们需要先从一个例题开始。 # Le

[转帖]如何选择RabbitMQ的消息保存方式?

https://www.cnblogs.com/zhengchunyuan/p/10179677.html RabbitMQ对于queue中的message的保存方式有两种方式:disc和ram。如果采用disc,则需要对exchange/queue/delivery mode都要设置成durabl

我为什么选择Wiki.js记笔记?

很长一段时间里,我都被困扰着,感觉陷入了笔记的泥潭,而积累的如此多的笔记也没有形成我自己的知识体系。 之前的记笔记方式 笔记的来源 微信公众号 技术博客 纸质书籍 官网文档 PDF 自己的零散想法 网页 之前的笔记软件 有好几个: 为知笔记 浏览器书签 MarkDown 文档 Calibre 电子书