RedShift / PostgreSQL 中串行类型的替代方案

Posted

技术标签:

【中文标题】RedShift / PostgreSQL 中串行类型的替代方案【英文标题】:Alternative for Serial type in RedShift / PostgreSQL 【发布时间】:2013-08-22 19:46:35 【问题描述】:

我实际上是在尝试让 Rails 与 RedShift 一起工作,并面临 Rails 默认索引的一些问题。我的工作基于 repo activerecord-redshift-adapter。

默认情况下,Rails 使用 SERIAL 类型来创建他的主键。不幸的是,这不受 RedShift 支持。所以我实际上是在尝试找到这种 SERIAL 类型的替代品,然后在我们找到可行的解决方案后分叉 repo。我正在考虑一个 BIGINT,来自 RedShift offer。

要更改的行位于此处redshit_adaptated.rb (Line 252)。

任何提议,更好的解决方案?

【问题讨论】:

您打算如何生成该序列? Redshift 还有CREATE SEQUENCE吗?因为如果是这样 - SERIAL 只是一个方便的伪类型,可以用CREATE SEQUENCE 替换,然后创建一个带有default nextval('sequence_name') 的bigint 列的表,最后是ALTER SEQUENCE .. OWNED BY 我实际上不知道如何生成序列,这就是问题所在。RedShift 不支持 (see Sequence manipulation functions) CREATE SEQUENCE,如果 SERIAL 只是对此的约定,这是有道理的。还有其他想法吗? 尝试创建标识列,以便 Redshift 生成序列号。如果你想保留现有的 Rails 序列号,那么从标识开始,可能是最大数量。 【参考方案1】:

SERIAL 的直接替换是 IDENTITY(seed, step) 参考http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html

【讨论】:

以上是关于RedShift / PostgreSQL 中串行类型的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

昨天 - 在 Redshift 和 PostgreSQL 中 - 日期添加兼容性

使用 Amazon Redshift / PostgreSQL 进行队列分析

Redshift/PostgreSQL 中子查询的 GroupAggregate

使用 Redshift (PostgreSQL) 和计数的数据透视表

将数据从 redshift 传输到 postgresql

psycopg2/python 将数据从 postgresql 复制到 Amazon RedShift(postgresql)