阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:4512020
用户头像

发布了 1381 篇内容, 共 618.1 次阅读, 收获喜欢 2451 次。

关注

评论 2 条评论

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

面试不再被吊打!这才是Redis分布式锁的七种方案的正确打开方式

程序员小毕

Java 架构 面试 分布式 分布式锁

CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统

华为云开发者联盟

IoT 华为云 冷链

如何避免无效的沟通

观测云

基于云ModelArts的PPO算法玩“超级马里奥兄弟”【华为云至简致远】

科技怪咖

详谈RDMA技术原理和三种实现方式

C++后台开发

网络协议 C/C++后台开发 C/C++开发 RDMA技术 以太网

中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招

ToB行业头条

ICDAR比赛技术分享

之家技术

算法 人工只能 竞赛 ICDAR

【技术白皮书】第一章:OCR智能文字识别新发展——深度学习的文本信息抽取

合合技术团队

自然语言处理 深度学习 AI OCR 信息抽取

高效的组织信息共享知识库是一种宝贵的资源

Geek_da0866

基于Java的插件化集成项目实践

阿提说说

微服务 插件化

基于DMS的数仓智能运维服务,知多少?

华为云开发者联盟

数据库 后端 监控 智能运维

浅谈Service Mesh对业务系统的价值

HelloGeek

微服务 云原生 server mesh 微服务治理

「一篇终结JVM」:Java面试必问十个JVM核心知识点梳理

Java全栈架构师

Java 程序员 面试 程序人生 JVM

技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris

SelectDB

数据库 Doris pulsar 数据导入 kafaka

从零开始搭建MySQL主从复制架构

杨杰灵

Java MySQL 主从复制

视频人脸识别和图片人脸识别的关系

夏夜许游

人脸识别 视频人脸识别

完整的搭建内网穿透ngrok详细教程(有图有真相)

Geek_32c728

签约计划第三季

关于 Intel 在 micro-vm 快速启动的探索及实例演示 | 第 36-38 期

OpenAnolis小助手

云原生 cpu 开源社区 sig 龙蜥大讲堂

出海季,互联网出海锦囊之本地化

融云 RongCloud

元宇宙 IT业界

2021年数据泄露成本报告解读

SEAL安全

DevSecOps 数据安全 混合云 零信任 软件供应链

融云「音视频架构实践」技术专场【内含完整PPT】

融云 RongCloud

音视频技术

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

Java全栈架构师

程序员 程序人生 jdk源码 Java 面试 架构师

开源一夏 |我在滴滴做开源

石臻臻的杂货铺

开源 8月月更

豆瓣评分9.0,“Linux命令行”经典巨著升级版上市了!

图灵教育

带你了解什么是 Web3.0

liuzhen007

Web 3.0

为何微博又双叒叕崩溃了?

华仔

不可忽略!户外LED显示屏的特点及优势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案

ModelWhale

数据分析 代码复现 开放生态 协同软件 科研成果

国内首发可视化智能调优平台,小龙带你玩转KeenTune UI

OpenAnolis小助手

开源 龙蜥社区 sig KeenTune 一键式性能调优

酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式

StarRocks

绝无此例!用实例演示如何使用Spring搭建微服务框架

Java永远的神

spring 面试 微服务 springboot SpringCloud

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