乐趣区

关于redis:华为云PB级数据库GaussDBfor-Redis介绍第四期高斯-Geo的介绍与应用

摘要:高斯 Redis 的大规模地理位置信息存储的解决方案。

1、背景

LBS(Location Based Service,基于地位的服务)有十分宽泛的利用场景,最常见的利用就是 POI(Point of Interest)的查问,例如用户查找左近的人,左近的餐厅,左近的外卖商家等等。LBS 的实现须要数据库存储地理位置信息,开源 Redis 是一个性能强、效率高、使用方便的缓存数据库,实现了地理位置存储的性能,能够用于 LBS 的数据存储。

开源 Redis 3.2 以上版本的 Geo 性能反对了地理位置信息存储管理,然而内存限度导致没有大规模利用。GaussDB(for Redis)(下文简称 高斯 Redis)兼容开源 Redis 的 Geo 性能,应用磁盘代替内存,冲破了开源 Redis 的内存限度,能够完满解决 Geo 的大规模利用问题。

2、开源 Redis Geo 介绍

Redis 的 Geo 性能反对如下 6 个 Geo 的相干操作:

  • geoadd:增加某个地理位置的坐标。

  • geopos:获取某个地理位置的坐标。

  • geodist:获取两个地理位置的间隔。

  • geohash:获取某个地理位置的 geohash 值。

  • georadius:依据给定地理位置坐标获取指定范畴内的地理位置汇合。

  • georadiusbymember:依据给定地理位置获取指定范畴内的地理位置汇合。

Redis Geo 性能的空间索引采纳 GeoHash 原理,配合 zset 汇合存储,查问效率靠近 log(N)。

3、为什么开源 Redis Geo 没有广泛应用?

存储地理位置信息的利用十分宽泛,而开源 Redis Geo 性能也能够存储地理位置信息,并且查问效率高,为什么没有失去大规模的利用呢?

剖析存储地理位置信息的场景,都有如下特点:

  • 数据量大

大部分场景存储地理位置信息的数据量都是 TB 级以上的,开源 Redis 的数据全副寄存在内存中,节点的内存大小固定,要反对大数据量的地理位置信息存储,必须减少节点数,这会造成老本过高、大集群保护艰难等问题。

  • 数据持续增长

随着用户的增长,地理位置信息的数据也在持续增长,要求底层存储可能无损扩容。但开源 Redis 扩容须要从新划分 hash 槽进行数据迁徙,必定会影响业务。

  • 高并发读写

开源 Redis 主从模式下只有主节点可写,主节点高并发数据写入、高并发数据读出,写入速度过高容易造成主从沉积,数据失落。

除此之外,还须要思考备份复原,数据一致性,扩容,高可用等数据库系统能力。

  • 备份复原

开源 Redis 提供 RDB 和 AOF 形式备份数据,但当数据规模大时,RDB 形式复原的数据一致性和完整性较差,AOF 形式数据恢复的效率低。

  • 数据一致性

开源 Redis 的主从采纳异步复制,会呈现数据不统一的状况。

  • 高可用

开源 Redis 如果同时挂掉一对主从节点,局部数据将不可用,容错能力弱。

4、高斯 Redis 为什么适合?

高斯 Redis 基于华为自研分布式存储系统 DFV,反对 PB 级大规模的数据存储。解决了开源 Redis 高老本、存储数据量小、数据不统一等问题,具备秒扩容、超可用、强统一、低成本、主动备份、抗写能力强的劣势。

5、实用场景

高斯 Redis Geo 性能实用于数据量大、读写频繁的场景。在外卖平台、点评平台、找房平台中,餐馆的数据、外卖骑手的数据、用户的数据、房源的数据这些数据随着用户增长,数据量过亿,对应的地理位置信息的数据量可到数 TB 级别,正是高斯 Redis 实用的场景。上面介绍在不同场景中 Geo 性能的利用。

5.1 外卖场景:

(1)用户下完外卖订单后,应用 geoadd 命令退出骑手的地位。

(2)应用 geopos 命令,用户可取得骑手的具体位置。

(3)应用 georadius/ georadiusbymember 命令骑手查看左近可配送的订单。

(4)应用 geodist 命令用户可取得骑手的间隔。

5.2 点评场景:

(1)新的店铺退出点评平台,应用 geoadd 命令,增加新店铺的地位。

(2)应用 geopos 命令,用户取得店铺的具体位置。

(3)应用 geodist 命令,用户可取得与店铺的间隔。

(4)应用 georadius/ georadiusbymember,用户可查找间隔 500 米范畴的店铺。

5.3 找房场景:

(1)新的房源退出房源平台中,应用 geoadd 命令,增加新房源的地位。

(2)应用 geopos 命令,用户可取得房源的具体位置。

(3)应用 geodist 命令,用户可取得与房源的间隔。

(4)应用 georadius/ georadiusbymember 命令,用户查找左近 1km 范畴内的房源。

6、总结

开源 Redis 的 Geo 性能查问效率高,但存在存储容量小、抗写能力弱、可用性差等显著毛病,导致了其 Geo 性能始终没有广泛应用。高斯 Redis 冲破了开源 Redis 的内存限度,以高性能磁盘存储数据,具备秒扩容、超可用、强统一、低成本、主动备份、抗写能力强的特点,因而高斯 Redis 实用于大量地理位置信息存储的场景。

7、完结

本文作者:华为云高斯 Redis 团队。

杭州西安深圳简历投递:yuwenlong4@huawei.com

更多技术文章,关注高斯 Redis 官网博客:https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813

PS:值此开年洽购季之际,企业新用户购买 GaussDB (for Redis)4U16G 任意存储规格,内存可享 3 个月 3 折。另外还有多款云数据库包年低至 2.7 折,0 门槛抽千元大奖、新购满额送华为手机 P40 Pro 5G 等多重福利,链接:https://activity.huaweicloud.com/dbs_Promotion/index.html

本文分享自华为云社区《华为云 PB 级数据库 GaussDB(for Redis)揭秘第四期:高斯 Redis Geo 的介绍与利用》,原文作者:高斯 Redis 官网博客。

点击关注,第一工夫理解华为云陈腐技术~

退出移动版