我正在处理的应用程序是一个基于Java的ETL过程,它将数据加载到多个表中.DBMS是Infobright(基于MYSQL的DBMS,适用于数据仓库).
数据加载应以原子方式完成; 但是,出于性能原因,我想同时将数据加载到多个表中(使用LOAD DATA INFILE
命令).这意味着我需要打开多个连接.
有没有任何解决方案允许我原子地并行地进行负载?(我猜测答案可能取决于我加载的表格的引擎;大多数是Brighthouse,它允许事务,但没有XA和没有保存点).
为了进一步澄清,我想避免让我们说:
在这种情况下,我无法回滚前4个加载,因为它们已经被提交.
背景:
我正在尝试编写一个定期连接到Web服务器的脚本,并检查特定页面上的某些信息是否已更改.我已经使用bash(用于脚本),curl(用于实际连接)和crontab(用于调度)的组合工作.
由于服务器需要身份验证,我首先使用curl在登录页面上使用我的凭据执行POST请求并保存cookie文件(包含PHPSESSID).现在我可以在执行我想要检查的实际网页的请求时使用cookie文件.
问题(S):
服务器什么时候实际清除我第一次请求设置的PHPSESSID?我想它必须在某个时候这样做,否则会崩溃,因为它会一直存储有关每个会话的信息.
如果在关闭浏览器时清除了PHPSESSID,那么我可以通过某种方式模拟即使使用curl吗?
我需要在 Java 中实现某种进程间互斥锁。我正在考虑按照此线程中的建议使用 FileLock API 。我基本上会使用一个虚拟文件并在每个进程中锁定它。
这是最好的方法吗?或者是在标准 API 中构建的类似内容(我找不到)。
有关更多详细信息,请参见下文:
我编写了一个应用程序,它读取一些输入文件并根据它在其中找到的内容更新一些数据库表(它更复杂,但业务逻辑在这里无关紧要)。
我需要确保多个数据库更新之间的互斥。我试图用 LOCK TABLE 来实现这个,但是我使用的引擎不支持它。所以,我想在应用程序代码中实现锁定支持。