查询优化之“查询分离”

news2024/11/24 11:48:46

什么业务场景需要使用查询分离

当数据在任何时候都可能被修改和查询的场景下,就不适合采用冷热分离来解决问题。而读写分离方案得到的工单查询速度提升是有限的,它主要还是用在数据库高并发的场景中。查询分离可以有效提升数据的查询效率,即将更新的数据放在主数据库里,而查询的数据放在另外一个专门针对搜索的存储系统里。

何时触发和如何实现查询分离

一般来说,查询分离的触发逻辑分为3种:

1)修改业务代码,在写入常规数据后同步更新查询数据,该方式适用于业务代码比较简单,对写操作响应时间要求不高的业务场景。

2)修改业务代码,在写入常规数据后异步更新查询数据,该方式适用于业务代码比较简单,对写操作响应时间要求高的业务场景。

3)监控数据库日志,如有数据变更,则更新查询数据,该方式适用于业务代码比较复杂,代码改动代价较高的情况。

三种方式的优缺点比较:

如何存储查询分离的数据

目前开发者们主要使用Elasticsearch实现大数据量的搜索查询,当然还可能用到MongoDB、HBase这些技术,这就需要开发者对各种技术的特性了如指掌后再进行技术选型。

HBase可以存储海量数据,但是其设计初衷并不是用来做复杂查询,即使可以做到,效率也不高。而此处的工单查询复杂度很高,所以项目组最后锁定的两个选项是MongoDB和Elasticsearch。

技术选型不仅要考虑业务场景,也要考虑技术人员的技术结构,对技术是否有经验和熟悉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Ajax】笔记-JQuery发送请求与通用方法

Get请求 语法格式: $.get(url, [data], [callback], [type]) url:请求的 URL 地址。data:请求携带的参数。callback:载入成功时回调函数。type:设置返回内容格式,xml, html, script, json, text, _default。 准备三个按钮分别测试Get 、Post、通用型方…

PHP8知识详解:PHP8的应用领域

PHP 8 是一个通用的编程语言,可以用于开发各种类型的应用程序,包括 web 应用程序、移动应用程序、服务器端应用程序等等。由于 PHP 8 具有许多新的特性和改进,因此它可以更好地满足现代 Web 开发的需求,例如更快的执行速度、更好的…

关于我组件家庭服务器,挑选硬件设备的经历

目录 起因 升级——玩客云 原因 折腾日记 又升级——d2550工控主机 原因 折腾日记 又双升级——itx主机 原因 折腾日记 又双叒升级(目前再用的机器)——i9级x99平台e5v3主机 原因 折腾日记 心得 起因 起因大概在今年三月底四月初的时候&…

Linux磁盘分区、逻辑卷、交换分区管理

一.分区 1.MBR分区 2.GPT分区 二.磁盘分区管理 1.查看磁盘信息 2.添加磁盘 3.管理分区 (1)fdisk,默认划分为MBR的格式 (2)gdisk,默认默认划分为GPT的格式 (3)parted&#xf…

哈希:探索快速的数据存储和搜索方法

哈希:探索快速的数据存储和搜索方法 哈希表作为一种高效的数据存储结构,可以使数据的存储位置与关键码之间建立一一映射的关系,从而加快元素的搜索速度。然而,哈希方法也面临着哈希冲突的问题,即不同的关键字通过相同…

K8s中的核心概念

1.Pod (1)最小部署单元(2)一组容器的集合(3)共享网络(4)生命周期是短暂的 2.Controller (1)确保预期pod副本数量 (2)无状态应用部署 (3) 有状态应用部署 确保所有的node运…

Cmake笔记记录

工作后开发内容都是在Linux系统下完成,cmake使用比较频繁,找到一篇很不错的CMake笔记。 记录下来方便自己查阅。 目录 1.CMake介绍2.示例一:编译单个文件CMAKE_BUILD_TYPE 3.示例二:编译同个目录下多个文件aux_source_directory()…

