- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
本文分享自华为云社区《 选择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数据库最重要的是什么的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!