美文网首页
基于开源集合查询引擎--CQEngine优化基数树路由匹配规则思

基于开源集合查询引擎--CQEngine优化基数树路由匹配规则思

作者: NealLemon | 来源:发表于2023-04-29 12:34 被阅读0次

查询引擎简介

CQEngine

一个高性能的 Java 集合,可以使用类似 SQL 的查询进行搜索,延迟极低。

  1. 高效的索引结构:CQEngine支持多种类型的索引结构,如哈希索引、树形索引和空间索引等。这些索引结构能够快速定位数据,从而大大提高查询效率。
  2. 优化的查询算法:CQEngine采用了一系列优化算法来加速查询,如适应性查询优化和索引合并等。这些算法能够根据查询条件的不同,自动选择最优的查询策略,从而提高查询效率。
  3. 并发执行:CQEngine支持并发执行查询操作,能够利用多核处理器的性能优势,加快查询速度。
  4. 原生支持Java 8 Lambda表达式和Stream API:CQEngine原生支持Java 8 Lambda表达式和Stream API,这些特性能够简化代码并提高执行效率。

Concurrent Trees

Concurrent Trees是 CQEngine 的核心依赖库。提供了一组高效的并发数据结构,用于实现树形数据结构的存储和查询。它支持常见的树形数据结构,如前缀树、后缀树、红黑树等

  1. 高效的并发性能:concurrent-trees使用了一些优秀的并发技术,如读写锁、分段锁等,从而实现高效的并发性能。它的数据结构设计具有高度的可伸缩性,能够在多线程环境下保持高效的性能。
  2. 支持多种树形数据结构:concurrent-trees支持多种树形数据结构,如前缀树、后缀树、红黑树等。开发人员可以根据自己的需求选择最适合的数据结构。
  3. 支持自定义节点和比较器:concurrent-trees允许开发人员自定义节点和比较器,以适应不同的业务场景和数据结构需求。这样可以使得数据结构更加灵活和通用。
  4. 易于使用和扩展:concurrent-trees提供了清晰简单的API,易于使用和扩展。它还提供了完善的文档和示例代码,使得开发人员能够快速上手。

如果有兴趣往下看,需要先去了解上面两个开源项目,否则下面的内容可能会感觉比较疑惑。

基于Concurrent Trees 扩展URL Path查找

已有基数树字符串设计

扩展基数树URL Path设计

思路总结 : 由于API 请求路由复杂,引入通配符概念,将 通配符 * 视为单位Path 通配, 将通配符 ** 视为 多单位通配。

基于CQEngine 扩展URL Path查询方法(基数树)

原生支持的查询方法

cqengineFeatrue.png cqengineFeatrueIndex.png

新增查询方法

Abbreviation Meaning Example
PM Request Path Url Match PathMatches(Request.URL, /api/test)

Index Feature Matrix

Index Type PM EQ IN LT GT BT SW EW SC CI HS RX SQ QZ LP
RadixTree
ReversedRadixTree
InvertedRadixTree

总结

思路大体如上,难点在改造两个开源项目源码和调试。 后期会提供具体实现方法。

相关文章

  • Calcite RBO rule 解析和自定义

    什么是查询优化器 查询优化器是传统数据库的核心模块,也是大数据计算引擎的核心模块,开源大数据引擎如 Impala、...

  • 11-mysqlSQL分析

    六星教育 - java-mysql优化1909 SQL优化 所谓SQL优化:基于MySQL的优化器查询规则来优化S...

  • MySQL资料总结(上)——索引、事务、锁、B+Tree

    执行流程 查询缓存 解析器生成解析树 预处理再次生成解析树 查询优化器 查询执行计划 查询执行引擎 查询数据返回结...

  • 策略路由

    策略路由 命令简介 ipset: ipset是iptables的扩展, 它允许你创建匹配整个地址集合的规则. 而不...

  • Elasticsearch 深入搜索-全文搜索

    基于词项和基于全文 匹配查询 匹配查询 match 是个 核心 查询。无论需要查询什么字段, match 查询都应...

  • Hash索引

    hash索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。Memory引擎默认使用的是此种索引。 存储引擎对...

  • Python基于规则的中文分词

    Python基于规则中文分词(正向最大匹配,逆向最大匹配,双向最大匹配) 最大匹配方法(基于规则的)是一种基于词典...

  • 高性能,易用的规则引擎

    规则引擎很多人都听过,实现方案有很多: 1、用开源的方案 drools 基于 RETE 决策算法 2、基于groo...

  • PostgreSQL 源码解读(17)- 查询语句#2(查询优化

    本文简单介绍了数据库系统实现中查询优化的关系代数基础,包括优化所基于的关系代数等价规则等.查询优化的主要目标是把表...

  • Drools介绍(1)

    Drools简介 Drools是一款基于Java的开源规则引擎,将规则与业务代码解耦。规则以脚本的形式存储在一个文...

网友评论

      本文标题:基于开源集合查询引擎--CQEngine优化基数树路由匹配规则思

      本文链接:https://www.haomeiwen.com/subject/cccijdtx.html