红移数据库中与TEXT数据类型等效的是什么?

24

在Redshift表中,用于保存非常长的字符串(最多可达50KB)的列使用什么数据类型最佳?

默认情况下,TEXT被varchar(256)替换。目前我使用了varchar(65535),但我不确定这是否是正确的做法...

谢谢


了解你为什么要将文章大小的文本塞入列中会很有帮助... - Serban Tanasa
@SerbanTanasa - 这是一个非常大的表格,大约100G,我需要能够查询它。其中一个字段是自由文本,可能非常长。如果您有更好的建议,请告诉我。 - WeaselFox
您是否考虑过Hadoop或NoSQL方案? - Serban Tanasa
2个回答

31

Redshift 中的文本数据类型:

在 Redshift 中,您可以使用 varchar(max)varchar(65535) 作为文本数据类型。

这是 Redshift 中文本数据类型字段的最大长度。


2
没事了,在下面的答案中找到了:http://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html - Marco Roy
只是好奇,如果这是一个数字限制,为什么是65535而不是65536? - Dash Winterson

4

是的,我看到了这些文档,看看我的编辑。仍然不确定这是否是存储这些数据的最佳方式。 - WeaselFox
我还没发现其他能够存储更多数据的类型。我并不认为有其他类型更适合这种需求。虽然可能会有更好的方式(例如使用其他数据库管理系统或文件系统?)来存储整个文本,而非将其全部放入一个列中。 - Peanut
这意味着我认为表中的每个记录都分配了65k,而不考虑文本的实际长度。 - WeaselFox
不,它并没有。请阅读上面链接中有关varchar的部分:>使用VARCHAR或CHARACTER VARYING列来存储具有固定限制的可变长度字符串。这些字符串不带空格填充,因此VARCHAR(120)列由最多120个单字节字符,60个双字节字符,40个三字节字符或30个四字节字符组成。 - Peanut
根据http://dba.stackexchange.com/questions/99361/storage-size-for-varchar-length-in-redshift的说法,它似乎是“4个字节+字符总字节数”。 - Peanut
3
然而,你应该注意不要使用过大的列。亚马逊建议保持尽可能小的列,因为在执行复杂查询时,数据将无法压缩:http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-smallest-column-size.html - user2694306

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接