一文读懂内存数据库

共 10592字,需浏览 22分钟

 ·

2020-12-25 17:22


潜力巨大


“全球内存数据库市场,

将以19.65%的复合年增长率

不断迅速发展。”

分析机构

Verified Market Research

对内存数据库市场的发展

报以极大的肯定。

#看起来很不错#


事实上,随着云计算、互联网技术的蓬勃发展,用户场景变得越来越复杂,数据增长越发明显,带来了海量数据访问处理的新挑战。然而,传统数据库的管理处理能力,已经不能完全胜任新时期的企业发展,也难以应对新数据时代下的新挑战。

备受业界关注的Key-Value非关系数据库映入大家眼帘,NoSQL因其高可扩展性、高性能、弹性等优势,成为新数据时代的“弄潮儿”



01
Redis虽然好
但阿里云为何还力推Tair


全球云观察分析指出,Key-Value数据库按照键值对的形式进行组织、索引和存储,因而带来了内存数据库在具体应用中新的提升。在实际落地的用户案例中,Key-Value存储表现虽好,可以非常有效地减少读写磁盘的次数,带来了比SQL数据库存储更好的读写性能,但也有一定限制,比如适合不涉及过多数据关系业务关系的业务数据。 


Key-Value数据库大家可能了解还是比较多,比如:


Aerospike
LevelDB
Scalaris
Project Voldemort
HyperDex
Berkeley DB
Apache Accumulo
Apache Cassandra
Redis
MongoDB
Memcached


其中,在近年来,Redis的表现尤为突出。这是为什么呢?

没有比较就没有鉴别。那么,我们拿Memcached与Redis做一个简单的对比分析。作为一个高性能的key-value存储系统,Redis和Memcached有点类似,为了保证数据读写效率,在内存中实现了数据的缓存。

但是,Redis实现了更好的功能:

一方面针对更新的数据,周期性地写入磁盘,并且在记录文件中,追加写入修改操作日志;

另一方面,与此同时,还进一步实现了master-slave主从同步功能,带来主从服务器更高的读写效率。此外,在部分场景中,Redis对关系数据库起到很好的补充作用。

Memcached仅仅支持DataTable或者HashTable简单数据类型,Redis支持String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)多种数据类型,实现丰富的数据操作。

为了方便大家使用,Redis为用户提供了Python、Ruby、Erlang、PHP客户端。

这么优秀的Redis,业界传说由一位出生在西西里岛的意大利人antirez发明。回顾一下Redis的前世今生,你不难有一些新的发现。

作为系统管理员,在2004到2006年期间,antirez主要从事嵌入式工作。后来接触到web,2007年与友人共同创立网站LLOOGG,为了解决网站的负载问题,在2009年开发了Redis内存数据库。

从2009年诞生至今,Redis已经发展迭代了多个版本,最新的一个主要版本为Redis 6.0.1,于2020年5月2日正式发布。如 Redis发明者antirez所言,这个版本有三最,即迄今为止最能体现企业化、有史以来改动最大、参与开发人数最多。

发展了十年有余,实属不易。作为开源的内存数据库杰出代表,目前Redis成为了全球最主流的Key-Value数据库产品,应对高并发、大流量、低延迟业务场景,备受业界器重,其高速缓存应用方面表现出来了性能优势。

Redis虽好,然而开源Redis作为云内存数据库,却有着比较大的局限性。对此,阿里云智能数据库产品事业部高级产品专家黄鹏程分析指出:

其一,在Redis Class下构建大容量服务,成本问题已经出现。在分片数较少,单个分片较大情况下,调用Fork同步操作带来服务不稳,同时持久化带来服务恢复缓慢,虽然采用主多从的形式来保证服务的可用性,但在多实例下,其管理成本和内部通信成本的开销增大。

其二,Redis本身持久化数据的能力有限,最新版本推出了RDB和AOF两种模式来提升持久化能力。然而在实际应用中,Everysecond每秒持久化的形式十分不利于实际应用,特别是将Redis已经作为最终存储数据的数据库在应用,一旦出现问题,将波及大量的整体数据。“在一个如10万TPS高吞吐的场景下,一秒的数据丢失可能就意味着数万条数据记录的丢失。”对数据可靠性要求很高的用户来说,这是最大的问题。此外Redis缓存+主存储方式来提升持久化,也带来数据一致性、主从数据库开销等系列问题。

