首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红移中的数据规范化

红移中的数据规范化
EN

Stack Overflow用户
提问于 2014-06-20 01:26:58
回答 2查看 3K关注 0票数 4

最近,我开始使用Redshift为数百万个数据点安装一个模式,如下所示:

代码语言:javascript
复制
create table metrics (
  name varchar(100),
  value decimal(18,4),
  time timestamp
) sortkey (name, timestamp);

(真正的模式稍微复杂一些,但这将满足我的问题)

我想知道,通过将我的度量名映射到一个整数,并且只存储该整数,使其规范化(目前是varchar(100))是否合理。(例如{id: 1,名称: metric1})。name的基数是100。通过添加映射,它将使应用程序逻辑更加复杂,因为它有许多输入流。而且,提前查询需要反向映射。

在传统的sql数据库中,这显然是肯定的,但我不确定Redshift是如何处理这个问题的,因为它是一个柱状数据存储。我认为总体上这样做是很好的,但我假设Redshift会/可以在幕后执行一些类似的映射,因为任何表中的某些列的基数都比其他列低。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-23 10:16:46

答案是否定的。Redshift很好地利用了压缩,并且会存储很少的名称字段的副本。

但是,您确实需要确保您正在很好地利用Redshift的压缩选项。文档中的这个部分应该告诉您您需要知道的所有信息:disk.html

TL;DR:对您的表进行分析压缩,查看Redshift建议的压缩内容,使用这些编码创建一个新表,并将数据插入到该表中。

票数 4
EN

Stack Overflow用户

发布于 2016-07-21 20:33:04

您最好的选择是像这里一样继续使用varchar数据类型,但是应用"bytedict“压缩类型。在内部,这与创建查找表是一样的,但实际上它可能更快,因为Redshift本机在列解码过程中从int->string内部理解管理它自己的表和映射。

下面是字节码文档引用:encoding.html

另一个可以为用例节省性能/存储的选项是运行长度:encoding.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24318653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档