当前位置: 首页 > news >正文

18 大量数据的异步查询方案

在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询,那就涉及到跨库搜索的情况,这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询,当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的问题),基本上都选shradingjdbc了。我们暂时不讨论数据库中间件的技术选型问题,讨论下我们一般面对海量数据的查询问题。

我们知道在数据库中的模糊查询需要全盘扫描,找的匹配的字符并返回,性能上就会比较慢,特别是数据量比较大的时候就是一个灾难。这个时候我们一般选择使用elasticsearch倒排索引去做模糊查询的中间件。es通过把字段进行分词操作,并把分词的元字段存储起来。通过分词映射到实际数据的方式避免全盘扫描的问题,如果是海量数据,es的存储压力比较大,那么我们把海量数据存储在分析型数据库中即可。如下图所示:
在这里插入图片描述

关于分析型数据库的列式存储不同数据库的实现不同,有兴趣的可以去了解下。主流的两种hbase和clickhouse,千亿条数据查询也是很快的,但是分析型数据库对修改的操作性能非常差,我们使用的时候注意这一点就可以了。这里不做细究。

我们在java程序中查询的时候通过es的分词找的数据实体,然后需要找全量数据的时候再到分析型数据库中查询即可。这样就可以解决海量数据查询的性能问题

http://www.lryc.cn/news/531868.html

相关文章:

  • DRM系列八:Drm之DRM_IOCTL_MODE_ADDFB2
  • 软件测试用例篇
  • PopupMenuButton组件的功能和用法
  • Python进行模型优化与调参
  • vue2-组件通信
  • 20250205确认荣品RK3566开发板在Android13下可以使用命令行reboot -p关机
  • 设计模式---观察者模式
  • 初八开工!开启数字化转型新征程!
  • 文本分析NLP的常用工具和特点
  • DeepSeek 与 ChatGPT 对比分析
  • vite---依赖优化选项esbuildOptions详解
  • ElasticSearch 学习课程入门(二)
  • 使用 Redis Streams 实现高性能消息队列
  • 深度学习|表示学习|卷积神经网络|DeconvNet是什么?|18
  • (优先级队列(堆)) 【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用
  • 优化数据库结构
  • 密云生活的初体验
  • 图像分类与目标检测算法
  • 计算机网络——流量控制
  • 体验 DeepSeek 多模态大模型 Janus-Pro-7B
  • 使用mockttp库模拟HTTP服务器和客户端进行单元测试
  • 解决每次打开终端都需要source ~/.bashrc的问题(记录)
  • UE5 蓝图学习计划 - Day 14:搭建基础游戏场景
  • C++常用拷贝和替换算法
  • 取消和确认按钮没有显示的问题
  • Python安居客二手小区数据爬取(2025年)
  • Java/Kotlin HashMap 等集合引发 ConcurrentModificationException
  • 【Day31 LeetCode】动态规划DP Ⅳ
  • Unity 2D实战小游戏开发跳跳鸟 - 记录显示最高分
  • Ollama AI 开发助手完全指南:从入门到实践