MOQL
文章平均质量分 75
colorknight
这个作者很懒,什么都没留下…
展开
-
疯狂SQL转换系列- SQL for Tencent Cloud VectorDB
TcVector提供的检索接口与SQL语法有一定差异,其SearchParam提供的部分参数可以直接映射为SQL语法的等同语义子句。其OutFields参数为输出结果集的列结构,与SQL语句的Select子句语义相同。但其也有其特殊的查询参数接口,如:针对向量字段匹配的参数接口withVectors等。由于这些概念在SQL中没有对应语义的子句,为不增加语法概念,MOQL Transx将这类接口都以Where子句中的函数形式进行表达。转换的语法效果不一定是最好的,更多是为用户提供一个统一的数据库交互体验。原创 2023-12-15 10:10:43 · 605 阅读 · 0 评论 -
疯狂SQL转换系列- SQL for Milvus
Milvus提供的检索接口与SQL语法有一定差异,其SearchParam提供的部分参数可以直接映射为SQL语法的等同语义子句。由于这些概念在SQL中没有对应语义的子句,为不增加语法概念,MOQL Transx将这类接口都以Where子句中的函数形式进行表达。写在最后,我们如此疯狂的为各种数据库提供基于SQL访问的接口,主要是为了降低用户使用各类数据库进行数据检索时的学习成本。有兴趣的朋友可以关注我们的微信号“自由你的数据”并给我们留言,也可以通过直接扫描下面的二维码找到我们。Milvus查询参数接口。原创 2023-03-22 08:00:00 · 551 阅读 · 0 评论 -
一款支持SQL+Lucene语法的实时数据匹配引擎够不够酷?
任何技术其实酷不酷不是最重要的,最重要的是实用。早在几年前,笔者实现了兼容Lucene语法的实时匹配引擎Tripod后,就曾考虑过是否会有这样一种场景,同时需要使用SQL+Lucene两种语法的能力来描述匹配条件,对数据进行实时匹配?因为事情较多,一时没有想到,就此搁下。 一晃差不多三年过去了,最近在一个项目中碰到了我的老本行--“安全日志分析”的需求。如今的日志分析已经有了专门的检测规则共享格式— sigma, 与我们早期无法打破安全知识与工程实现间的鸿沟相比,已经截然不同。工程实现者不用再原创 2022-07-03 15:26:15 · 1024 阅读 · 1 评论 -
SQL检索MongoDB的轻量级解决方案
SQL检索MongoDB的轻量级解决方案原创 2022-02-28 09:57:08 · 566 阅读 · 0 评论 -
2020收官--Filter4Go
终于在2021年到来之前完成了Filter4Go。 Filter4Go是一款基于GO语言开发的,兼容SQL语言Where子句语法的数据过滤的工具(https://github.com/colorknight/filter4go.git)。拥有SQL语言基础的使用者,可以通过编写类SQL的语法规则,对GO环境中的数据进行筛选匹配。例如类似Kubernetes中的各种selector(选择器),通过配置的选取规则筛选不同资源的应用场景,就是Filter4Go的应用场景之一。另外,对于有些数据量...原创 2020-12-31 23:14:49 · 202 阅读 · 0 评论 -
opipe--一款基于java的自定义“命令”管道
opipe是一个“命令”管道,其设计思路与linux的命令管道一致。不同的是,linux的命令管道串联了一组命令,命令间是以输入、输出流串联在一起的。而opipe实际为一个操作(函数)的管道,操作间以返回值及调用参数的方式串联在一起,即opipe会用前一个操作的返回值作为输入参数调用后一个操作,并重复这样的调度直到整个管道中的所有操作都执行完成。opipe是由短语operation...原创 2019-11-30 22:39:59 · 426 阅读 · 0 评论 -
SQL to ElasticSearch DSL改进
最近团队在使用MOQL的SQL到ElasticSearch DSL转换时提出,该转换器不能完成深度分页场景的应用。而ElasticSearch为该类应用提供了“search_after”的参数解决方案。ElasticSearch的这个解决方案使得前后两个QUERY DSL有了上下文依赖,后续的查询要依赖上一个查询结果中返回的内容作为条件拼装检索语句。为满足这个需求,MOQL升级了...原创 2019-10-17 20:06:42 · 414 阅读 · 1 评论 -
一步到位,用SQL检索ElasticSearch
在介绍MOQL的上一篇文章《SQL to ElasticSearch DSL》里,提到了如何将SQL语法转换为ElasticSearch DSL的用法。这期间还出现乌龙事件,就是最新的代码并未提交到GitHub上,功能用不了,如今已经连同本次支持的内容全部更新提交。 上次介绍,MOQL支持在一定的语法集合范围内将SQL语法转换为ElasticSearch的DSL。但这个转换带来的易...原创 2018-06-09 23:17:35 · 983 阅读 · 1 评论 -
SQL to ElasticSearch DSL
众所周知ElasticSearch目前是一个应用最为广泛的分布式搜索与分析引擎,它的功能强大,能够已很高的性能访问大规模数据。它拥有强大的查询分析语法,能够完成模糊查询、精准查询及聚集计算等诸多功能的表达。但对于那些用惯了SQL语言的数据分析人员来说,掌握ElasticSearch的DSL语言来做以前熟悉的事情,还是有比较陡的学习曲线的。 MOQL是一款基于Java的面向内存对象过...原创 2018-04-20 22:39:42 · 6305 阅读 · 3 评论 -
MOQL-复杂事件处理(CEP)
MOQL做为一款基于Java的面向内存对象的过滤、查询及统计分析工具,有非常丰富的应用场景。复杂事件处理就是其应用场景之一。MOQL工程在迁移到GitHub之后,进行了一次大的调整。整个项目被拆分成了moql-core和moql-cep两个模块。其中moql-core即原来的moql主工程,而moql-cep则是基于moql开发的复杂事件处理模块,其功能类似Esper,但待处理的数据是无模式的。所原创 2017-02-06 20:03:04 · 2693 阅读 · 2 评论 -
MOQL—过滤器(Filter)
Filter是MOQL提供的主要功能之一,它支持SQL语法中Where部分的语法描述,能够通过编写条件语句对内存中的数据进行条件匹配。它可以用于对从数据库中查询回的数据集进行二次查询的功能;还能够用于数据处理时对数据流的实时过滤等。Filter功能建立在Operand的基础上,Operand决定了能对哪些数据进行过滤。简单来说包括:常量、变量、数组、集合、对象等(详见文章MOQL—Oper原创 2013-04-15 09:16:52 · 1164 阅读 · 0 评论 -
MOQL--操作数(Operand) (一)
Operand是MOQL语法结构的重要组成部分,语法结构中那些需要被分析处理的数据列或数据值都被称之为Operand。如select后跟的数据列,where条件中描述的条件字段以及需要匹配的常数值等都被称之为Operand。如下面语句中的红色字体部分,均表示是一个Operand。通过对其计算,我们可以获得数据结果,并形成最终我们求解的数据结果集。select count(a.i原创 2013-04-04 10:42:07 · 1510 阅读 · 0 评论 -
MOQL简介
MOQL(MemoryObject Query Language)是一款基于Java的面向内存对象过滤、查询及统计分析的开源工具。它能够对内存中存储的集合对象,集合中的对象可以是Bean对象,数组对象、Map对象等各种对象,完成类似于数据库提供的查询及统计分析功能。它的语法结构类似于SQL,支持top、distinct、where、group、having、order、聚集运算(count、sum原创 2013-03-24 11:35:56 · 12574 阅读 · 1 评论 -
MOQL--操作数(Operand) (三)
函数Operand 函数Operand的格式如下:函数名(参数1,参数2…)。函数名与Java语法中标示符的命名规范一致,该命名规范已在变量Operand中进行了描述。其每一个参数都是一个Operand,Operand可以是常量、变量、函数或者表达式中的任意一种。如:sum(a)、_formatTime(‘yyyy-mm-dd’,getCurrentTime())、rando原创 2013-04-06 10:11:40 · 1178 阅读 · 0 评论 -
MOQL--操作数(Operand) (四)
表达式Operand 表达式Operand是MOQL语法中格式最丰富且复杂的一类、。它包括数组表达式、数学运算表达式以及成员表达式三种类型。另外,在MOQL源代码中我们还可以看到,表达式Operand至少还包括关系运算表达式以及逻辑运算表达式。但这两种表达式无法通过MoqlUtils.createOperand()直接创建,它们必须应用在过滤器(Filter)中。我们将在过滤器(原创 2013-04-11 08:13:00 · 2324 阅读 · 0 评论 -
MOQL—筛选器(Selector)(二)
FROM子句 描述了查询从哪些数据表中获取数据。语法如下:from TABLE [[as]ALIAS] [,...][[inner|left|right|full]join] TABLE [[as]ALIAS][onSEARCH_CONDITION] [...]] TABLE [[as]ALIAS][,原创 2013-05-07 23:26:24 · 1228 阅读 · 0 评论 -
实时统计分析技术浅谈
实时统计分析技术主要是为了满足数据应用中大家对数据的变化情况有一个较高时间灵敏度需求的情况。应用要求能够近乎及时的反映数据的整体变化情况。那么实时统计分析的核心关键点是实时性,也就是性能。其还伴有另一个明确的特征,就是对于要统计的内容是十分明确的。 传统上,我们的数据统计分析方法是在一个关系数据库中创建表,然后将数据存储到表中。最后利用SQL语句从数据库中统计获得自己需要的统计结果。以此原创 2013-05-22 08:40:32 · 3343 阅读 · 0 评论 -
MOQL—筛选器(Selector)(一)
Selector是MOQL提供的最核心的功能,它相当于SQL(结构化查询语言)中DQL(数据查询语言)的功能,即我们通常所说的Select关键字所描述的查询功能。它能够对Java内存中的对象数据进行查询、统计以及集合(如:UNION)操作。它可用于对持续不断产生的数据进行实时统计。即预先设定好统计条件,然后每当有数据产生就将其交给Selector进行统计分析。Selector会累计统计这些不断产生原创 2013-05-06 09:57:33 · 1284 阅读 · 0 评论 -
MOQL—筛选器(Selector)(三)
HAVING子句 与SQL语法一致,描述了对group by子句中产生的组数据进行过滤的过滤条件。Having子句中的所有字段都需要是select子句中的列,与where不同的是,这里是对分组结果数据的过滤,而where是对原始表数据进行的。[having SEARCH_CONDITION]SEARCH_CONDITION为具体的查询条件原创 2013-05-14 01:16:44 · 1119 阅读 · 0 评论 -
MOQL--面向流的统计过滤技术
坦白讲在实现了moql以后,总想把它适用的范围写出来,却发现总也表达不清楚。原本写这个开源项目的初衷是因为在自己开发的产品中,会实时的,不断的收集各类数据。对于这些数据会对它们进行格式化、映射等实时的处理,也会有对数据进行过滤及统计分析的需求,最后还要将数据入库。对于数据的过滤与统计需求,同行都是基于数据库完成的,都是数据入库后再从库里用sql把数据查出来,统计也好,过滤也好,因为会伴随有大量的磁原创 2013-12-08 00:04:06 · 1040 阅读 · 0 评论 -
MOQL—转换器(Translator)
MOQL是一个面向内存对象设计的查询统计分析工具,其语法兼容SQL标准。其语法结构除支持如下:select count(a.id) cnt, sum(a.num) sum, a.num%500 mod from BeanA a group by 3 having mod > 10 order by 1的标准SQL书写格式外,还拥有xml结构的书写格式,如下:原创 2013-07-24 10:45:33 · 1850 阅读 · 0 评论 -
MOQL--操作数(Operand) (二)
常量Operand Operand支持的常量类型包括字符串型(String)、双浮点型(Double)、长整型(Long)以及NULL类型。 字符串Operand的格式与SQL中字符串的格式一致。字符串的两端需要用单引号(‘)包围,如:’String’、’字符串’、’123’、’123.1’、’null’等都表示字符串。当字符串中也需要包含单引号(‘)时,原创 2013-04-05 10:52:10 · 923 阅读 · 0 评论