不同业务场景下数据同步方案设计

2023-10-27

      企业开发实践中通常需要提供数据搜索的功能,例如,电商系统中的商品搜索、订单搜索等。通常,搜索任务通常由搜索引擎担当。如Elasticsearch。而我们的原始数据为了安全性等问题通常存储在关系型数据库中。在搜索数据前,我们需要先将数据从关系型数据库中同步至搜索引擎中。因此,整个业务搜索过程包含两个阶段,第一阶段,将数据从关系型数据库同步至搜索引擎;第二阶段,从搜索引擎搜索数据,并返回至用户。下面,我将结合不同业务场景给出相应的数据同步解决方案。

第一,数据量小,业务查询简单。此类场景中,关系数据库中待同步的表数据中无表连接操作或者存在少量的表连接操作。用户在将数据同步到ES前对数据进行连接处理,或者数据同步时不做任何处理,待业务查询时再在ES中进行关联查询。通常我们可以采取Logstash或者Canal读取相应的表数据,然后写入到搜索引擎的索引中。具体架构设计如下图1.1所示。

图1.1 基于Logstash的数据同步方案

图1.2 基于Canal的数据同步方案

       第二,数据量大,业务查询复杂。此种场景通常发生在大型综合类电商的商品查询中,由于数据量大,业务查询复杂,用户对查询的响应时延要求高。所以,我们需要考虑数据的分库分表问题,以及提前将数据组织好以便后期查询的问题。这种情况下,我们可以将数据分为主数据和从数据。例如,在商品查询中,it_item_spu为商品表,it_item_cate为商品分类表,it_item_sku为商品SKU表。我们可以认为,it_item_spu为主表,it_item_cate和it_item_sku为从表。我们可以将这三张表构建在一个大的索引中,该索引中包含这三张表中的所有信息。那么,我们如何来构建这个大而全的索引呢?这个时候,我们可以监听主表的变更记录,然后再通过JDBC反查数据连接其他从表来丰富数据。至于如何监听主表变更数据通常由两种处理方式,一种是基于Mysql的binlog日志来监听变更,另一种是基于业务操作发送事件来处理。其架构设计具体如图1.3和图1.4所示。

 

图1.3 基于Canal同步数据并反查数据库方案

图1.4 基于Kafka消息事件并反查数据库方案

 

      总结,数据同步为数据搜索提供了数据保证,而复杂业务逻辑场景下,如果能够在数据同步阶段微数据搜索重新组织好数据,那么就能够简化业务查询的逻辑,同时提供用户响应时延。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同业务场景下数据同步方案设计 的相关文章

