DataQL 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
DataQL 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

什么是DataQL?

DataQL(Data Query Language)DataQL 是一种查询语言。旨在通过提供直观、灵活的语法来描述客户端应用程序的数据需求和交互。

数据的存储根据其业务形式通常是较为简单的,并不适合直接在页面上进行展示。因此开发页面的前端工程师需要为此做大量的工作,这就是 DataQL 极力解决的问题。

例如:下面这个 DataQL 从 user 函数中查询 id 为 4 的用户相关信息并返回给应用。

1
2
3
4
5
return userByID({'id': 4}) => {
    'name',
    'sex',
    'age'
}

返回结果:

1
2
3
4
5
{
    'name' : '马三',
    'sex'  : 'F',
    'age'  : 25
}

在比如:性别数据的字典映射,为此您可以通过 DataQL 的表达式进行快速的转换。从而无需任何服务端和前端的开发。

1
2
3
4
5
return userByID({'id': 4}) => {
    'name',
    'sex' : (sex == 'F') ? '男' : '女' ,
    'age' : age + '岁'
}

返回结果:

1
2
3
4
5
{
    'name' : '马三',
    'sex'  : '男',
    'age'  : '25岁'
}

还可以定义一个查询函数来重用这一逻辑。

1
2
3
4
5
6
7
8
var sex_str = (sex) -> {
    return (sex == 'F' ? '男' : '女');
}
return userByID({'id': 4}) => {
    'name',
    'sex' : sex_str(sex),
    'age' : age + '岁'
}

架构

../_images/CC2_5C5A_6D1E_18C4.png

特性

DataQL 有一些设计原则,这也使其成为有一定的特性。

  • 层次结构:多数产品都涉及数据的层次结构,为了保证结构的一致性 DataQL 结果也是分层的。

  • 数据为中心:前端工程是一个比较典型的场景,但是 DataQL 不局限于此(后端友好性)。

  • 弱类型定义:语言中不会要求声明任何形式的类型结构。

  • 简单逻辑:具备简单逻辑处理能力:表达式计算、对象取值、条件分支、lambda和函数。

  • 编译运行:查询的执行是基于编译结果的。

  • 混合语言:允许查询中混合任意的其它语言代码,典型的场景是查询中混合 SQL 查询语句。

  • 类 JS 语法:类JS语法设计,学习成本极低。

基于这些原则和特性,DataQL变为构建应用程序的强大而高效的环境。

目前 DataQL 提供了 Java 版的指令执行引擎,使用这个引擎您只需要依赖一个 Jar 包即可。任何一个Web应用或者 Spring Boot 的 jar 应用使用都变得非常容易。

 

 

请注意 DataQL 不是一门脚本语言,它对逻辑的处理仅限于简单场景。DataQL 的解决问题的重点集中在:数据的聚合和转换以及过程中的简单加工处理。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
支持多库吗?
08/19 09:32
回复
举报
有关于Python项目中使用的案例没?
02/22 22:28
回复
举报
哈库纳软件作者
目前暂时没有 python 的 runtime。需要搭建一个 java 的服务,然后用 python 来请求。 预计官方这边推出 java 服务的支持,可能要等上一段时间。 建议你先自己搭一个 java 的服务, DataQL 的引擎接入比较容易。 Sql 的片段执行器,你可以私信我可以单独发给你。
02/22 22:44
回复
举报
与GraphQL几分神似,似乎更简单。
02/06 19:48
回复
举报
哈库纳软件作者
灵感来自 GraphQL。 比 GraphQL 简单很多。加入了表达式计算和 lambda ,相比 GraphQL 会强一些。
02/08 14:53
回复
举报
能够支持多语言就更好了。
2019/04/10 17:41
回复
举报
哈库纳软件作者
#DataQL# https://my.oschina.net/u/1166271/blog/1550912 《DataQL 的表达式编译(自创的一种表达式编译算法)》
2017/10/15 15:49
回复
举报
更多评论
发表于软件架构专区
04/13 18:51

DataQL 4.1.3 发布,支持 SQL 执行,从此告别 Mapper、BO、VO、DO、DAO

新增 新增 Dataway 框架 dataway 通过数据库探测机制来实现确定 SQL 执行方案。 DataQL 增加可以构建多个独立的环境。其中 dataway 使用独立的环境。 DataQL 新增 SQL 代码片段执行器,开启 DataQL + SQL 模式。支持分页模式,并兼容多种数据库。 CorsFilter web框架增加一个跨域的 Filter 工具类。 DataQL-fx DataQL F...

12
35
发表于服务端专区
02/22 14:15

Hasor 4.1.1 发布,本次更新 DataQL 带来了 Maven 插件

Hasor v4.1.1 (2020-02-22) ------------------------------------ 新增 新增 DataQL Maven 插件,会根据 *.ql 文件生成对应的 Java 调用代码。 添加 TypeSupplier 接口可以让 Hasor 有能力工作在其它 IoC 框架下。一个典型的场景就是与 Spring 整合。 DataQL:Finder 接口取消 Object findBean(String beanName) 方法 ...

0
4
发表于软件架构专区
02/04 15:36

DataQL 4.1.0 发布,服务聚合查询引擎

DataQL 服务聚合查询引擎,本次 4.1.0 发布。几乎重构,语法上有少许变化。详细参考:语法手册 本次更新增加了一个可以混合外部语法片段的新的特性,这使得在编写 DataQL 的时候可以同时混合类似 SQL 这样的查询语句。例如: 1 2 3 4 5 6 var dataSet = @@sql(item_code) <% select * from category where...

0
6
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
08/20 09:01

DataQL之语法-词法记号

词法记号 以下正式的语法规范可以用来帮助更深入的了解如何使用 DataQL 的所有特性。 源码文本 DataQL 文档表示建议使用 Unicode字符序列。但这并不是强制的,您可以通过 java.io.Reader 来读取您的字符流数据。故本文不会强调您的编写查询语言所使用的字符集。 DataQL 支持单行注释和多行注释两种注释方式。与 JavaScri...

0
0
发表了博客
08/20 09:01

DataQL(Data Query Language)新型查询语言

什么是DataQL? DataQL(Data Query Language)DataQL 是一种查询语言。旨在通过提供直观、灵活的语法来描述客户端应用程序的数据需求和交互。 数据的存储根据其业务形式通常是较为简单的,并不适合直接在页面上进行展示。因此开发页面的前端工程师需要为此做大量的工作,这就是 DataQL 极力解决的问题。 例如:下面这个...

0
0
发表于AI & 大数据专区
2017/10/15 15:46

DataQL 的表达式编译原理(逆波兰)

憋了两周多这个算法算是憋出来了。大体思路是通过 parser 解析表达式,产生一颗 AST 树。然后将 AST 编译成指令序列。 举个例子:12 + 12 * 2 - 12,根据先算乘除后算加减的规则表达式要被编译成:12,12,2,*,+,1...

9
8
发表于软件架构专区
04/20 12:25

无需代码!通过 Dataway 配置一个带有分页查询的接口

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面...

8
3
发表于开发技能专区
04/16 15:05

Dataway 配置数据接口时和前端进行参数对接

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面...

6
6
发表于程序人生专区
08/22 09:30

绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!

来自:开源中国,作者:哈库纳 链接:https://my.oschina.net/ta8210/blog/3234639 Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需...

0
0
11/15 08:00

绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布,一站式都通过 Dataway 提供的 UI 界面...

0
0
05/31 11:27

这款SpringBoot脚手架不再需要写Controller、Service、DAO、Mapper了

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面...

0
0
发表于开发技能专区
06/05 12:20

震惊了!这款神器竟然可以让SpringBoot 不再需要Controller、Service、DAO、Mapper!

点击上方“Java专栏”,选择“置顶或者星标” 第一时间阅读精彩文章! 1、☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 2、☞ 《Java面试手册》.PDF 点击查看 # Dataway介绍 Dataway 是基于 DataQL...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
6 评论
95 收藏
分享
返回顶部
顶部