2013-11-14 18 views
1

我有一个系统写入一些行到Redshift。只要完成了(使用JDBC,只要代码行完成),我们就会向队列发送一个id,另一个系统会选取此id并从Redshift中读取这些行和相关的行。Redshift:插入的数据何时可供选择?

这个读数通常发生在同一秒。问题是,大约有10%的时间无法找到(显然)刚写入的数据。数据绝对存在。稍后再处理这些项目会得到不同的(正确的)结果。

所以,我的问题是Redshift是否可以保证即时数据的一致性,还是我们的系统在读取之前需要等待?如果它必须等待多久?

回答

0

我相信你不应该考虑直到你收到Redshift的确认之前所写的行。

的时间可能取决于集群负载,其他写入该表等

尝试发送ID到队列前通过JDBC等待确认成功。

+0

不幸的是,我们确实在等待来自JDBC的确认。我们只是将redshift换成标准postgres安装,并且一切按预期工作,完全没有代码改变。 – Gesar

+0

是的,你为什么最初使用Redshift? –

0

一旦更改已被提交,它们应该可用,但是,自动提交行为有可能在INSERT/UPDATE完成和提交完成之间导致某种延迟。

我会建议确保在事务中包装任何数据库更改并等待COMMIT完成后再发送给您引用的其他系统。