Kubernetes_核心组件_kubelet_kubelet服务全解析(二)

文章目录 前言kubelet 架构kubelet 职责Node管理(节点管理)Pod管理 kubelet管理Podkubelet如何管理当前节点上所有Podkubelet三个端口kubelet获取Pod清单kubelet通过CRI接口管理Pod以及里面的容器 PodWorker的工作细节PodWorker的工作细节PLEG组件PLEG报错 kubelet创建并启动Po…

uni-app 使用安卓模拟器 mumu教程

第一步 去官网下载 这个直接下载就行 第二步 去uni-app 里面配置 在这里设置adb路径和模拟器端口 进去安装目录找到adb.exe 相关的就行我的是 D:/moniqi/MuMuPlayer-12.0/shell/adb.exe 端口设置的是 16385 但是不起作用 第三步 .\adb connect 127.0.0.1:7555 .\adb devi…

可证明安全初步(Provable Security Basics)

Speecher: Bingsheng Zhang 这一系列的课程,为了介绍一些基础,弥补一些上密码学课和看论文的Gap。 历史上的密码学是art,就像鲁班锁,看着很精妙,但是没有证明。 1970s以来,逐渐发展成Science。 定义和模…

【未来趋势】无屏幕笔记本

近日,来自以色列的科技公司Sightful推出了号称全球首台增强现实(AR)笔记本电脑——Spacetop。通过AR技术,用户可以拥有一块100英寸的虚拟屏幕,并且可以无视环境在任何地点办公,如咖啡店、公园、飞机上等等&…

深度理解 Spring IOC

Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 Bean缓存池&…

PHP8知识详解:PHP的历史版本

PHP(全称:Hypertext Preprocessor)是一种广泛应用于web开发的脚本语言。它最初由Rasmus Lerdorf在1994年开发,并于1995年发布了第一个版本。以下是PHP的一些历史大版本及其介绍: PHP 1.0(1995年&#xff09…

因果图用例设计案例

大家在测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,下面就来讲一种不经常用到但又非常重要的测试用例编写方法-因果图法。 应用场景:页面上有多个控件(输入),控件&#xff…

c++--反向迭代器的实现

1.反向迭代器 迭代器有两种,一种是正向的,一种是反向的,方向迭代器的主要功能就是实现数据的反向访问,通过正向迭代器的适配生成的,适配器就是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的…

Linux学习之Shell中if-else

在Shell脚本中&#xff0c;if-else使用方法如下&#xff1a; if [测试条件] then 测试条件成立执行 else条件不成立执行 ficat << CCC >> testIfElse.sh表示只有遇到CCC才结束往testIfElse.sh写入文件。<< CCC表示后续的输入作为子命令或者子Shell的输入&am…

[JavaScript游戏开发] 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示)

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 文章目录 系列文章目录前言一、本章节效果图二、介绍2.1、左边区域2.2、右边区域 三、列计划3.1、目标3.1.1、完成跟随人物二维动态地图绘制(本…

MySQL知识2

十、数据库表的6种约束 建表同时添加约束&#xff1a; 主键约束和唯一&#xff1a; 默认值&#xff1a; 检查约束&#xff1a; 未能生效&#xff0c;原因&#xff1a;版本是5.7 在8.0之后&#xff1a;支持检查约束 主键自增可以写null&#xff0c;可以写default&#xff0c;可以…

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念&#xff1a; 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

LocalDateTime、OffsetDateTime、ZonedDateTime之间的关系

什么是LocalDateTime&#xff1f; ISO-8601日历系统中不带时区的日期时间。 该类不存储时区&#xff0c;所以适合日期的描述&#xff0c;比如用于生日、deadline等等。 但是如果没有偏移量/时区等附加信息&#xff0c;一个时间是不能表示时间线上的某一时刻的。 什么是Offset…