How do I make a multi-connection data load atomic?
我正在用Python编写一个精美的应用程序,该应用程序将来自S3的一堆数据加载到Redshift集群中。如果有必要,应用程序针对多个表发出一堆DDL,然后通过几个
为了使整个过程尽可能快地运行,我利用了反向移植的
它似乎运作良好。现在,我想使整个过程变得原子化。
正在完成的工作非常简单。由于任何给定的表都将被更改然后恰好加载一次,因此没有死锁的可能。此外,可以在加载期间锁定资源。最后,Redshift支持我感兴趣的所有活动的交易。因此,从理论上讲,我想做的事情应该是可能的。
现在我看到的选项是:
是否有更好的方法来做我错过的事情?这些选项都不是很好。
您可以使用两阶段提交协议来执行所需的操作。
http://initd.org/psycopg/docs/usage.html#two-phase-commit-protocol-support
...如果服务器支持它,我对此表示怀疑。