【评】
这篇文章让俺深刻意识到天有多高。
俺优化性能时,一般以毫秒为单位;但作为系统软件,显然是在微妙级别。
一秒钟167亿行数据。。。
备份。
【转贴】
使用Google Supersonic查询列存储数据库
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 毫秒。
http://news.cnblogs.com/n/161098/
http://www.infoq.com/news/2012/10/Google-Supersonic
Subscribe to:
Post Comments (Atom)
20211004: 心目中近几十年最愚蠢的科研成果
1. 氢燃料汽车 先不考虑安全性。设计者有没有考虑过一公斤液氢的体积,以及容器的质量? 液氢来自于天然气,碳排放咋办? 绿色氢气? 先不考虑成本。 太阳能面板生成一百度电,转成氢气再用于汽车驱动,总损耗约 80% 太阳能面板生成一百度电,输送到电动汽车用于驱动,总损耗约 30%...
-
疫情前在日本玩过十几天。今年,又在日本玩了两周。主要是滑雪温泉和东京区。 日本,真的非常非常独特:穿越几百年的时光仿佛被直接融合在了一起。不仅仅是物质世界,精神世界同样如此。 1. 现金 (古代) 现金是日本的绝对王者。 虽然有传闻,说信用卡和 IC 卡被普遍接收,但要想通行无阻...
-
常识: 如果一个规律对这个世界和我们的生活不会造成深远影响,就不重要。 1. 熵增 熵可以理解为"失序" 为什么熵增重要?因为它可以解释很多基本问题,甚至一些认知范围以外的问题。例如,是否存在一个简单的办法对是否正确进行判断?AI 的终极目标是什么? 以此为基...
-
炒菜锅换了无数个,失望一次又一次。 不管是什么不粘锅,不管用得多么小心,不管什么价位,都撑不过一年。 为什么? 显然,认知出问题了。 在查阅了大量资料,并不断尝试后,终于发现问题所在。 不粘锅之所以不粘,是因为表面涂层。常见的涂层是超级塑料。 塑料可以均匀传递热量,同时不沾油,但...
No comments:
Post a Comment