|
|
1
2
总的来说这是不可能的。 文件系统不是事务性资源(除非您有意识地、故意地使用日志文件系统或其他文件系统),即使它们是事务性资源,也仍然要求它们可以在“外部”事务控制下参与2PC事务和DB事务。ER(能够指导和控制所需的两阶段提交过程)。你的机会很渺茫。 你可以自己尝试做各种各样的事情,例如记录任何文件(或文件部分)的预写状态,但基本上你是自己重新创建一个日志文件系统,除非你完全完全地这样做(不是一个容易的任务),否则你的系统仍然会有(严重的)上面有洞。 |
|
2
1
酸不仅需要能够 回滚更改 当其中一个操作失败时,它还需要 隔离 从其他交易。一旦将数据存储到文件中,其他人就可以看到更改。在之前或之后提交数据库都违反了ACID规则。 然而,你仍然可以找到解决实际问题的方法。例如,将文件访问与数据库数据同步(例如,存储文件名和数据是否准备就绪)。 还可以考虑将数据存储在blob而不是文件中。 另一种更复杂的方法是通过文件系统锁定对数据的访问,因此当一个事务正在写入时,所有其他事务都将被阻止读取和写入该文件 以及相应的数据库数据 同时。例如,使用一个空的锁文件(原始文件名.lock),阻止其他人读/写该文件中的数据。只有在与数据库数据有1对1关系并且没有执行任何复杂查询(在锁定数据时不应读取数据)时,此方法才有效。当然,只有当您控制了访问文件或数据库的所有内容时,它才起作用。可能效率不高。您仍然需要实现文件更改的回滚机制(通常是复制重命名内容)。 根据您的特定系统,还有一些其他解决方案或解决方案。这个问题可能“太宽泛了”。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |