神奇的 DSL 查询语言 带你探寻机器数据的金矿

机器数据中隐藏的价值

大数据中90%的数据都是机器数据, 这些数据几乎由所有IT元件产生,涵盖的范围相当广泛。随着系统、应用的快速增加,机器数据的扩张速度远远超过了传统技术的处理能力。面对如此庞大的数据量,机器数据分析显得越发重要了,它对诊断服务异常,发现复杂的安全性威胁、快速定位各类问题非常重要。

运维人员长期在数据中心使用机器数据作为IT运维分析的主要数据,快速洞察数据中存在的异常,从而精准定位问题。业务人员也开始将机器数据分析的结果作用于业务运营中,从而优化决策,用数据主导运营。这些都依托于机器数据分析类产品的有力支撑,机器数据分析分为监控、报告、分析、预测、预防等多个实现阶段,越是成熟的阶段其技术复杂性也高,为其带来的业务价值也更多。它可以从各个异构的 IT 系统和应用中采集机器数据,并将数据统一集中存储起来。也可以在数据产生时就检查数据是否存在异常或问题,进行实时分析及告警。还能够在数据存储之后,利用检索和报表工具,做一些复杂的统计查询以及报表分析。

传统机器数据检索分析方法

在数据检索处理领域,至今最成功的技术是 SQL 语言标准,客户通过 SQL 语言来描述数据处理请求,数据服务依据 SQL 内容响应数据结果,提供了良好的灵活性和延展性,充分地保证了即席查询能力。


SQL一直是关系数据库标准查询方法,在产业界已形成足够的共识,Hadoop 中的大量组件,都是通过将 SQL 翻译为计算任务进行数据处理,目的就是可将 SQL 的应用迁移到 Hadoop 数据范畴。

SQL 是完成数据检索的唯一且完美的途径么?

答案是否定的!

  • SQL 建立于关系模型基础之上,表达了关系代数的计算语义,那么对于非关系型数据,需要将数据源上强行套用关系模型概念。
  • SQL 的设计目标在于屏蔽逻辑过程,直接描述数据结果,在关系操作限定下该目标是合理的,但是如果失去此基础理论框架将会出现难于对付的情况,事实上关系数据库厂商通常也提供了存储过程功能,用于弥补过程性表达功能的缺失。

全新的数据检索语言 DSL

由于 SQL 语言并不能解决所有数据检索问题,我们提出了一种全新的设计,一种通用的大数据查询语言DSL(Domain-Specific Languages)来实现海量机器数据的检索分析。

我们通过一种边界明确且独立完整的数据处理单元,让他们遵循一致的数据协议,使得它们可以像Unix命令一样按需组合使用,从而达到处理复杂数据的目标。同时也对外提供了公开的API接口,使得数据查询操作可以被嵌入到用户的其它程序中,满足更多、更复杂和更个性化的功能需求。

一个简单的例子:

含义是从 elasticsearch 存储的 main 索引中加载数据,并且对数据按 level 字段等于”error ”来进行检索过滤,之后再按”action ”字段来进行分组,最终针对每组计算数据对象总数。这样的命令组合本质上同样是对数据的分析处理,但它具有以下特征:

  • 体现过程性,过程单元简单清晰,组合使用同样简单清晰;
  • 每个命令单元都可以单独工作,达成自己的功能效果;
  • 命令单元可按需组合使用。

DSL 语言技术应用,属于程序编译技术范畴,除了语言标准规范等方面的规划设计外,自主设计开发了其相关的语言解释器及执行控制器,使得扩展、变更与定制化开发都更加的简单、快速。Parser 是根据文法定义动态生成的一个解析执行树,Parser 解析 DSL 后依次得到 DSL 的语法分析树和抽象语法树,并最终得到可执行的数据结构。修改或者扩展 DSL 只需要变更定义文件,并且添加新的执行单元即可,不需要变更语法解析逻辑。

如扩展智能预测算法应用,添加modelpredic命令

DSL 语言包含了所有的搜索命令以及可以结合命令使用的函数和表达式。整个 DSL 的语法风格脱胎于 Unix 命令管道(Unix pipeline)的运用方法。使用 DSL 可以对数据进行检索,并且针对结果集执行进一步的修改、转换、插入等操作。比如说针对初步的搜索结果数据集,进行更多信息的抽取、添加新的字段、执行统计、重新排序等等。DSL 语言默认提供了7大类搜索方法:

统计命令

统计命令由统计函数与其相关参数组成,不同的参数区别于不同的类型和数量,可以快速的进行聚合、分类统计。

分组标准

分组标准定义作用于数据检索结果,依据相应的分组标准将总数据集划分成若干子集。

范围查询

可快速发现满足一定条件参数的事件,例如检索交易响应时间大于、等于、小于800ms 的事件。

正则表达式

可以定义正则表达式匹配检索的事件,得到想要的检索结果。

布尔值

利用 AND、OR、NOT 和( )的组合,可以自由构造各种复杂的组合查询语句。

字段过滤

字段过滤可以显示所有的结构化/半结构化字段的统计聚合,点击其中的字段值进行过滤操作,可快速缩小事件的查询范围。

高级搜索

运用 transction、if、event 等命令进行关联关系分析、逻辑判断等高级搜索。

未来,数据检索发展方向

随着数据量爆发式的增长,数据检索的地位与日俱增,随着数据检索技术不断研发,未来发展趋势存在以下几点:

智能化

智能化是数据查询未来主要的发展方向。智能检索是基于自然语言的检索形式,机器根据用户所提供的以自然语言表述的检索要求进行分析,而后形成检索策略进行搜索。

简单化

未来数据查询语言将朝着人性化和简单化的方向发展,查询函数将更加易用、易懂,数据检索服务接口将更加“傻瓜化”,用户的学习成本将更低。

多样化

多样化首先表现在可以检索的数据形态多样化,如文本、声音、图像、动画。目前数据检索的主体是文本信息,基于内容的技术和自主意识别技术的发展,将使多媒体数据的检索变得逐渐普遍。

个性化

个性化指检索语言内容的特色化和注重个性化的服务。数据资源的指数级膨胀,使得用户在获得自己需要的数据资源时要花费大量的时间和精力。随着数据检索技术的发展,每个人的不同数据需求将凸现于标准化的“大众需求”之上,并成为数据检索技术的发展方向。

商业化

数据检索将吸引越来越多的用户,数据检索服务可以给第三方应用提供功能强大的数据查询分析功能,为数据检索语言提供了商业化的基础。

作为大数据应用的关键环节——检索技术的革新将推动大数据的发展进程。未来,DSL 检索语言将使检索技术更加智能化、人性化,对接数据源也会更加丰富,为大数据的发展起到关键支撑作用。

 

相关产品

2019-04-02T21:24:17+00:00