[Spring cloud 一步步实现广告系统] 12. 广告索引介绍
索引设计介绍
在我们广告系统中,为了我们能更快的拿到我们想要的广告数据,我们需要对广告数据添加类似于数据库index一样的索引结构,分两大类:正向索引和倒排索引。
正向索引
通过唯一键/主键生成与对象的映射关系。
比如,我们从数据库中查询数据的时候,根据数据主键ID查询当前记录,其实就是一个正向索引的过程。
根据这个描述,很明显,我们的正向索引适用于推广计划,推广单元 和 创意这几张表的数据上,因为广告检索的请求信息,不可能是请求具体的计划或推广单元,它的检索请求一定是限制条件。
倒排索引
也叫
反向索引,是一种检索方法。它的设计是为了存储在全文检索下某个单词在一个文档货一组文档中存储位置的映射,是在文件检索系统中最常用的数据结构。也就是我们提供具体的内容实例,根据内容来查询该内容所处的位置。
- 如何在广告系统中使用倒排索引? - 核心用途是对各个维度 限制的 - 整理。 
如图中所示,我们希望找到西安市的所有的推广单元信息,那么我们只需要根据陕西省-西安市来进行索引,可以快速定位到所在的推广单元有10,11两个。
索引维护介绍
索引的维护最主要的是为了保证检索服务中的索引是完整的,我们在维护索引数据的时候,有两种场景会带来广告数据。在系统启动之初,会有一部分初始化数据,在系统上线运行之后,会逐渐有不少新的广告信息加入。因此,我们的广告索引类型整体可以分为两大类:
全量索引
检索系统在每次启动的时候,需要一次性读取当前数据库中的所有数据,建立索引。
TIPS:(这里有一个问题,如果我们系统流量高的时候,需要部署多实例,每一个实例在系统启动的时候,都直接从数据库中加载全量索引,会对数据库造成极大的压力。)
因此,通常我们实现全量索引都是通过读取文件中预先存储的广告数据来实现全量索引导入。
增量索引
顾名思义就是后来新增的数据索引。系统在运行过程中,会对数据库的变动进行监控,实现加载更新,构建索引,我们系统中通过对数据库表的CRUD操作的变动,通过监听Binlog来实现增量索引的更新。

[Spring cloud 一步步实现广告系统] 12. 广告索引介绍的更多相关文章
- [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard
		在之前的18次文章中,我们实现了广告系统的广告投放,广告检索业务功能,中间使用到了 服务发现Eureka,服务调用Feign,网关路由Zuul以及错误熔断Hystrix等Spring Cloud组件. ... 
- SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统
		一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ... 
- [Spring cloud 一步步实现广告系统] 21. 系统错误汇总
		广告系统学习过程中问题答疑 博客园 Eureka集群启动报错 Answer 因为Eureka在集群启动过程中,会连接集群中其他的机器进行数据同步,在这个过程中,如果别的服务还没有启动完成,就会出现Co ... 
- [Spring cloud 一步步实现广告系统] 2. 配置&Eureka服务
		父项目管理 首先,我们在创建投放系统之前,先看一下我们的工程结构: mscx-ad-sponsor就是我们的广告投放系统.如上结构,我们需要首先创建一个Parent Project mscx-ad 来 ... 
- [Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结
		到目前为止,我们整个初级广告检索系统就初步开发完成了,我们来整体回顾一下我们的广告系统. 整个广告系统编码结构如下: mscx-ad 父模块 主要是为了方便我们项目的统一管理 mscx-ad-db 这 ... 
- [Spring cloud 一步步实现广告系统] 7. 中期总结回顾
		在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用. Eureka Server 加依 ... 
- [Spring cloud 一步步实现广告系统] 1. 业务架构分析
		什么是广告系统? 主要包含: 广告主投放广告的<广告投放系统> 媒体方(广告展示媒介-)检索广告用的<广告检索系统> 广告计费系统(按次,曝光量等等) 报表系统 Etc. 使用 ... 
- [Spring cloud 一步步实现广告系统] 13. 索引服务编码实现
		上一节我们分析了广告索引的维护有2种,全量索引加载和增量索引维护.因为广告检索是广告系统中最为重要的环节,大家一定要认真理解我们索引设计的思路,接下来我们来编码实现索引维护功能. 我们来定义一个接口, ... 
- [Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备
		MySQL Binlog简介 什么是binlog? 一个二进制日志,用来记录对数据发生或潜在发生更改的SQL语句,并以而进行的形式保存在磁盘中. binlog 的作用? 最主要有3个用途: 数据复制( ... 
随机推荐
- 【ES6】数值的扩展
			1.Number.isFinite()和Number.isNaN()[只对数值有效] (1)Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity. [ ... 
- 函数式响应式编程 - Functional Reactive Programming
			我们略过概念,直接看函数式响应式编程解决了什么问题. 从下面这个例子展开: 两个密码输入框,一个提交按钮. 密码.确认密码都填写并一致,允许提交:不一致提示错误. HTML 如下: <input ... 
- 【BZOJ 3771】Triple
			Problem Description 给出 \(n\) 个物品,第 \(i\) 个物品体积为 \(a_i\) . 对于每个体积 \(V\) ,求选出 \(3\) 个物品,体积之和为 \(V\) 的方 ... 
- Linux服务器部署.Net Core笔记:五、安装Nginx
			我们搜索一下yum库关于nginx的rpm包:yum list | grep nginx 找到rpm安装包,我们就可以使用yum直接安装了:yum install nginx 修改nginx配置文件: ... 
- 剑指offer-47:不用加减乘除做加法
			参考:https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html <原码,反码,补码 详解> 题目描述 ... 
- win10环境下为mongoDB创建用户并认证登录
			一.配置mongoDB的bin目录到环境变量中的path;例如:D:\DatabaseService\MongoDB\Server\4.0\bin 二.cmd打开控制台,然后输入mongo回车,可以进 ... 
- IoT缺德相关
			https://github.com/nebgnahz/awesome-iot-hacks <揭秘家用路由器0day漏洞挖掘技术> Embedded Device Security: Pw ... 
- Castle DynamicProxy基本用法(AOP)
			本文介绍AOP编程的基本概念.Castle DynamicProxy(DP)的基本用法,使用第三方扩展实现对异步(async)的支持,结合Autofac演示如何实现AOP编程. AOP 百科中关于AO ... 
- SQLServer配置镜像,无法将 ALTER DATABASE 命令发送到远程服务器实例,数据库镜像配置未更改。请确保该服务器已连接,然后重试。
			问题描述: 在做镜像的时候镜像已经连接成功,但是见证服务器却报错 然后tcping了端口啥都是通的,后面发现原来是主机名称一样导致的问题 发现host文件里面: C:\Windows\System32 ... 
- weed3-1.hello world
			Weed3 一个微型ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 05年的时候开 ... 
