由于多次编辑,这个问题可能变得有点不连贯。我道歉。
我目前正在编写一个 Python 服务器。它永远不会看到超过 4 个活跃用户,但我是一名计算机科学专业的学生,所以无论如何我都在计划它。
目前,我即将实现一个功能,将所有相关变量的当前状态备份保存到 CSV 文件中。我目前有 10 个,它们永远不会很大,但是……嗯,计算机科学专业的学生等等。
所以,我目前正在考虑两件事:
- 何时运行备份?
- 什么样的备份?
何时运行:
我可以在每次变量更改时运行备份,其优点是始终在备份中保留当前状态,或者每分钟一次,其优点是如果服务器每分钟不重写文件数百次变得很忙,但是如果我不检测自上次备份以来哪些变量发生了变化,则会对相同的数据进行大量无用的重写。
与此直接相关的是我应该做什么样的备份的问题。
我可以对所有变量进行完整备份(如果我在每次变量更改时都运行备份,这是没有意义的,但如果我每 X 分钟运行一次备份可能会很好),或者对单个变量进行完整备份变量(如果我在每次变量更改时进行备份会更好,但会涉及多个备份功能或对当前备份的变量的智能检测),或者我可以尝试某种增量备份文件(这可能涉及读取当前文件并用更改重写它,所以它可能非常愚蠢,除非在 Python 中有一个我不知道的技巧)。
我不能使用shelves
,因为我希望数据可以在不同的编程语言之间移植(例如,java,可能无法打开 python 架子),我不能使用 MySQL 有不同的原因,主要是运行服务器的机器不支持 MySQL而且我不想使用外部 MySQL-Server,因为我希望服务器在 Internet 连接断开时继续运行。
我也知道有几种方法可以使用 python 和/或其他软件(sqlite
例如)的预实现功能来做到这一点。我只是自己构建这些东西的忠实粉丝,不是因为我喜欢重新发明轮子,而是因为我喜欢知道我使用的东西是如何工作的。我构建这个服务器部分只是为了学习 python,虽然知道如何使用 SQLite 是有用的,但我也喜欢自己做“肮脏的工作”。
在我每天可能有几个请求的使用场景中,我倾向于“更改备份”的想法,但是如果由于某种原因,服务器变得非常非常繁忙,那么这种想法很快就会崩溃。
所以,我的问题基本上归结为:在这种情况下哪种备份方法最有用,我是否可能错过了另一种备份策略?您如何决定在您的应用程序中使用哪种策略?
请注意,我提出这个问题主要是出于对备份策略及其背后的想法的普遍好奇,而不是因为这种特殊情况下的问题。