Column-Stores vs. Row-Stores

论文标题:Column-Stores vs. Row-Stores: How Different Are They Really?

论文: http://www.cs.umd.edu/~abadi/papers/abadi-sigmod08.pdf

概述

从论文的标题可以看出这篇论文不是陈述一种新的技术、架构,而更偏议论文一点,它主要的目的在于搞清楚对于分析类的查询为什么Column-Store比Row-Store好那么多?好在哪里?

一般认为原因是:

分析类查询往往只查询一个表里面很少的几个字段,Column-Store只需要从磁盘读取用户查询的Column,而Row-Store读取每一条记录的时候你会把所有Column的数据读出来,在IO上Column-Store比Row-Store效率高很多,因此性能更好。

而本文的目的是要告诉你Column-Store在存储格式优势只是一方面,如果没有查询引擎上其它几个优化措施的配合,性能也不会太好的,这篇论文认为Column-Store在查询引擎层有以下几种大的优化手段:

  • 块遍历(Block Iteration)
  • 压缩(Compression)
  • 延迟物化(Late Materialization)
  • Invisible Join

其中前三点是前人就已经总结过的、在现有Column-Store上实现过了的,而最后一点是本论文的创新。下面我们一一看一下这几种优化手段的细节,最后再看看它们优化效果的对比。


指标体系的应用场景 - 动态阈值

指标体系的应用场景 - 动态阈值

在指标体系的应用场景中,基于指标的告警也是指标数据的一个重要应用。

基于指标的告警一般有以下几种类型:

  • 静态阈值:大于/小于 某个具体的值则产生告警(对于明细数据,还可以用中位值/分位值进行阈值判断)
  • 同环比: 同比/环比 变化率/变化值 上升/下降超过多少产生告警
  • 动态阈值: 对比历史同时间段的基线值 产生告警
  • 异常检测:基于历史数据检测度量的异常行为。异常检测会检测指标的行为何时与过去不同,并考虑趋势和季节性
  • 离群点异常检测:离群点异常检测组内与其他成员相比异常的成员,主要用于判断指标的分组组合中哪些和其他组合差异过大
  • 预测告警:预测指标在未来的表现。通过在超出阈值之前发出警报

本篇主要介绍动态阈值的实现方案:


2023 年终总结

2023 年终总结

岁月真是匆匆,一年又一年,很多时间无暇思索,也就只在年初和年末 多愁善感,而今尤盛,因为今年终于成了程序员35岁退休热梗中的预退休人员,往后每多拿一天的薪水,都是命运的恩赐😂

每到年末,都会感叹一年中虚度的光阴,遗憾没有达成的目标,这时候都要给自己找一个冠冕堂皇的借口,好让自己逃出自我讽刺的情绪旋涡,从而让自己在新的一年重新出发

每年的目标都很燃,很艰苦,每年都达不到,也想着躺平,干嘛为难自己,但是想着再不拼博,那就真的拼不动了,35岁而已,还有一战之力,那么下一个十年到45岁之后呢?我会过什么样的人生,我又能过什么样的人生?难不成身体好铁人三项,干不动中年三宝

所以该立的目标还是不能少,做过的傻事不能忘!


什么是列式存储

什么是列式存储

在传统的行式数据库系统中,数据按如下顺序存储:

Row WatchID JavaEnable Title GoodEvent EventTime
#0 89354350662 1 Investor Relations 1 2016-05-18 05:19:20
#1 90329509958 0 Contact us 1 2016-05-18 08:10:20
#2 89953706054 1 Mission 1 2016-05-18 07:38:00
#N

处于同一行中的数据总是被物理的存储在一起。

常见的行式数据库系统有:MySQLPostgresMS SQL Server

在列式数据库系统中,数据按如下的顺序存储:

Row: #0 #1 #2 #N
WatchID: 89354350662 90329509958 89953706054
JavaEnable: 1 0 1
Title: Investor Relations Contact us Mission
GoodEvent: 1 1 1
EventTime: 2016-05-18 05:19:20 2016-05-18 08:10:20 2016-05-18 07:38:00

这些示例只显示了数据的排列顺序。来自不同列的值被单独存储,来自同一列的数据被存储在一起。


如何建设指标体系?

以下均内容来源chatGPL,

如何建设指标体系?

建立一个有效的指标体系需要遵循以下步骤:

  1. 确定公司目标:为了建立有效的指标体系,需要首先确定公司的目标和愿景。
  2. 分析公司数据:收集并分析公司的数据以了解其运营情况。
  3. 确定关键指标:根据公司目标和数据分析确定最重要的指标,这些指标将用于衡量公司的进展情况。
  4. 制定指标标准:为每个关键指标制定明确的标准,以便评估公司的表现情况。
  5. 监控指标:定期监控关键指标,以了解公司的表现情况并及时采取必要的行动。
  6. 评估指标体系:定期评估指标体系,以确保它仍然适用于公司的目标和需求,并适时进行修订。

数据中台建设方法论

kerberos的使用

kerberos的使用

KDC常用操作

kadmin.local :打开KDC控制台,需要root权限

1
kadmin.local

addprinc :添加用户

1
2
3
4
5
添加用户,密码随机
addprinc -randkey root/admin

添加用户,输入用户密码
addprinc root/admin

delprinc :删除principle

1
delprinc  hdfs/admin

Trino连接启用Kerberos认证的CDH集群

Trino 连接启用 Kerberos 认证的CDH

Kudu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kudu.authentication.type = KERBEROS

## The kerberos client principal name
kudu.authentication.client.principal = clientprincipalname

## The path to the kerberos keytab file
## The configured client principal must exist in this keytab file
kudu.authentication.client.keytab = /path/to/keytab/file.keytab

## The path to the krb5.conf kerberos config file
kudu.authentication.config = /path/to/kerberos/krb5.conf

## Optional and defaults to "kudu"
## If kudu is running with a custom SPN this needs to be configured
kudu.authentication.server.principal.primary = kudu

kudu.authentication.server.principal.primary = kudu 这个没搞懂用途,用的默认值


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×