使用bitset实现毫秒级查询(二)】的更多相关文章

前言 因为业务要求api的一次请求响应时间在10ms以内,所以传统的数据库查询操作直接被排除(网络io和磁盘io).通过调研,最终使用了bieset,目前已经正常运行了很久 *** bitset介绍 看JDK中的解释简直一头雾水,用我自己的理解概括一下 bitset的内部实现是long数组 set中每一个位的默认值为false(0) bitset长度按需增长 bitset非线程安全 *** bitset关键方法分析 /** * Sets the bit at the specified inde…
在上一篇中我们了解了bitset索引的基本用法,本篇开始学习bitset索引更新及一些复杂查询. 1.bitset索引更新   因为我们的数据是在系统启动时全部加载进内存,所以当数据库数据发生变化时要实时通知到内存,可以使用消息队列的方式实现:将新增或者修改的数据写入kafka,然后在索引服务中从kafka中读出数据更新索引. 在UserIndexStore类中增加更新索引方法: /** * 更新索引 * @param user */ public void updateIndex(User u…
双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经过对InfluxDB/Redis和TDengine大数据平台的功能和性能对比测试,最终将TDengine作为实施方案. 1. 项目背景 基于双汇发展对能源管控的需求,利用云平台技术以及电气自动化处理手段,对双汇发展的一级.二级.三级能源仪表进行整体改造,实现仪表组网,进一步通过边缘网关进行能源在线监…
前言: 最近也在玩数据库,感觉普通机子搞数据库,还是差了点,全文查找,慢的要查一分钟更久. 但是搞cmd5库很不错,亿级数据库,毫秒级. qq 944520563好吧,下面开始,首先你得需要一个mysql数据库,推荐 环境 : apmserv5.2.6 php+mysql             Navicat for MySQL 推荐这两个软件,安装非常简单,都是全中文,所以方便新手操作. 需要的其他东西,电脑一个, 10GB左右的硬盘空间.一个大点的字典. 下面开始第一部分,打开Navica…
由于OpenTSDB没有支持Java的SDK进行调用,所以基于Java开发OpenTSDB的调用将要依靠HTTP请求的方式进行. 1.毫秒级数据写入 /api/put:通过POST方式插入JSON格式数据,将毫秒级的时间戳赋值给timestamp参数即可,JSON格式: { "metric":"self.test", "timestamp":1567675709879, , "tags":{ "host":…
一道面试题的引入: 如果面试的时候碰到这样一个面试题:ElasticSearch(以下简称ES) 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了. 第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒. 然后你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 ES…
阅读本文大概需要 6 分钟. 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了. 第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒. 你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 ES,或者就是自己玩玩儿 Demo,…
实现技术: 存储过程   ,零时表(3) 一句话说完 :把父级查询下来的子级ID 保存成零时表,并且将符合子级ID数据添加到另一张零时表. 同时清空数据时需要使用到一张零时表作为容器: alter PROCEDURE sel_sum@a int  ASBEGINselect  id,nodename ,pid  into #fz from treenodes  where  id=@a--创建零时表,并且将最上级id添加记录select id into  #array from treenode…
1.   高级查询 在我们做项目的时候经常想要按名称.编号进行查询数据,可在开发时会把最常用的查询条件写上,不常用的就不写了,也是因为把所有字段都写上太多了,布局不好看而且不实用.还有些查询条件几百年用那么一次,也不能用到时调整一下程序.基于这些考虑我们做的一个高级查询组件,可以把所有列都作为查询条件,把最常用的查询条件还正常放在页面上.点击高级查询按钮后,会有所以列作为筛选条件方便进行查找,别如果本次条件比较多还可以保存起来为一个查询方案,下次时可以方便再次查询. 1.1.      效果展示…
项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole提供的强大的毫秒定时器. 应用场景举例我们可能会遇到这样的场景: 场景一:每隔30秒获取一次本机内存使用率 场景二:2分钟后执行报表发送任务 场景三:每天凌晨2点钟定时请求第三方接口,如果接口有数据返回则停止任务,如果接口由于某种原因没有响应或者没有数据返回则5分钟后继续尝试请求该接口,尝试5次后仍…