高级数据库十:联机分析处理的索引

OLAP Indexes

对于传统的分析数据库结构大致如下

OLTP数据库保持相互独立,然后将需要的数据传输到OLAP数据库。

OLAP Schemas

决策支持系统(DECISION SUPPORT SYSTEMS)

为组织的管理,运营和计划层面提供帮助的人通过分析历史数据来帮助人们做出有关未来问题和问题的决策的应用程序。

大数据的起源就是这儿。

STAR SCHEMA

一种数据库模式。

以沃尔玛的购物系统设计为例。中间的表是Fact表,每次购物刷一次单就会产生一个这样的记录。但是它自己本身的属性只有价格和数量,其余都是外键。

外键约束来自于其他表,这些表被称为Mentioned表。

这种模式设计非常类似一棵树。

SNOWFLAKE SCHEMA

和上一个模式是同样场景的另一种模式。

在上一个模式中,mentioned表只有一层,这个模式用了更严格的规范化(在这儿是BC范式),相当于将mentioned表变成了多层的表。

两个模式的比较

这两种模式的优缺点可以参考范式的规范程度深浅的优缺点。

  • 规范化
    • Snowflake schema占用较少的存储空间
    • 非规范化数据模型可能会破坏完整性和一致性(integrity and
      consistency violations)。
  • 查询复杂度
    • Snowflake schema需要更多的Join次数
    • Star schema的查询速度一般来说会更快

索引

在Fact表上使用B+树索引会导致大量浪费的存储空间,如果这些值是重复的而且数量很低的话。

对于如下的两个表的声明

CREATE TABLE location_dim (
 id INT PRIMARY KEY,
 ⋮
 zip_code INT
);
CREATE TABLE sales_fact (
 id INT PRIMARY KEY,
⋮
 location_fk INT
 REFERENCES location_dim (id)
);

我们需要进行这样的查询。

SELECT COUNT(*)
 FROM sales_fact AS S
 JOIN location_dim AS L
 ON S.location_fk = L.id
WHERE L.zip_code = 15217

假设我们在location_dim的zip_code有一个UNclustering索引,使得我们可以用 O(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值