使用Google Supersonic查询列存储数据库

Supersonic是Google开发的一款面向列存储数据库的查询引擎库,它利用高速缓存感知算法、SIMD指令和矢量化执行等技术,实现对现代处理器能力的有效利用。该引擎支持多种操作和表达式,例如聚合、计算、过滤等,并且可以进行组合以构建复杂的查询逻辑。

Supersonic是一个面向列存储数据库的查询引擎库,它提供了一组数据变换原语。而且Google宣称,因为“大量使用了高速缓存感知算法、SIMD指令和矢量化执行,使之能够开发出现代超级流水线处理器的能力与资源”,这些数据变换原语“超级快速”。Supersonic有以下主要特性:

\
  • 高速缓存感知7a1358e421c7cc9eafba81b813a4d9a8.png\
  • 指令流水线\
  • 使用SIMD(Single Instruction Multiple Data,单指令多数据)\
  • 定制数据结构\
  • 失效处理\
  • 支持标准的列存储操作\
  • 专门化的表达式\

Supersonic支持大量的操作(operation),这些操作既可以用于整个表,也能组合为操作树:

\
  • 聚合:SUM、MIN、MAX、COUNT、CONCAT、FIRST、LAST\
  • 计算:将表达式(下面有更多关于表达式的信息)转换为操作\
  • 过滤:过滤列存储表的行\
  • 生成:创建一定数量的没有列的行\
  • 限制:限制从前一操作所得结果的行数\
  • 排序:将前一操作的结果排序\

与操作不同的是,表达式(expression)应用于行级,负责在单个的列值上执行真正的计算。表达式也可以组合成表达式树。下面列出一些表达式:

\
  • 末端:叶节点,其中包含的是基本类型,如ConstInt32、ConstBool、ConstDataType、RandInt32等\
  • 算数运算:Plus、Minus、Multiply等\
  • 比较运算:Equal、Less、Greater、IsOdd等\
  • 日期/时间运算:Now、Day、Month、Year、Hour、Minute、Second、AddDays等\
  • 逻辑运算:And、Or、AndNot、Xor、Not\
  • 控制流:If、IsNull、IfNull、Case\
  • 数学运算:Exp、Sin、Cos、Abs、Round、Floor、Trunk、Sqrt、Power等\
  • 字符串:ToString、Concat、Length、Trim等\

Supersonic使用C++编写,而且没有内置的数据存储格式,但是现在有“很强的意图”来创建一个。数据当前保存在内存中。

\

Supersonic查询引擎基于Apache License 2.0许可发布,可以从它的Google Code网站下载。为了说明针对列存储表如何使用操作与表达式,源代码中提供了大量的例子

\

附图是Supersonic团队给出的,表示按如下方式处理一个行数为1M的表所得到的带有基准测试结果的操作树: 一个视图的获取要花费60微秒(速度为16.7G rows/s),随后过滤用掉1.03毫秒(速度为1M rows/s),后面是一个耗时25微秒的计算(速度为41.2M rows/s),然后结果与另一个过滤结合,整个测试耗时22.1 毫秒。

\

查看英文原文Querying Columnar Databases with Google Supersonic

\\

感谢崔康对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

腾讯 SuperSonic 是腾讯自研的项目,内置了 Headless BI 功能,核心理念是将数据建模、管理和消费进行解耦。通过这种架构,业务分析师只需在 Headless BI 平台上定义指标和标签,无需关心底层数据源的具体实现[^1]。 ### 功能 - **语义建模与数据解耦**:能够连接多种数据源并进行统一的语义建模,兼容企业现有的数据存储架构。业务分析师可在 Headless BI 平台定义指标和标签,与底层数据源实现解耦[^1][^2]。 - **自然语言查询与可视化呈现**:用户通过问答对话界面,使用自然语言查询数据,系统会选择合适的可视化图表呈现结果。且不需要修改或复制数据,只需在物理数据模型之上构建逻辑语义模型,即可开启数据问答体验[^4]。 - **可插拔框架与功能扩展**:采用 Java SPI 机制,设计为可插拔的框架,便于扩展定制功能[^4]。 - **AI 驱动的 BI 分析**:支持私有化部署和本地大模型,企业能在保护数据隐私的前提下,享受 AI 驱动的 BI 分析能力[^2]。 ### 应用场景 - **企业决策支持**:有望成为贯穿企业各业务系统的数据查询中枢,为各层级决策提供实时支持。实施时,由 IT 部门搭建服务器并连接数据库,数据团队建立核心指标的语义模型,逐步将 Chat BI 入口嵌入生产管理、库存管理等内部系统页面进行试点[^2]。 - **数据分析与科学计算**:对于对性能有高要求的 Python 开发者,或需加速数据分析、科学计算项目的人员,SuperSonic 将底层强大计算能力和 Python 简洁性结合,提供了更高效、强大的工具集[^3]。 ### 市场影响与未来展望 腾讯云 ChatBI 不断迭代升级,SuperSonic 作为其中一部分,在数据处理能力上持续增强智能选表、跨表查询等功能,提高灵活性和效率;智能分析能力方面,通过数据解读报告和数据异动智能归因,提供更深层次服务;还不断探索在不同行业和业务场景中的应用,如通过对话生成图标插入报表等[^5]。 ```python # 示例代码:假设调用 SuperSonic 进行数据查询 # 这里只是伪代码,实际需要根据 SuperSonic 具体 API 实现 def query_data(query_text): # 模拟调用 SuperSonic 接口 result = supersonic_api.query(query_text) return result query = "查询上个月的销售数据" data = query_data(query) print(data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值