写点什么

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

  • 2012-10-22
  • 本文字数:1021 字

    阅读完需:约 3 分钟

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

  • 高速缓存感知
  • 指令流水线
  • 使用 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2012-10-22 06:262927
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 140.9 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

Springboot拦截器使用及其底层源码剖析

南方有乔木兮

【写作群星榜】7.24~7.31 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

机器学习基石第五节 学习笔记

Geek_4z9ami

Machine Learning

数据结构与算法之排序

shirley

排序算法

并发编程基础原理

刚刚🏂

机器学习基石第四节 学习笔记

Geek_4z9ami

Machine Learning

Go: 并发访问 Map — Part III

陈思敏捷

并发 map sync Go 语言

dubbo-go 中使用 sentinel

apache/dubbo-go

dubbo sentinel Go 语言

继oneAPI之后,英特尔为异构计算跨架构编程再添“利器” 发布全新机器编程系统

最新动态

Android Development最佳实践

teoking

JVM系列:通过一个例子分析JIT的汇编代码

简爱W

ARTS打卡Week 09

teoking

一年多远程工作经验,说说真实的感受

盛安德软件

机器学习基石第一节 学习笔记

Geek_4z9ami

Machine Learning

机器学习基石第二节 学习笔记

Geek_4z9ami

Machine Learning

我收集的 3 个企业经营“失败”案例

霍太稳@极客邦科技

腾讯安全领御区块链与张裕集团达成战略合作,打造高端葡萄酒区块链溯源平台

CECBC

产品溯源 无法篡改

信创舆情一线--抖音、微信读书被判侵害用户个人信息权益

统小信uos

机器学习基石第三节 学习笔记

Geek_4z9ami

Machine Learning

秒杀系统

俊俊哥

秒杀

Java七种排序算法以及实现

狸猫换太子

Java 排序算法 实现

IDEA 插件找不到?看这里!那就自己敲一个!

程序员小航

json IDEA 开发工具 idea插件 IntelliJ IDEA

Java异步之《我call(),Future在哪里》

BUZHIDAO

LeetCode题解:189. 旋转数组,使用新数组Copy,JavaScript,详细注释

Lee Chen

大前端 LeetCode

webRTC框架下的视频主动丢帧

fumingwang

音视频 WebRTC

零代码可视化开发平台iVX是什么?

代码制造者

编程语言 可视化 零代码 iVX

助力银行核心下移,监控分布式数据库,融天鹰眼轻松应对五大挑战

DT极客

如何进行需求梳理及埋点方案设计

易观大数据

(政务上链)新数据孤岛、安全风险等问题待解

CECBC

工作效率 公开透明 新技术

密码朋克的社会实验(三):比特币发明了什么

腾讯安全云鼎实验室

比特币 区块链 密码学

职场求生攻略答疑篇之 2 —— 无所适从的向上沟通

臧萌

使用Google Supersonic查询列存储数据库_开源_Abel Avram_InfoQ精选文章