如何在redshift中实现行级版本控制?

时间:2017-02-22 14:40:13

标签: amazon-web-services database-design versioning amazon-redshift

我正在使用AWS Redshift执行分析查询。查询执行一些计算并更新键的值。此结果将导出到队列系统以供异步客户端使用。但是,由于排队系统无法确保排序,我需要一种机制来确定顺序。我需要类似“update_version”列的东西,它在每次更新操作中都会增加。这类似于optimistic locking

如何在红移中实现这一目标?

一种方法是使用时间戳,但它不可靠,因为时间戳是从群集中的各个节点获取的,并且易于clock skew

我不需要全球订购。

注意:请不要建议使用有序队列,因为这个问题的范围不同。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作之一:

  • 运行new QueryOptions(CommonFileQuery.OrderBySearchRank, fileFilter);
  • 运行UPDATE my _table SET update_version = update_version+1;

INSERT INTO my_table SELECT *, update_version = N FROM my_table;对您的表格更具破坏性(现有数据范围变得越来越未排序),但更容易查询。 UPDATE具有较小的破坏性(新数据附加到未排序的区域,现有数据不受影响)但如果您只需要查找当前值,则查询起来会更加困难。

如果您想使用INSERT策略,但是您关心历史记录,那么您应该考虑在执行更新之前将当前行值写入UPDATE