写点什么

360 开源 Quicksql:更简单,更安全,更快速的跨数据源统一 SQL 查询引擎

  • 2019-01-09
  • 本文字数:1455 字

    阅读完需:约 5 分钟

360开源 Quicksql:更简单,更安全,更快速的跨数据源统一SQL查询引擎

引言

话说天下大势,合久必分, 分久必合。 ——罗贯中大大


SQL 的世界也是如此。最初 ANSI 仅仅对 SQL 提出了一种标准,于是各个数据存储厂商都自己定制了专门的 SQL 语法。也因为此,在工作中,我们常常会遇到这样的场景:


小明,刚刚参加工作,第一个任务便是查询从没接触过的 Hive 中的数据。前辈说,不要担心,你直接用查 MySQL 的 SQL 语句查询就好。小明颤颤巍巍写下了第一个 SQL 查询语句,确实能跑。但是随着业务复杂度增加,SQL 的复杂度也随之提升,他渐渐发现 Hive 和 MySQL 的 SQL 语法并不完全一样,平时查询需要区别对待,不停切换。他想知道,有没有一种 SQL 可以支持业内主流的数据存储引擎?


小红,参加工作 2 年。已经学会使用 MySQL、Hive、Oracle 等不同存储引擎的 SQL 语句查询数据。这时,上司说要引入 Elasticsearch。她发现这个数据存储引擎并不能通过 SQL 查询,而是需要编写复杂的 json 查询。渐渐地,她发现类似的存储引擎越来越多,Druid、Redis、Mongo、HBase 等,并且每一种都需要采取不同的方式查询数据,分析一个业务场景所需要切换的查询方式也越来越多。她想知道,可不可以使用 SQL 语言查询 No-SQL 乃至 New-SQL 的数据存储?


所以嘞,Quicksql(简称 QSQL)诞生啦!

Quicksql 是什么

Quicksql 是一个更简单,更安全,更快速的跨数据源统一 SQL 查询引擎。它帮助用户减少在使用不同数据引擎时需要的学习成本和切换成本,忽略不同数据引擎底层存储和数据查询方式的差异,使用户仅需要关注查询的业务逻辑和数据本身。

Quicksql 能做什么?

  1. 统一 SQL 语法:提供统一 SQL 语言,支持不同结构化数据存储查询,方便用户学习。

  2. 多数据存储引擎查询:提供 SQL 查询 No-SQL\New-SQL 等数据存储引擎,方便使用。

  3. 数据联邦:支持跨数据源查询,例如 MySQL join Elasticsearch union Hive。

  4. 方便扩展:分层灵活,Quicksql 可以很方便的扩展多种数据源(Druid、Mongo 等),扩展多种计算引擎(Spark、Flink 等)。

如何使用 Quicksql?

Quicksql 现在提供三种对外服务方式:命令行,API 和 JDBC 连接。


  • 命令行: 根据 Quicksql 的 Github 主页相关说明,用户可以很容易的进行 Quicksql 的部署。部署完成后,Quicksql 提供了脚本模式,支持使用类似 “qsql -e [SQL]” 这样的命令进行数据查询。

  • API: 为方便开发者用户使用,Quicksql 提供了一套 API 方便开发程序调用。与 Spark、Storm 等现有的引擎类似,Quicksql API 在使用中需要先定义环境参数(任务名,执行引擎,查询最大返回条数等),然后进行 SQL 的查询和任务的提交。关于 API 的用法详情可以参考 Quicksql example。

  • JDBC: Quicksql 还实现了 JDBC 的接口,用户可以像连接 MySQL 一样通过 JDBC 方式连接 Quicksql 进行数据查询。

Quicksql 是怎么实现的?

Quicksql 基于 Apache Calcite 提供的多数据引擎 SQL 语义适配功能,基于 ANSI 发布的 SQL 2003 标准和用户的使用习惯上,重新定义并扩展部分 SQL 语义,对用户提供了统一的 SQL 语言。在内部,Quicksql 会根据用户所查询的 SQL 语句,在原语义的基础上,进行解析转化等操作,最终根据数据引擎特性将用户的查询语义完整的转化为数据引擎可执行的 SQL 语句。Quicksql 还拥有智能选择功能,可以根据该 SQL 的引擎特性决定最快速最高效的数据查询方式,例如,当 Quicksql 分析得出查询语句是一个混合查询,它就会自动选择启动集群模式(默认是 Spark)进行数据处理。



