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

Roaringbitmap+Mysql构建标签--实际使用问题

 项目github链接:baiye21/RoaringbitmapDemo · GitHub

前文:

RoaringBitMap处理海量数据内存diff_roaringbitmap实践-CSDN博客

基于配置实现RoaringBitMap的交、差、并集处理-CSDN博客

1、id映射:

因为Roaringbitmap,可以存储的是数字类型,所以如果需要标记的数据唯一键是字符型,就需要单独定义一张id映射表了,这可能会对后续关联业务造成一定的影响。

 2、数据明细回表:

因为Roaringbitmap一位只能是1或者0,也就意味着只能存储单个信息,举个例子,如果对用户参与活动打标,那么你可能有一个用户参与某个活动的位图,这个位图只能查询某些用户是否参与某个活动,而不能关联活动参与时间查询,那么也就意味着,明细数据显示和排序可能实现起来比较麻烦,需要先通过位图缩小查询范围,再拿用户id去查询明细数据,带出活动参与时间,就有点类似myszql的回表,索引键没有的数据,需要回表进行查询。不过一般来说,使用位图去检索,是不会要求排序的,如果确实有对应需求,那么可以尝试建立更细维度的标签,还是使用用户参与活动的场景举例,如果关联参与时间,那么可以新增最近3天,5天,7天参与某某活动的标签,去检索。

3、Mysql存储空间碎片:

Mysql的text类型字段,如果数据频繁更新,会导致空间碎片增多,影响存储空间使用,这部分空间需要手动处理回收才能释放。我实际使用的场景,线上的标签表,实际存储空间还不到1G,但是由于频繁更新,1年左右产生了16G的空间碎片,对比实际存储空间,碎片空间确实比较大。

4、标签数据缓存:

虽然使用压缩位图Roaringbitmap序列化后进行存储,但是数据量上来,序列化后的字符串还是比较大,如果存储在数据库,又频繁查询的话,对数据库性能还有网络带宽还是有一定影响,所以建议对这类标签数据做本地缓存,诸如使用Caffeine、EhCache的等等,加快查询效率,同时减少数据库和传输压力。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CACTER直播预告:重保期间邮件网关与SMC2如何多维度防护
  • 常见的框架漏洞
  • 常见的CMS漏洞
  • Stable Diffusion绘画 | 图生图-上传重绘蒙版
  • Massa如何构建完全链上的去中心化网络?
  • 计算机学习
  • SQL Server数据库文件过大而无法直接导出解决方案
  • 开源威胁情报查询
  • 07.FreeRTOS列表与列表项
  • leetcode 234.回文链表
  • 【C++ 面试 - 基础题】每日 3 题(一)
  • postgreSQL16添加审计功能
  • centos上传工具
  • LeetCode Hard|【460. LFU 缓存】
  • 【Cesium开发实战】视点信息功能的实现,双击保存当前视点为缩略图
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 30秒的PHP代码片段(1)数组 - Array
  • AngularJS指令开发(1)——参数详解
  • JavaScript对象详解
  • jdbc就是这么简单
  • Mysql5.6主从复制
  • Node + FFmpeg 实现Canvas动画导出视频
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • springMvc学习笔记(2)
  • swift基础之_对象 实例方法 对象方法。
  • Zsh 开发指南(第十四篇 文件读写)
  • 包装类对象
  • 编写符合Python风格的对象
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 用Visual Studio开发以太坊智能合约
  • 我们雇佣了一只大猴子...
  • ​queue --- 一个同步的队列类​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1)(1.13) SiK无线电高级配置(六)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (八)Flask之app.route装饰器函数的参数
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二开)Flink 修改源码拓展 SQL 语法
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十六)串口UART
  • (已解决)什么是vue导航守卫
  • (转)JAVA中的堆栈
  • (自适应手机端)行业协会机构网站模板
  • .form文件_SSM框架文件上传篇
  • .NET 解决重复提交问题
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)