热门标签 | 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以下的数据都是被读到的

 



推荐阅读
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • 本文介绍如何在将数据库从服务器复制到本地时,处理因外键约束导致的数据插入失败问题。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 数据类型和操作数据表2.1MySQL类型之整型2.2MySQL数据类型之浮点型2.3日期时间型DATE1支持时间:1000年1月1日~9999年12月31日DATETIME ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
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社区 版权所有