随机推荐

  • Java提高性能的50个优化,记得收藏

    在JAVA程序中 性能问题的大部分原因并不在于JAVA语言 而是程序本身 养成良好的编码习惯非常重要 能够显著地提升程序性能 1 尽量在合适的场合使用单例 使用单例可以减轻加载的负担 缩短加载的时间 提高加载的效率 但并不是所有地方都适用于
  • unity3d中利用代码脚本控制按钮的开关

    1 软件环境 unity2019 4 12f1 Visual Studio2019 2 unity工程设置 右键在UI中添加Button组件 接下来添加C 脚本 将此脚本挂在Button的父物体上 后面会用到transfrom来查找到But
  • Axure中后台管理信息系统通用原型方案 v1

    点此下载原型模板 本作品是一套通用型的中后台管理系统原型设计方案 可以帮助你快速输出标准和美观的中后台产品原型方案 极大的节省协作成本和提升工作效率 这套方案提供了12套不同类型的登录界面和系统框架 并涵盖了大量的常用组件和常用页面模板 可
  • 组件开发概述——vue组件开发(一)

    前言 组件化是WEB前端开发中的一个非常重要概念 体现面向对象编程主要特征之一 封装性 组件化开发的目的和意图是提高了软件的可维护性 实现前端代码复用性 组件是扩展 HTML 元素 其使用方式和HTML5提供的组件使用方式一致 它补充HTM
  • Java实现根据当前时间获取本周(工作日)日期(周一~周五或周天)

    import java text ParseException import java text SimpleDateFormat import java util Date import java util Calendar public
  • 【100%通过率 】【华为OD机试 c++】基站维护工程师【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 基站维护工程师 小王是一名基站维护工程师 负责某区域的基站维护 某地方有 n 个基站 1 lt n lt 10 已知各基站之间的距离 s 0 l
  • linux脚本实现scp命令自动输入密码和yes/no等确认信息

    实现方式 通过expect工具实现 bin bash yum y install expect expect c spawn scp r root 192 168 10 106 root qumf Agoly txt root qumf e
  • mysql 查询 投影_sql--查询(基本,条件,投影,排序)

    要查询数据库表的数据 我们使用如下的SQL语句 SELECT FROM 使用SELECT FROM students时 SELECT是关键字 表示将要执行一个查询 表示 所有列 FROM表示将要从哪个表查询 该SQL将查询出students
  • 位域(bit fields)简介

    1 简介 位域是指信息在存储时 并不需要占用一个完整的字节 而只需占几个或一个二进制位 例如在存放一个开关量时 只有0和1 两种状态 用一位二进位即可 为了节省存储空间 并使处理简便 C语言又提供了一种数据结构 称为 位域 或 位段 所谓
  • 信息学奥赛-逻辑运算

    学习内容 1 逻辑运算概念介绍 非 not 与 and 或 or 异或 xor 2 运算规则 AVB 两个命题中至少有一个真命题时 其复合命题为真 A B 两个命题必须全为真命题 其复合命题才是真命题 A 将原命题取反 A B 两个命题一真
  • 【深度学习】tensorflow各个版本下载地址

    tensorflow与CUDA对应表如下 需要装低版本的tensorflow 下载地址 http mirrors aliyun com pypi simple tensorflow gpu
  • 吴晓波:2020年怎么看,怎么办?

    origin https 36kr com p 5274524 快公司 时代已经过去了 编者按 本文来自微信公众号 正和岛 ID zhenghedao 口述 吴晓波 财经作家 890新商学创始人 采写 曹雨欣 36氪经授权发布 再次见到吴晓
  • C++笔记-用指定字符串替换目标字符串中的字串-find-substr-replace

    功能是 用字符串zhangsan lisi wangwu替换目标字符串names 1 2 3 中的 1 2 3 结果是 names zhangsan lisi wangwu 1 使用std string的replace方法 std stri
  • three.js 创建文本的几种方式

    精灵贴图文本 text width 128px height 128px font size 16px text align center color ffffff background ff0000 div class text 精灵贴图
  • 基于javaweb+mysql的二手交易平台二手商城二手物品(前台、后台)

    基于javaweb mysql的二手交易平台二手商城二手物品 前台 后台 运行环境 Java 8 MySQL 5 7 Tomcat 8 开发工具 eclipse idea myeclipse sts等均可配置运行 适用 课程设计 大作业 毕
  • [题解]-整理药名

    题目 医生在书写药品名的时候经常不注意大小写 格式比较混乱 现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式 即药品名的第一个字符如果是字母要大写 其他字母小写 如将 ASPIRIN aspirin 整理成 Aspirin 输入
  • MySQL数据库之DML(数据操纵语言)

    1 DML 数据操纵语言 在进行数据库操作时 首先就是要使用DML 数据操纵语言 数据操纵语言主要由插入数据 insert 更新数据 update 以及删除数据 delete 组成 这些操作主要是针对 数据表中的数据 2 插入数据 INSE
  • 论文解读:Inpaint Anything: Segment Anything Meets Image Inpainting

    论文 https arxiv org pdf 2304 06790 pdf 代码 https github com geekyutao Inpaint Anything 图1 Inpaint Anything示意图 用户可以通过点击图像中的
  • Kanzi入门学习教程

    锋影 e mail 174176320 qq com 1 安装Kanzi 2 使用Kanzi studio创建工程 Kanzi创建的工程会包含以下目录结构 其中 Tool project文件夹中存放的是设计师设计的工程 包含kanzi UI
  • 不同业务场景下数据同步方案设计

    企业开发实践中通常需要提供数据搜索的功能 例如 电商系统中的商品搜索 订单搜索等 通常 搜索任务通常由搜索引擎担当 如Elasticsearch 而我们的原始数据为了安全性等问题通常存储在关系型数据库中 在搜索数据前 我们需要先将数据从关系