C-Store论文阅读笔记
C-Store论文由今年的图灵奖获得者Mike Stonebraker提出来,整体架构在数据库领域相当不错。数据库采用读写分开存的架构,只写块的数据定期会和只读块儿的数据进行合并,产生新的只读块儿。而C-Store在只读块儿部分做了读优化操作,这一点相当不错。
1. 数据模型
猜想商业数据库的Clustrix的存储数据模型就是收到了这篇论文的影响,所以才会有C-Store论文中提到的这样的数据模型构造。首先需要明确的一点是,C-Store本身是列数据库,所以存储数据是按照列为单位来进行存储,这样就可以玩出很多花样来,比如列压缩,列索引之类的。对于查询方面的优化是无疑的。
在数据模型方面,有两个重要的概念,一个是projection,一个是Segment。可以这么理解,projection是对表的纵切,而Segment是对表的横切。举一个实际的例子:
Name | Age | Dept | Salary |
---|---|---|---|
Bob | 25 | 5 | Math |
Bill | 27 | EECS | 50K |
Jill | 24 | Biology | 80K |
那么一个projection可以是这样
Name | Age |
---|---|
Bob | 25 |
Bill | 27 |
Jill | 24 |
一个Segement可以是这样
| Name | Age |
| -------- | ----- |
| Bob | 25 | 5 |
projection更类似与一个列族的概念,而Segement更像是一个行表的概念,只是对一个projection进行切分。
2. 压缩模型
列数据相对于行数据库而言,最大的优势就是压缩了,在C-Store这篇论文里面,针对RS(Rea-optimized Store)这一块儿的数据进行了压缩,论文里面探讨了四种情况下的压缩方案:
- Self-order,few distinct values:内排序并且少许不一样的数据,也就是说,这一列的数据是排好序的同时,重复数据比较多,那么压缩方案就好办了。利用一个三维向量表示(v,f,n),其中v表示value,f表示该value出现的位置,n表示该value重复的次数,例如在12-18号位置出现了4,那么就可以表示为(4,12,7)。
- Foreign-order,few distinct values: 这种情况下,采用位图压缩的方式对这一列进行压缩,例如一个列的值序列如下为 0,0,1,1,2,1,0,2,1,那么压缩的方式为(0,110000100),(1,001101001),(2,000010010)也就是如果该value出现在哪一号位置,就在对应的位图位置上置1。
- Self-order,many distinct values: vaues:在这种情况下,前面的两种压缩方案都不会适用了,在C-Sotre论文中提到了一种增量压缩的方式,在一列数据中,每一个值都可以由他的前一项进行推导出来,例如一个列数据序列1,4,7,7,8,12,那么压缩之后,这个序列变为:1,3,3,0,1,4。
- Foreign-order,many distinct values: 在这种情况下,压缩基本不可能实现,但是可以用一颗紧凑的B+树对其进行索引。
C-Store论文阅读笔记的更多相关文章
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- Nature/Science 论文阅读笔记
Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
- 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification
论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...
- [论文阅读笔记] GEMSEC,Graph Embedding with Self Clustering
[论文阅读笔记] GEMSEC: Graph Embedding with Self Clustering 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 已经有一些工作在使用学习 ...
- [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks
[论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...
随机推荐
- null值处理
一,在实体类的上面加注解 import com.fasterxml.jackson.annotation.JsonInclude @JsonInclude(JsonInclude.Include.NO ...
- PAT_A1122#Hamiltonian Cycle
Source: PAT A1122 Hamiltonian Cycle (25 分) Description: The "Hamilton cycle problem" is to ...
- Day4 循环结构
for-in循环 如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环,例如下面代码中计算$\sum_{n=1}^{100}n$. range函数用法 ...
- eas之排序接口
KDTable目前本身并不支持排序功能,但提供了排序的接口,用户通过实现该接口(ISortManager)即可实现排序的功能.同时KDTable提供了一个简单实现KDTSortManager,这个类完 ...
- Bamboo Django Celery定时任务和时间设置
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...
- 转载:Java中的Checked Exception——美丽世界中潜藏的恶魔?
转自 Amber-Garden 的 博客 https://www.cnblogs.com/loveis715/p/4596551.html 在使用Java编写应用的时候,我们常常需要通过第三方类库来帮 ...
- SDWC2017游记
果然我还是那么弱啊.——$Mingqi_H.$ Day -1 下午五点半回家.然而并没有什么事情可做.依旧是下载$Magical\,Mirai$,找一个黄油存起来. emmm...本来是打算去开发区那 ...
- 09.正则表达式re-3.常用的匹配规则
模式 描述 \w 匹配字母.数字及下划线 \W 匹配不是字母.数字及下划线的字符 \s 匹配任意空白字符,等价于[\t\n\r\f] \S 匹配任意非空字符 \d 匹配任意数字,等价于[0-9] \D ...
- 在微信小程序里使用 watch 和 computed
在开发 vue 的时候,我们可以使用 watch 和 computed 很方便的检测数据的变化,从而做出相应的改变,但是在小程序里,只能在数据改变时手动触发 this.setData(),那么如何给小 ...
- LCS,LIS,LCIS
网站:CSUST 8月3日(LCS,LIS,LCIS) LCS: 以下讲解来自:http://blog.csdn.net/yysdsyl/article/details/4226630 [问 ...