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 本文结构 解决问题 主要贡献 算法 ...
随机推荐
- struts与spring整合
Spring与Struts框架整合 Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给 ...
- python 生成HTmL报告页面
计划做一个html页面 py3.4 代码: # -*- coding=utf-8 -*- # import time,os class Template_mixin(object): "&q ...
- loadrunner报错总结
1.报错 没有缓存空间可用 TCP超时释放时间?是解决刚才那个报错的? 解决方法如下 修改TcpTimedWaitDelay值为1和MaxUserPort值为65534.最后,重启! 完美 ...
- 混合元素app的H5元素定位
问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...
- (21)Spring Boot过滤器、监听器【从零开始学Spring Boot】
Spring Boot 系列博客] )前言[从零开始学Spring Boot] : http://412887952-qq-com.iteye.com/blog/2291496 )spring boo ...
- (12)Spring Boot改变JDK编译版本【从零开始学Spring Boot】
Spring Boot在编译的时候,是有默认JDK版本的,如果我们期望使用我们要的JDK版本的话,那么要怎么配置呢? 这个只需要修改pom.xml文件的<build> -- <plu ...
- hdu 1598 暴力+并查集
#include<stdio.h> #include<stdlib.h> #define N 300 int pre[N]; int find(int u) { if(u!=p ...
- asp.net常用容器
autofac就是ioc的第三方的IOC容器 unity也是IOC容器 掌握这两个容器就可以了,非常简单
- hdu 4865 Peter's Hobby(2014 多校联合第一场 E)
Peter's Hobby Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- ASP怎样检測某目录是否存在,不存在则自己主动创建
ASP怎样检測某目录是否存在,不存在则自己主动创建 folder=server.mappath("/imagess") Set fso = CreateObject(" ...