热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Oriented_CStore:AColumnorientedDBMSMike

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C-Store:AColumn-orientedDBMSMike相关的知识,希望对你有一定的参考价值。这篇pap

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C-Store: A Column-oriented DBMS Mike相关的知识,希望对你有一定的参考价值。


这篇paper比较老,是列存比较基础的论文

几乎所有列存,或olap的论文都会引用这篇

行存面向写,支持OLTP

列存面向读,支持OLAP

 

基于磁盘的DBMS,瓶颈基本在磁盘IO,所有做的工作都是用多余的cpu来换取磁盘IO

总体的思路,压缩让需要存的数据更小,densepack,更多的数据一起存,这样会更紧凑?

 

 本论文的创新点,如下

 

 

Hybrid架构

这个架构很有借鉴意义,因为一种结构很难同时满足TP和AP的需要

所以用两个系统,一个用于write-optimized,一个用于read-optimized,中间用一个tuple mover进行数据的同步

后续很多列存和ap系统都是用的这种架构

 

数据模型

这里提出的数据模型,比较有意思

Table只是一个逻辑概念,真正存储的是projections,

projection是columns的集合,并且projection之间是可以overlap的

这其实不就是把一张表,拆成多张表吗?或者可以认为是一种行存和列存的balance?类似Hbase的column family

降低了数据库管理的成本

可以对不同的projection不同的排序,当前不同排序的成本是很高的,需要多存一份数据

数据冗余可以用于数据恢复,因为一个colunm往往在不同的projections中存了多份

避免join,因为这个projection可以包含外表的字段,但是由于表拆的更小了,所以又增加了join的概率,双刃剑

 

 

数据压缩

在RS端,需要对数据进行压缩来降低磁盘IO

在WS端,就不需要加压缩了,因为本身数据在memory,而且WS只是cache实时数据,数据量不大

分成4种情况,

自身有序,大量重复,记录length

自身无序,大量重复,bitmap

自身有序,少量重复,记录delta

自身无序,少量重复,无解

并且对于数据value,可以再加上B-tree索引,因为RS是没有更新的,所以索引可以建的非常紧凑,不会有空洞,densepack

 

 

Snapshot Isolation

SI的核心问题,是在查询时间ET,我们要决定在WS和RS中哪些records是visible的?

SI,之所以是Snapshot,就是不能update in place,写不影响原来的读

所以update变成,一个insert和一个delete,这样如果我们记录下,insert和delete的时间,然后和ET比较,就可以判断这个record是否可见

这里决定以绝对时间来作为visible的判断,粒度太小,所以提出epoch

所以会保存insertion vector和deleted record vector,记录每个record的insert和delete的epoch

 

Epoch是什么,

对时间的划分

有个leader TA,会定期发送message,告诉大家可以epoch+1

然后大家会进入下一个epoch,并且等当前epoch的Transaction都结束后,reply到TA

TA收到所有的reply,就会把HWM设为改epoch,然后广播给大家,这样HWM以下的数据都是被读到的

 



推荐阅读
  • 从分布式数据库选型的第一件事谈起
    本文很长,谨慎阅读现在在我们的面前摆着太多的分布式数据库可以让我们选择,那么如果我想先让 ... [详细]
  • TLB 缓存延迟刷新漏洞 CVE201818281 解析 ... [详细]
  • 漫画:位运算系列篇(只出现一次的数字)
    今天是小浩算法“365刷题计划”第62天。仍然分享一道关于位运算颇为简单的题型,同时,从明天开始将会提高难度,大家做好准备。01PARTS ... [详细]
  • 如何实现Percona Mysql Galera多读写集群的部署
    本篇文章给大家主要讲的是关于如何实现PerconaMysqlGalera多读写集群的部署的内容,感兴趣的话就一起来看看这篇文章吧,相信看完如何实现PerconaMysq ... [详细]
  • mysql join 算法_【MySQL】之join算法详解
    在阿里巴巴的java开发手册有这么一条强制规定:超过三个表禁止join,须要join的字段,数据类型保持绝对一致,多表关联查 ... [详细]
  • 程序死锁的问题,很难调试,看进程堆栈,看各个线程与锁的情况,对照代码进行排查。数据库死锁的问题,更难ÿ ... [详细]
  • 高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。能缓存CDN服务器上的,就不要让CDN去访问源(静态服 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • Hbase1.2.0cdh5.16.2使用PREFIX_TREE编码导致集群压缩队列异常
    Hbase1.X版本中PREFIX_TREE作为BlockEncoding存在bug,会造成RegionServer节点compactionqueue持续升高,甚至影响fl ... [详细]
  • 黄东旭: 关于基础软件产品价值的思考
    黄东旭:关于基础软件产品价值的思考-好久没写东西了,正好趁着春节的节后综合症发作写写文章热身一下,记得前几年偶尔会写一些关于TiDB产品功能解读的文章,TiDB5.0发了那么长时间 ... [详细]
  • 如何设计一个秒杀系统(各方面都写的很到位)
    1.Overview1.1并发读写秒杀要解决的主要问题是:并发读与并发写。并发读的优化理念是尽量减少用户到服务端来读数据,或者让他 ... [详细]
  • helm V3版本
    1、引入(1)之前方式部署应用基本过程*编写yaml文件**deployment**Service**Ingress(负载均衡、 ... [详细]
  • MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找。好记性不如烂笔头& ... [详细]
  • 内容多有疏漏,有问题欢迎提出目录java内存模型的概念原子性(Atomicity)可见性(Visibility࿰ ... [详细]
author-avatar
小编106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有