从实际情况出发进一步分析来看,Redis应对客户业务快速发展变化上问题颇多。在大容量Redis启动时,加载持久化文件会耗时很久,缓存无法做到快速恢复。开源版Redis无法同时拥有服务全程高性能和数据持久化。开源Redis的数据读写均发生在内存,随着数据规模增大,内存资源占用会随之递增,而每台服务器可使用内存又是一个较小的有限值,因此服务器数量也随着被迫快速上升,整体服务成本会大幅度攀升。

此外,当业务进入发展后期,数据量渐成规模,数据访问频度会减少,对于开源Redis现有应用架构和逻辑而言,很难降低数据存储的成本。 

想要满足用户更多的业务场景,以及更优化的服务成本要求,必然需要解决开源Redis本身带来的弊端。阿里云为什么还要推Tair?答案就在此。



02

青出于蓝而胜于蓝
十二年认真锤炼Tair


Tair的诞生不是一朝一夕,而是历经了十二年的应用锤炼。

实际上,阿里云推出的云原生内存数据库Tair,源自阿里巴巴集团重点打造的自研Key-Value数据库,这是一个完全兼容Redis协议的内存数据库。


2004年,淘宝开始应用缓存技术。最先投入应用的是基于前端页面的缓存技术,采用ESI来标识可以加速和不能加速的网页内容片段,有效减少了从服务端抓取整个页面的次数。

随着淘宝网的流量快速增长,数据库的压力与日俱增,基于后端系统的缓存技术应运而生。从服务淘宝详情和验证码等业务的持久化系统TBStore,到初始服务于淘宝用户中心的TDBM等,后端系统缓存技术经历了多个系统与阶段的演变,以及经验的积累。到2009年,这些系统、技术经验经过进一步的研发创新,融合成了Tair。

2009年4月,作为一款真正的企业级云内存数据库产品,Tair正式诞生。随即应用在淘宝核心业务系统,随后逐渐进入阿里其他核心业务系统。Tair最早的设计思路源自Redis,很多功能设计也参考了Redis。与此同时,为了方便用户应用需求,Tair也完全兼容Redis的数据结构和接口API,原来采用Redis的应用可以无缝迁移到Tair。

2015年3月,Tair正式推出阿里云的云数据库Redis产品。阿里云 Redis 从 2015 年商用以来,一直是全球领先的云内存数据库产品,拥有Redis和Tair两个主要产品,其背后的研发团队拥有众多顶级Redis社区Committer,并在Redis全球核心团队(共五人)中拥有一名核心成员,在Redis技术发展中持续为社区做出贡献。

2017年11月,Tair热点散列经过双十一的考验,解决了业内缓存热点难题。

2018年,Tair正式开始投入Intel AEP的研究和使用落地。并成功应用于当年双11的电商商品核心集群中,大幅降低了成本,成为中国首个在生产环境正式部署应用Intel AEP的产品。不过,当时的Tair软件层并没有在AEP上做相关数据持久化和恢复的特性,仅作为缓存使用。

2019年4月,阿里云的云数据库Redis产品在Redis开源社区贡献排名第三。

2020年9月,Tair正式推出持久存储系统形态,加速进入多存储引擎时代。随着云上环境的成熟,Tair基于AEP,全新研发了数据持久落地的自研引擎,并融入神龙裸金属服务器和云原生数据库管理系统的技术优势。整体能力上,获得了近似内存的性能,90%的吞吐能力,而成本降低了30%。同时,从内存的易失性到AEP的持久能力,Tair自研引擎的每个操作都能持久化,大幅降低数据丢失的风险。


2020年10月28日,阿里云正式发布云原生内存数据库Tair企业级Redis服务,该系列包含两种产品形态:持久内存型和容量存储型。这是Tair系列继性能增强型和混合存储型后又一力作。

经过多年持续不断的打磨、完善和改进,如今已经演进到Tair 3.0。Tair全新定位企业级云原生内存数据库,全面覆盖客户不同业务阶段对于Redis性能、功能与成本的更高要求。

Tair兼容原生Redis的数据结构和接口,并具备更大容量规格、fork抖动更低且命令级数据持久化的能力。同时打破了传统Redis中的数据只能在易失性存储上进行读写的模式,Tair针对客户不同业务阶段的数据存储要求与服务成本考量,全新实现了持久性更强、成本更低的内存数据库。


特别是在安全风控的应用场景下,像淘宝、天猫、饿了么等用户对于在线风控要求实时性非常高,一旦发现异常用户行为习惯或异常账号情况,需要在线实时发现并处理。因而需要将Tair企业级能力和云原生能力、低成本与弹性能力充分结合,为应用提供风控实时在线的处理能力。此外,Tair具备全球分布式能力,数据在任何一个节点写入了后,在其它可用区AZ可以实时读取,这对实现风控实时异常监测带来非常好的帮助,并且在发生区域故障或者异常时Tair提供切换和恢复能力。

