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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 用于 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的热门话题分析
相关文章
|
3月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
230 99
|
2月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
1015 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
2月前
|
JavaScript 前端开发 开发者
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
1月前
|
数据采集 缓存 大数据
【赵渝强老师】大数据日志采集引擎Flume
Apache Flume 是一个分布式、可靠的数据采集系统,支持从多种数据源收集日志信息,并传输至指定目的地。其核心架构由Source、Channel、Sink三组件构成,通过Event封装数据,保障高效与可靠传输。
182 1
|
3月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
160 47
|
1月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
|
2月前
|
JavaScript 前端开发 物联网
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
4月前
|
分布式计算 关系型数据库 MySQL
【赵渝强老师】大数据交换引擎Sqoop
Sqoop是一款开源工具,用于在Hadoop与传统数据库如Oracle、MySQL之间传输数据。它基于MapReduce实现,支持数据导入导出、生成Java类及Hive表结构等操作,适用于大数据处理场景。
141 3
【赵渝强老师】大数据交换引擎Sqoop
|
3月前
|
SQL 分布式计算 大数据
SparkSQL 入门指南:小白也能懂的大数据 SQL 处理神器
在大数据处理的领域,SparkSQL 是一种非常强大的工具,它可以让开发人员以 SQL 的方式处理和查询大规模数据集。SparkSQL 集成了 SQL 查询引擎和 Spark 的分布式计算引擎,使得我们可以在分布式环境下执行 SQL 查询,并能利用 Spark 的强大计算能力进行数据分析。
下一篇
oss云网关配置