我有一个系统可以将一些行写入Redshift。一旦完成(使用JDBC,所以一旦代码行完成),我们将一个id发送到队列,另一个系统获取此id并从Redshift读取这些行和相关行。
这种阅读通常在同一秒内发生。问题是,大约有10%的时间它找不到(显然)刚才写的数据。数据绝对存在。在以后重新处理这些项目会获得不同的(正确的)结果。
所以,我的问题是Redshift是否保证即时数据的一致性,或者我们的系统是否必须在阅读之前等待?如果必须等待多长时间?
答案 0 :(得分:0)
我相信在收到Redshift的确认之前,你不应该考虑这一行。
时间可能取决于群集负载,对该表的其他写入等。
在将id发送到队列之前,尝试通过JDBC等待成功确认。
答案 1 :(得分:0)
一旦提交了更改,它们就应该可用,但是,自动提交行为可能会导致INSERT / UPDATE完成和提交完成之间出现某种延迟。
我建议您确保在事务中包装任何数据库更改并等待COMMIT完成,然后再发送您引用的其他系统。