此外,通过Tair云原生内存数据库的能力,以及多模型计算能力的支撑,比如阿里云图数据库GDB支持属性图模型,而Tair GDB更利于快速发现数据关系,对风控带来显而易见的帮助作用。

以内存存储和计算为基础,集事务和分析处理于一体,TairGDB、TairCPC等数据模型将实时计算等能力下沉到内存数据库中,在Tair中实现了多种工作负载,将用户场景真正在线化、实时化。

全球云观察分析指出,Tair经过十二年锤炼,不仅解决了数据可靠性与各场景中广泛使用Redis之间的矛盾,同时针对服务高性能与数据可靠性之间的矛盾也得以搞定。更值得一提的是,Tair实现了更经济的成本,来匹配用户业务不同阶段的服务访问热度。

在成交额破3723亿元的2020年天猫“双十一”活动中,订单创建峰值高达58.3万笔/秒,云原生内存数据库Tair作为“双十一”关键性的技术支撑,应对订单高峰时的流量压力,实现在线访问加速能力,承受住了最高每秒15亿次的调用风暴。

在复杂的应用场景下,Tair持续不断地进行技术创新,适用于热点场景的Tair热点散列创新解决方案让互联网应用类似于电商、社交等频繁出现热点的场景极大降低了应用的开发成本,而且为应用节省了至少2/3为热点场景预留的资源。

在商品信息等海量热数据存储的场景,Tair引入使用密度更高、成本更低的持久内存,使集群整体TCO下降60%的同时,吞吐和延迟能够满足场景需求。

据悉,南瓜电影、CC视频等用户,使用阿里云内存数据库Tair的企业级功能,实现了数据多地域同步,给终端用户带去了更极致的体验。

Tair应战多次“双十一”大考,历经优酷春晚、菜鸟、高德、南瓜电影、CC视频等业务场景不同规模的应用锤炼,相对于开源Redis而言,可谓青出于蓝而胜于蓝。



03


让数据实时在线
Tair正在撬动一个新时代


当然,作为新一代内存数据库的代表,Tair已经超过了Redis,实现了从缓存到一个真正内存数据库的角色转变,越来越多核心应用除了使用Tair的缓存模式之外,也使用Tair作为数据的持久化存储方案。

“云原生、持久化、融合计算,这三大元素的加持,让内存数据库的发展正式进入一个新阶段。”2020年12月13日,阿里云数据库负责人李飞飞在云内存数据库峰会上表示,让数据实时在线,阿里云的Tair正在引领潮流,加速云原生内存数据库时代到来。


进一步分析来看,阿里云Redis团队在自研内存数据库系列Tair中,也是基于当前用户具体应用需求来创新。毕竟在不同应用场景中,数据访问速度、数据容量都会不同。针对不同数据温度场景,从访问延时、持久化需求、整体成本这三个核心维度考量,基于DRAM、NVM、ESSD三种存储介质,推出了三种不同Tair形态,来满足用户不同场景的具体需求。除了最新推出的持久内存型和容量存储型,Tair还有之前大家比较熟悉的性能增强型。


作为Tair持久存储系列的两种产品形态,持久内存型和容量存储型的工作原理相同,都是将数据放置在非易失性存储介质上。在数据库启动时无需进行数据加载,应用直接访问相关数据。在写入数据时也能保证命令级的数据可靠性,写入一条数据即持久化存入非易失性介质。同时也消除了fork带来的服务抖动,而对业务应用则保持Redis的通信协议和数据结构与API,对于熟悉原生Redis的用户可以轻松上手。


在硬件选择上,持久内存型采用了Intel 傲腾持久内存(AEP),容量存储型采用了阿里云ESSD云盘。

英特尔傲腾(AEP)持久内存架构的特点突出,在DRAM内存和块存储之间,加入大容量持久内存层,数据不会丢失,同时以高性价比提供出色性能。Tair持久内存型采用Intel 傲腾(AEP)持久内存技术后,兼容绝大部分Redis数据结构和命令,借助AEP的App Direct模式,实现了高性能下的命令级持久化能力。在价格上,Tair持久内存型相当于阿里云社区版Redis价格的70%左右,适用于要求高吞吐、低延迟同时对数据可靠性要求高的热数据存取场景。

