网站开发开票税率,cent7.4安装wordpress,网页设计流程是什么,北京瑞浩信息管理咨询有限公司一、方案背景
对于一套GEO管理系统#xff0c;其核心点与瓶颈在于数据库的存储性能与查询能力#xff1b;一方面#xff0c;存储服务需要应对海量数据的低延迟存、读#xff0c;另一方面#xff0c;存储服务也要提供高效的GEO多维度数据检索。表格存储#xff08;TableS…一、方案背景
对于一套GEO管理系统其核心点与瓶颈在于数据库的存储性能与查询能力一方面存储服务需要应对海量数据的低延迟存、读另一方面存储服务也要提供高效的GEO多维度数据检索。表格存储TableStore作为一款Serverless分布式NoSQL数据库完全具备该系统的需求。 下面我们将基于TableStore打造一个【亿量级GEO管理系统】
需求场景
某店铺搜索平台提供了亿量级的店铺信息。用户通过平台提供的PC端、移动端网页按照自己的需求维度组合搜索用户心仪的店铺。平台需要在地图上展示店铺的具体位置、店铺详细信息、店铺主页的跳转 维度一【距离1km内】【人均100以内】【评分最高】【奶茶店】 维度二【杭州市内】【评分最高的】【沈家*】店铺 ...... 实现快速、多维GEO查询功能是GEO管理解决方案的核心功能样例如下注该样例提供了【亿量级】店铺数据。 基于表格存储搭建的店铺搜索系统页面一览样例内嵌在表格存储控制台中用户可登录控制台体验系统若为表格存储的新用户需要点击开通服务后体验开通免费订单数据存储在公共实例中体验不消耗用户存储、流量、Cu。
表格存储TableStore方案
使用表格存储TableStore研发的多元索引SearchIndex方案可以轻松搭建一套亿量级店铺搜索系统。多元索引功能可以创建GEO索引、分词字符串索引等为用户提供了GEO检索、多维组合检索等能力用户可随时创建存量、增量数据自动同步。 TableStore作为阿里云提供的一款全托管、零运维的分布式NoSql型数据存储服务具有【海量数据存储】、【热点数据自动分片】、【海量数据多维检索】等功能有效的地解决了GEO数据量大膨胀这一挑战 用户可以仅在需要的时候创建、开通索引。由TableStore来保证数据同步的一致性这极大的降低了用户的方案设计、服务运维、代码开发等工作量。
二、搭建准备
若您对于基于TableStore实现的【亿量级店铺搜索系统】体验不错并希望开始自己系统的搭建之旅只需按照如下步骤便可以着手搭建了
1、开通表格存储
通过控制台开通表格存储服务表格存储即开即用后付费采用按量付费方式已为用户提供足够功能测试的免费额度。
2、创建实例
通过控制台创建表格存储实例选择支持多元索引的Region。当前阶段SearchIndex功能尚未商业化暂时开放北京上海杭州和深圳四地其余地区将逐渐开放 创建实例后提交工单申请多元索引功能邀测现多元索引功能已商业化无需申请。 3、SDK下载
使用具有多元索引SearchIndex的SDK官网地址暂时java、go、node.js三种SDK增加了新功能
java-SDK
dependencygroupIdcom.aliyun.openservices/groupIdartifactIdtablestore/artifactIdversion4.8.0/version
/dependency
go-SDK
$ go get github.com/aliyun/aliyun-tablestore-go-sdk
Nodejs-SDK
$ npm install tablestore4.1.0
4、表设计
店铺检索系统样例仅简易使用一张店铺表主要包含字段店铺类型、店铺名称、店铺地理位置、店铺平均评分、人均消费消等。表设计如下 表名geo_positon
列名数据类型索引类型字段说明_id(主键列)String MD5(pId)避免热点pIdStirng 店铺编号typeStringKEYWORD类型nameStringTEXT店铺名TEXT类型索引可模糊查询但不能排序posStringGEO_POINT店铺位置30.132,120.082(纬度,精度)pointdoubleDOUBLE评分............
三、开始搭建核心代码
1、创建数据表
用户仅需在完成邀测的实例下创建“店铺信息表”通过控制台创建、管理数据表用户也可以通过SDK直接创建 2、创建数据表索引
TableStore自动做全量、增量的索引数据同步用户可以通过控制台创建索引、管理索引也可以通过SDK创建索引 3、数据导入
插入测试数据控制台样例中插入了1亿条数据用户自己可以插入少量测试数据 店铺编号店铺md5主键类型店铺名称店铺位置店铺评分人均消费 o00570221920000000f470ef0f548b925ceffe1a7e3杭帮菜韩村杭帮菜36.76613,111.414612.8763.67
4、数据读取
数据读取分为两类
主键读取
基于原生表格存储的主键列获取getRow, getRange, batchGetRow等。主键读取用于索引自动反查用户也可以提供主键订单md5的单条查询的页面亿量级下查询速度极快。单主键查询方式不支持多维度检索
索引读取店铺查询
基于新SearchIndex功能Querysearch接口。用户可以自由设计索引字段的多维度条件组合查询。通过设置选择不同的查询参数构建不同的查询条件、不同排序方式目前支持精确查询、范围查询、前缀查询、匹配查询、通配符查询、短语匹配查询、分词字符串查询并通过布尔与、或组合。 如【36.76613,111.41461周边1km米范围内的奶茶店】查询条件如下
ListQuery mustQueries new ArrayListQuery();TermQuery termQuery new TermQuery();
termQuery.setFieldName(type);
termQuery.setTerm(ColumnValue.fromString(奶茶));
mustQueries.add(termQuery);GeoDistanceQuery geoDistanceQuery new GeoDistanceQuery();
geoDistanceQuery.setFieldName(pos);
geoDistanceQuery.setCenterPoint(36.76613,111.41461);
geoDistanceQuery.setDistanceInMeter(1000);
mustQueries.add(geoDistanceQuery);BoolQuery boolQuery new BoolQuery();
boolQuery.setMustQueries(mustQueries);
原文链接 本文为云栖社区原创内容未经允许不得转载。