数据库总结:哈希索引

概念:

  1. 索引: 基于原始数据派生而来的额外数据结构,适当的索引可以加速读取查询,但每个索引都会减慢写速度;
  2. 哈希索引:把每个键一一映射到数据文件中特定的字节偏移量;

存在问题
哈希表需全部放入内存,如果有大量的键时(哈希冲突)时处理复杂;
区间查询效率低,后续讨论如何解决这个问题

  1. 压缩(合并):意味在日志中丢弃重复的键,并且只保留每个键最近的更新,合并时需要解决的问题:

删除记录:合并字段时,发现删除记录(称为墓碑)则会丢弃这个已删除的键。
崩溃恢复:内存中hash map丢失,原则上需从头到尾读取整个段文件来恢复,但文件过需扫描很长时间,解决方案是每个段的快照存储在磁盘上并加载到内存中。
部分写入的记录:部分损坏丢弃;
压缩:LevelDB 分层压缩,HBase大小分级压缩;
并发控制:写入以严格先后顺序追加到日志中,通常是只有一个写线程:

追加效率高原因:
后续比较B-tree 和LSM-tree问题

  1. SSTables :(数据结构较复杂)

特点:
数据在 SSTable 中按照主键有序存储,每个 SSTable 由若干个大小相近的数据块组成,每个数据块包含若干行。数据块的大小一般在8~64KB之间,允许用户配置;
每个键在合并的段文件中只出现一次(压缩过程已经确保),可并发读取多个文件;

  1. LSM-tree

前提:顺序磁盘访问要比随机访问快很多。所以磁盘有如下技术特性:对磁盘来说,能够最大化的发挥磁盘技术特性的使用方式是:一次性的读取或写入固定大小的一块数据,并尽可能的减少随机寻道这个操作的次数
解决的问题: 数据集大于内存时可正常工作;

7.B-trees

最常见的索引类型;
将数据库分成固定大小的块或页(4kb),这种设计接近硬件, 磁盘也是固定大小的块排列;
LSM-tree 比 B-tree写入更快,后者读取更快;

  1. OLTP OLAP 数据仓库

online transaction processing在线事务处理
online analytic processing 在线分析处理
ETL :extract-transform-load 提取转换加载

10.一些概念

事实表:每一行标识特定时间发生的事件;(宽表—>列存储—>列压缩)
维度表:代表事件的对象,如某刻卖出一件商品这个事件关联id为维度表的各个属性;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值