欢迎点击此处关注公众号
数据库与数据仓库的区别实际讲的是 OLTP 与 OLAP 的区别。
操作型处理,叫联机事务处理 OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发的支持用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理,叫联机分析处理 OLAP(On-Line Analytical Processing)一般针对某些主题历史数据进行分析,支持管理决策。
大量 key 为空值的情况,所有空值进入一个 reducer 中导致倾斜。
解决:对空值加随机数打散到多个 reducer 中处理。
事实表的通常可以划分为如下三类:
事务事实表又可以分为:
以订单过程为例,一个订单业务过程可以简化为下单和支付两个业务事件,两个事件共享一个订单 Id 及相应商品的维度信息,但这两个事件可以有不同的业务度量,举例来讲就是下单时有下单金额,支付时有实际支付金额,优惠金额等等。
对于数仓建设来讲,在描述订单业务过程,设计订单事实表模型时,就会面临一个选择:将下单和支付两个业务事件拆开,分别构建单事务事实表还是构建一张多事务事实表。
单事务事实表:
多事务事实表:
上面两种方案的出发点都是在与每个分区只保存增量的数据,尽量避免存储上的浪费,同时分区数据量减少,也可以提升查询计算的速度,降低计算的开销。
都可以用于复杂查询,实时计算返回结果。
Elasticsearch 提供全文检索功能,最擅长的主要是完全搜索场景(where过滤后的记录数较少),在内存富裕运行环境下可以展现出非常出色的并发查询能力。但是在大规模数据的分析场景下(where过滤后的记录数较多),ClickHouse 凭借极致的列存和向量化计算会有更加出色的并发表现,并且查询支持完备度也更好。ClickHouse的并发处理能力立足于磁盘吞吐,而 Elasticsearch 的并发处理能力立足于内存 Cache,这使得两者的成本区间有很大差异,ClickHouse 更加适合低成本、大数据量的分析场景,它能够充分利用磁盘的带宽能力。数据导入和存储成本上,ClickHouse 更加具有绝对的优势。
总结:ES 适合复杂的聚合查询,HBase 适合简单查询。
ElasticSearch
优点
(1) 其实就是一个搜索引擎,底层是 lucene,支持全文搜索;
(2) 能够满足国内大多数人的全文搜索的需求,百度、Google 就是使用 es 做的全文搜索;
(3) es 可以为你自动建立索引,实现高性能的复杂聚合查询;
(4) 在复杂的查询也能够达到不错的性能,让开发者不用为如何建立索引而头痛。
缺点
最明显的就是字段类型无法修改、写入性能较低、高性能资源消耗。
应用场景
es 的全文搜索使他称为构建搜索引擎的利器,除此之外,es 适合复杂的聚合查询,这一特点还使得 es 非常适合做数据分析使用。
HBase
优点
(1) 继承了 hadoop 项目的优点,适合对海量数据的支持;
(2) 极强的横向扩展能力;
(3) 使用廉价的 PC 机就能够搭建起海量数据处理的大数据集群。
缺点
对数据的读取带来了局限,只有同一列族的数据才能够放在一起,而且所有的查询都必须依赖于 key,这就使得很多复杂的查询难以实现。
应用场景
由于列式存储的能力带来了海量数据的容纳能力,因此非常适合数据量极大、查询条件简单、列与列之间联系不大的场景。
ODS DWD DWS DIM APP
星型模型:一级维度表
雪花模型:多级维度
ER 模型:遵循三范式,大数据开发不用