企业开发实践中通常需要提供数据搜索的功能,例如,电商系统中的商品搜索、订单搜索等。通常,搜索任务通常由搜索引擎担当。如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消息事件并反查数据库方案

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

不同业务场景下数据同步方案设计相关推荐

  1. 神策数据成林松:数据智能在业务场景下的应用(附 PPT 下载)

     在神策 2020 数据驱动用户大会「上海站」现场,神策数据业务咨询师成林松分享了<数据智能在业务场景下的应用>的演讲.(文末附 PPT 下载地址) 本文根据其演讲内容整理,数据均为虚拟. ...

  2. 软件架构场景之—— 数据同步:如何解决微服务之间的数据依赖问题?

    业务场景 曾经设计的一个供应链系统中,存在商品.销售订单.采购这三个服务,它们的主数据的部分结构如下所示 在设计这个供应链系统时,我们需要满足以下两个需求 根据商品的型号/分类/生成年份/编码等查找订 ...

  3. 不同业务场景下如何进行数据库水平切分?

    很多互联网业务,有着数据量大的特点,随着数据量的逐步增加,数据库逐渐成为系统的瓶颈. 主从同步读写分离的架构方案只能提升数据库的读性能,对单库数据量的膨胀,以及写性能的瓶颈并不能够很好解决.此时数据库 ...

  4. 【云原生|实践指北】5:真实业务场景下云原生项目落地实践学习

    真实业务场景下云原生项目落地实践学习 写在前面的话 1.容器化的落地实践 搜题APP的云上之旅 2.Serverless的落地实践 某电商APP的Serverless改造之旅 3.云原生TKE的落地实 ...

  5. 微服务场景下数据抽取与统计

    案例小故事 某公司的技术架构体系目前还是以集群扩展体系为主,集群扩展体系架构如图9-1所示.在这种体系结构中,可以看到应用都是单块结构,但是单块结构的应用具有扩展性,通过部署在多个Tomcat上实现应 ...

  6. 数仓建模—数据同步方案设计

    数据同步方案设计 通过前面的学习数据仓库的特性之一是集成,关于一点你可以参考我们前面的文章 数仓建模-数仓初识 数仓建模-数据集成 数据集成狭义上来说就是把未经过加工处理的.不同来源的.不同形式的的原 ...

  7. 数据分析:复杂业务场景下,量化评估流程

    本文源码:GitHub·点这里 || GitEE·点这里 一.量化思维 在编程体系中有很多复杂的业务是很难理解的,但是又需要做一个量化分析,给业务人员或者运营,或者用户一个参考标准,例如常见指数,芝麻 ...

  8. 【实践】美团到店综合业务场景下的知识图谱构建与应用实践.pdf(附下载链接)...

    猜你喜欢 0.[免费下载]2021年12月热门报告盘点1.如何搭建一套个性化推荐系统?2.快手推荐系统精排模型实践.pdf3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

  9. 搜索推荐业务场景下的特征系统搭建

    转载:https://zhuanlan.zhihu.com/p/79874983?utm_source=wechat_session 前提:前阵子受朋友的邀约,结合自己在推荐搜索系统下的经验,对企业级 ...

最新文章

  1. print arraylist 显示的不是内容_泛型数组列表 java.util.ArrayListlt;Egt;
  2. php reids的geo功能,Redis GEO相关命令和功能,你造吗?
  3. 《从技术走向管理——李元芳履职记》读书心得
  4. 移动端-ibokan
  5. 《入门经典》——6.24
  6. 文曲星猜数游戏的非TDD实现
  7. mysql 查询不为0的数据_查询数据库中所有记录总数不为0的数据表名称
  8. 2005年博客发展十大悬疑
  9. 服务器虚拟化svc,SVC的虚拟化变革
  10. olap 多维分析_如何通过依赖T-SQL从OLAP多维数据集有效地提取数据
  11. OpenCV-数组加权和cv::addWeighted
  12. Atitit gui控件定位解决方案
  13. PCB Web版SI9000阻抗计算器
  14. 实战 | 应急响应方法论思维导图
  15. 各版本音标 IPA DJ KK 音标对照表
  16. 大数据为湖湘互联网发展加码
  17. 用敏捷思维来指导我们的工作和学习 --专栏《说透敏捷》学习总结
  18. Mac 此账户尚未用于app store_App Store调整频繁!游戏App下架数量再次增加! | 8月推广报告...
  19. Java SE 005 运算符续
  20. 这篇博客记录廖雪峰python教程的习题(一)

热门文章

  1. 【SpringCloud】Hystrix断路器【五】
  2. 建造者模式--师父让我来炼丹
  3. 打印页面时候的物理px,即windh跟height分别设为多少打印出来的合适
  4. 2018新浪医药年度总评榜十大榜单发布
  5. 有什么游戏开发软件可以让低配置电脑进行游戏开发
  6. python是一种面向____的高级语言_Python 基础教程Python是一种解释型、面向对象、动...
  7. Content-Type 详解
  8. 电脑误删的文件怎么找回?
  9. Windows上的bitlocker加密怎么解除?
  10. 接口自动化实战之持续集成