然而,对于温冷数据存取场景,用户要求更高的数据持久化,以及更高的存储密度,数据访问频率也相对较低。基于阿里云ESSD云盘技术,推出的Tair容量存储型,兼容Redis核心数据结构与命令,满足用户超大容量、平均性能有所妥协的温冷数据存取服务。

在基准性能测试中,其基础数据类型读性能中位数约为开源Redis的70%,写性能中位数约为开源内存版的55%,而服务拥有成本最低可降低至阿里云Redis社区版的15%左右。

值得一提的是,在刚结束历时4个月的数据库性能大赛上,Tair提炼双十一热点场景挑战和在持久内存上的最佳实践,携手众多业内同行,共同推动持久内存型数据库的应用和发展。

不过,无论是哪类场景,Tair都支持在线访问,承担着超大流量,作为流量的承接地,对于流量的穿透、击穿和防止本身系统雪崩上做了非常深入的工作。

目前来看,从高访问强度,到高存储密度,Tair的产品系列已经覆盖了全线企业级Redis服务。

在总结Tair整体优势上,阿里云数据库负责人李飞飞归纳为三个方面:

优势一,支持大规格单实例,价格更亲民。单进程可以最大支持到256G,实现集群规模高达64T以上。

优势二,提供命令级的持久化,架构更简化。操作写入即持久存入的过程,远胜开源Redis秒级持久化的能力。并且可以将原来“缓存加主存”双重数据存储架构,实现合二为一。

优势三,高性能无抖动,稳定更可靠。用过开源Redis的朋友应该都深有体会,其性能抖动令大家感到困扰。


特别值得关注的是在数据安全方面,针对当前用户面临各样的数据丢失、业务逻辑错误带来的商业风险,传统的定时或手动备份不足以完美应对。Tair不仅有全量的备份和恢复能力,并且在Tair性能增强版本中提供了数据闪回的功能,帮助用户在其指定时间点上,精准恢复指定实例数据,在数据安全上为用户实现最高级别的保驾护航。

全球云观察分析指出,对于数据安全方面的更多考虑,彰显出了阿里云在云数据库领域的全局思维。当然,对于阿里云而言,在数据库领域的耕耘与布局也非常全面。


作为国内最早推出云数据库的厂商之一,阿里云已经形成了完整布局。包括了:关系型数据库、NoSQL数据库、数据仓库、数据库生态工具和云数据库专属集群五大产品板块。

在NoSQL数据库布局上,一方面,阿里云云数据库Redis会将Redis作为用户上云快速接入、体验原汁原味开源Redis的云上服务。另一方面,重点打造自研产品Tair,作为“存算一体化”的企业级云原生内存数据库,全面覆盖客户不同业务阶段对于Redis性能、功能与成本的更高要求。

很显然,云计算与大数据的发展势不可挡,云原生内存数据库必然迎来了新的发展机会,在很大程度上将改变原有“应用+缓存+持久存储”的架构模型,通过采用Tair持久内存型方案,进一步简化架构降低TCO,Tair也将引领“应用+内存数据库”的新趋势。

未来,Tair会持续在成本、弹性、计算、企业级方面进一步优化,通过池化的内存存储来提供多种计算模型和计算能力的支撑,实现存储计算在内存层面真正的一体化。

2020年11月份Gartner公布的2020年度全球数据库魔力象限评估中,阿里云首次挺进全球数据库第一阵营——领导者象限,这也是中国数据库40年来首次进入全球顶级数据库行列,标志着国产数据库正式进入一线行列。

根据IDC的数据,在公有云市场阿里云在云数据库赛道上营收已经位居全球第三,而就整个数据库市场而言,在中国市场份额阿里云位居榜首。

毋庸置疑,云原生数据库已经成为行业发展趋势。Gartner在去年发布的名为《The Future of the Database Management System (DBMS) Market Is Cloud》的报告中就明确提出,传统的自己部署数据库的方式已经过时。

云是未来,所有组织,无论大小,都将越来越多地使用云数据库。为此,阿里云在云数据库产品方面的进一步丰富,正是顺应了这一趋势。就此,在企业级云原生内存数据库的发展上,Tair将持续强化云原生、软硬件技术结合、数据存储和计算一体化等核心能力,让云原生内存数据库真正走到大家身边,不断满足用户数字化转型过程中的业务发展需要,并贡献出更大的创新力量。 
(by Aming) 

- END-


  ?
欢迎文末留言评论
欢迎新闻投稿
欢迎各种爆料
Aming全天候在线
全球云观察为你开启新视野

点分享

点点赞

点在看


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报