为什么SQLite3不能与NFS一起使用?

4
我转而使用sqlite3而不是MySQL,因为我需要在没有mysql的PBS系统上运行许多作业。当然,在我的机器上,我没有NFS,但在PBS上存在一个NFS。花费了很多时间切换到sqlite3之后,我开始运行许多作业,但是却破坏了我的数据库。 当然,在sqlite3 FAQ中提到了NFS,但我开始时甚至没有考虑过这一点。
我可以在作业开始时复制数据库,但它将变成合并的噩梦!
出于这个简单的原因,“sqlite在重要的计算机上无法工作”,我绝不会向我的同事推荐sqlite。
我已经阅读了关于NFS不达标和它是他们的错的抱怨。 我尝试了一些解决方法,但是正如this post所建议的那样,这是不可能的。
难道没有牺牲性能的解决方法吗?
那我该怎么办?尝试其他数据库软件吗?哪一个?

什么是PBS?有哪些客户端正在访问您的数据库?为什么需要NFS? - MK.
2
如果您没有访问诸如MySQL之类的数据库引擎,也没有支持文件锁定所需的文件系统,则我想说您运气不佳(除非您想实现基于原子mkdir之类的数据库或其他傻瓜东西)。 - Neil
PBS? - didierc
如果在你的操作系统上不能使用一个好的数据库,那么你基本上就是雪上加霜了。 - didierc
1个回答

3
你使用了错误的工具。根据这种经验说:“我永远不会推荐sqlite...”有点像在使用玻璃瓶钉钉子后说“我永远不会推荐玻璃瓶”。
你需要更明确地指定你的问题。我的理解是:你有许多通过某些未指定路径获取工作并产生输出的节点。这些任务不进行交互,因为数据库可以复制。所有任务的输出可以在完成后合并。如何有效地生成合并输出?
基于这个问题,我的建议是:让每个任务将其输出生成一个结构化文件,文件对每个任务都是唯一的。任务完成后,编写一个程序来解析每个文件并将其插入到sqlite3数据库中。这种方式能够合理地利用NFS(单个进程按顺序写入文件),也能够合理地利用sqlite3(单个进程向本地文件系统上的数据库写入)。这样做可以避免在运行任务时出现NFS锁定问题,并且应该提高吞吐量,因为sqlite3数据库没有竞争。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接