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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 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]]

尽情享受吧!

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
2月前
|
分布式计算 关系型数据库 MySQL
【赵渝强老师】大数据交换引擎Sqoop
Sqoop是一款开源工具,用于在Hadoop与传统数据库如Oracle、MySQL之间传输数据。它基于MapReduce实现,支持数据导入导出、生成Java类及Hive表结构等操作,适用于大数据处理场景。
【赵渝强老师】大数据交换引擎Sqoop
|
1月前
|
SQL 分布式计算 大数据
SparkSQL 入门指南:小白也能懂的大数据 SQL 处理神器
在大数据处理的领域,SparkSQL 是一种非常强大的工具,它可以让开发人员以 SQL 的方式处理和查询大规模数据集。SparkSQL 集成了 SQL 查询引擎和 Spark 的分布式计算引擎,使得我们可以在分布式环境下执行 SQL 查询,并能利用 Spark 的强大计算能力进行数据分析。
|
2月前
|
人工智能 分布式计算 DataWorks
分布式×多模态:当ODPS为AI装上“时空穿梭”引擎
本文深入探讨了多模态数据处理的技术挑战与解决方案,重点介绍了基于阿里云ODPS的多模态数据处理平台架构与实战经验。通过Object Table与MaxFrame的结合,实现了高效的非结构化数据管理与分布式计算,显著提升了AI模型训练效率,并在工业质检、多媒体理解等场景中展现出卓越性能。
|
5月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
5月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
6月前
|
SQL 大数据 数据挖掘
玩转大数据:从零开始掌握SQL查询基础
玩转大数据:从零开始掌握SQL查询基础
254 35
|
7月前
|
SQL 关系型数据库 分布式数据库
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
183 14
|
8月前
|
SQL 存储 大数据
Flink 基础详解:大数据处理的强大引擎
Apache Flink 是一个分布式流批一体化的开源平台,专为大规模数据处理设计。它支持实时流处理和批处理,具有高吞吐量、低延迟特性。Flink 提供统一的编程抽象,简化大数据应用开发,并在流处理方面表现卓越,广泛应用于实时监控、金融交易分析等场景。其架构包括 JobManager、TaskManager 和 Client,支持并行度、水位线、时间语义等基础属性。Flink 还提供了丰富的算子、状态管理和容错机制,如检查点和 Savepoint,确保作业的可靠性和一致性。此外,Flink 支持 SQL 查询和 CDC 功能,实现实时数据捕获与同步,广泛应用于数据仓库和实时数据分析领域。
3974 32
|
6月前
|
机器学习/深度学习 搜索推荐 算法
大数据与金融科技:革新金融行业的动力引擎
大数据与金融科技:革新金融行业的动力引擎
148 0
大数据与金融科技:革新金融行业的动力引擎
|
6月前
|
SQL 存储 自然语言处理
YashanDB SQL 引擎
YashanDB SQL 引擎

热门文章

最新文章