如何确保与sqlite和NF的安全文件同步

2024-04-24 23:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近已经将应用程序的工作区文件格式转换为sqlite。为了确保NFS上的健壮操作,我使用了一个通用的更新策略,我对存储在本地硬盘上临时位置的副本进行了所有修改。只有在保存时,我才会通过复制原始文件和临时文件来修改原始文件(可能在NFS上)。我只打开原始文件保持一个排他锁,这样别人试图打开他们会得到警告,其他人正在使用它。在

问题是这样的:当我把临时文件保存回原始文件时,我必须解除对原始文件的锁定,这为其他人进入并获取原始文件提供了一个窗口,尽管窗口很小。在

我可以想出一些解决办法:

(1)简单地使用sql将temp的内容转储到原文件中,即在original上放置表、vacumm original、select from temp和insert into orginal。不过,我不喜欢对存储在NFS上的sqlite文件执行sql操作。这让我害怕腐败问题。我这样想对吗?在

(2)使用各种额外的文件作为保护,防止其他人在复制临时文件时进入原始文件。使用文件作为互斥体最多也有问题。我也不喜欢在应用程序崩溃时有额外的文件存在。在

我想知道是否有人对此有不同的解决办法。再次将临时文件复制到原始文件上,同时确保其他应用程序在执行此操作时不会潜入并获取原始文件?在

我使用的是python2.5、sqlalchemy 0.6.6和sqlite 3.6.20

谢谢, 迪安


Tags: 文件应用程序警告内容sqlitesql副本策略
1条回答
网友
1楼 · 发布于 2024-04-24 23:25:14

SQLite NFS问题是由于缓存和锁定中断造成的。如果您的进程是唯一一个访问NFS上的文件的进程,那么您就可以了。在

SQLite备份API的设计正是为了解决您的问题。您可以直接备份到NFS数据库或另一个本地临时文件,然后复制该文件。备份API处理所有的锁定和并发问题。在

您可以使用APSW访问备份API或pysqlite的最新版本。(披露:我是APSW的作者。)

相关问题 更多 >