用于 Web 和大数据的通用 SQL 引擎 :nQuery

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 用于 Web 和大数据的通用 SQL 引擎。

安装

NodeJS 版本 0.8.0+

npm install node-query

简介

它可以用于一些典型的场景:

  • 作为 SQL 前端,进行语法检查和格式化。
  • 作为 KV 数据库(如 HBase 或类似的东西)的 SQL 引擎。
  • 为您的 HTTP/WEB 服务提供 SQL 接口。
  • 在 Oracle、MySQL、HBase 等许多不同的数据源之间进行数据合并和集成。

演示和测试

要运行演示,请键入命令:

node demo/demo.js

对于测试,输入命令:

make

仔细阅读演示然后你可以编写自己的加载器/适配器,其中也有很多测试用例test/unit,它们对你很有帮助。

用法

请阅读演示文件 demo/demo.js

对于 KV 存储引擎,您需要做的是提供如下查询接口:

  • singleQuery,
  • rangeQuery,
  • likeQuery

对于 SQL 存储引擎,您应该实现如下功能:

function query(str, function(err, data) {
  ...  
})

那么你可以像这样执行 SQL :(来自 的代码片段demo.js

var sqls = [
  "SELECT * FROM kv.user WHERE id IN ('01', '03')",
  "SELECT * FROM kv.user WHERE id LIKE '1%'",
  "SELECT type, MAX(age), COUNT(id) FROM kv.user WHERE id BETWEEN '03' AND '10' GROUP BY type ORDER BY MAX(age) DESC",
  "SELECT * from mysql.shop where shop_id > 5"
]
var concurrentJoinSQL = [
  "$a := select * from kv.user where id BETWEEN '03' and '10'",
  "$b := select * from mysql.shop where shop_id > 5",
  "$c := select a.type , a.id ,b.name, b.title from $a INNER JOIN $b ON a.type = b.type WHERE a.id > '04'",
  "return $c"
]
var sequentialJoinSQL = [
  "$a := select * from kv.user where id BETWEEN '03' and '10'",
  //you could also use `unique` do filter firstly
  //"$type := UNIQUE($a.type)",
  //"$b := select * from mysql.shop where type = $type",
  "$b := select * from mysql.shop where type in $a.type",
  "$c := select a.type , a.id ,b.name, b.title from $a INNER JOIN $b ON a.type = b.type WHERE a.id > '04'",
  "return [$b, $c]"
]

如你所见,除了作为建立在 KV 存储引擎之上的 SQL 计算层之外,它现在还可以在 kv 数据源、sql 源、HTTP 服务之间进行 join 操作

nSQL 定义

在“有点怪” SQL正如你看到的上面,nSQL实现SQL92的一个子集,它也有一些程序的功能,它支持变量,所以就将此类型var / array/ table,也关键字return,获取详细信息,请参阅规范的peg/nquery.pgejs

任务调度

正如你在中看到的concurrentJoinSQL,我们知道任务$a$b没有关系,所以 nQuery 会并发地做它们,但是对于sequentialJoinSQL$b是依赖的过程$a,所以任务$b会在时间$a完成后执行

关键词 return

在传统 SQL 中,查询结果是一个二维表,但是在 nSQL 中,我们添加了array /类型 table,因此现在您可以返回复杂的结果,例如

return [$b, $c, 'hello', [1, 2]]

尽情享受吧!

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
2月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
178 99
|
27天前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
665 32
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
21天前
|
JavaScript 前端开发 开发者
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
2月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
108 47
|
16天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
16天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
21天前
|
JavaScript 前端开发 物联网
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
21天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
3月前
|
分布式计算 关系型数据库 MySQL
【赵渝强老师】大数据交换引擎Sqoop
Sqoop是一款开源工具,用于在Hadoop与传统数据库如Oracle、MySQL之间传输数据。它基于MapReduce实现,支持数据导入导出、生成Java类及Hive表结构等操作,适用于大数据处理场景。
101 3
【赵渝强老师】大数据交换引擎Sqoop