想知道更多?这里就是开源主页啦: https://github.com/Qihoo360/Quicksql


有问题还可加入 QQ 群和 360 的技术人员一起交流。QQ 群号:932439028


2019-01-09 08:4512646
用户头像

发布了 1544 篇内容, 共 730.5 次阅读, 收获喜欢 2520 次。

关注

评论 2 条评论

发布
用户头像
q请问,这个可以用来做多租户吗?
2020-12-16 14:56
回复
用户头像
不错的项目,试试ES查询
2019-01-09 09:30
回复
没有更多了
发现更多内容

阿里巴巴中国站按关键字搜索商品 API接口使用指南:快速获取商品ID、名称、描述、价格

技术冰糖葫芦

API Explorer API 文档

广州等级保护测评公司一览表2024

行云管家

等保 堡垒机 等级保护 等保测评

解锁ETLCloud中Kettle的用法

谷云科技RestCloud

kettle 数据同步 ETL 数据集成

BSN-DID研究--主题二:发证方函数

BSN研习社

区块链 BSN did

【荣誉】第七在线出席ToB商业头条行业大会 斩获创新力产品奖

第七在线

人工智能,应该如何测试?(七)大模型客服系统测试

霍格沃兹测试开发学社

DACI决策框架,给低效能企业一个机会

填空时光

项目管理 效能提升 效能工具 决策管理

天翼云超大规模高性能云基础底座、“息壤”获国资委权威认可!

编程猫

云服务器干嘛的?带你掌握云计算的优势

一只扑棱蛾子

云服务器

提升团队工程交付能力,从“看见”工程活动和研发模式开始

阿里云云效

阿里云 云原生 云效

思考-使用JSON结构映射业务数据与数据库表结构

alexgaoyh

json 数据库 系统设计 映射

2024年LED显示屏租赁屏市场

Dylan

商业 LED显示屏 全彩LED显示屏 led显示屏厂家 舞台表演

日志系统:一条SQL更新语句是如何执行的?

TimeFriends

企业智能体(Agent)来袭!拥有“无限可能”的数智化AI底座

行云创新

AI 智能体 agent

我们是如何测试人工智能的(六)推荐系统拆解

测试人

人工智能 软件测试 自动化测试 测试开发

5个为什么要做外贸网站推广的理由

九凌网络

人工智能,应该如何测试?(八)企业级智能客服测试大模型 RAG

霍格沃兹测试开发学社

提升团队工程交付能力,从“看见”工程活动和研发模式开始

阿里巴巴云原生

阿里云 云原生 云效

为什么中小企业普遍选择IT运维外包了?

Ogcloud

IT运维 IT外包 IT外包公司 IT外包服务 IT运维外包

做跨境电商,为什么要建独立站

Noah

教你如何使用Zig实现Cmpp协议

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云短信服务 企业号2024年4月PK榜

KaiwuDB 成功入选《2023 ToB 行业影响力价值榜 · 创新力产品榜》

KaiwuDB

数据库

Sam Altman 联手苹果前首席设计官打造 AI 设备;特斯拉将推出无人驾驶出租车丨 RTE 开发者日报 Vol.178

声网

企业级依赖管理: 深入解读 Maven BOM

LightGao

maven 设计模式 架构设计 软件系统 java 架构

一文读懂模块化赛道新的头部公链Meta Earth

加密眼界

行云防水堡-打造企业数据安全新防线

行云管家

网络安全 数据安全 防水堡

人工智能,应该如何测试?(四)模型全生命周期流程与测试图

霍格沃兹测试开发学社

人工智能,应该如何测试?(六)推荐系统拆解

霍格沃兹测试开发学社

去哪儿完成鸿蒙原生应用Beta版本开发,带来一站式在线旅行体验

最新动态

IT外包服务助推企业产业融通

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT外包企业

360开源 Quicksql:更简单,更安全,更快速的跨数据源统一SQL查询引擎
_数据库_InfoQ 中文站_InfoQ精选文章