何度か編集したため、この質問は少し矛盾している可能性があります。謝罪します。
私は現在Pythonサーバーを書いています。アクティブ ユーザーが 4 人を超えることは決してありませんが、私はコンピューター サイエンスの学生なので、とにかく計画を立てています。
現在、関連するすべての変数の現在の状態のバックアップを CSV ファイルに保存する機能を実装しようとしています。私は現在 10 人を持っていますが、決して大きくはなりませんが、コンピューター サイエンスの学生などです。
ということで、現在以下の2点を考えています。
- いつバックアップを実行しますか?
- どのようなバックアップですか?
いつ実行するか:
変数が変更されるたびにバックアップを実行できます。これには、常に現在の状態がバックアップに保持されるという利点があります。または、1 分間に 1 回などのように、サーバーが 1 分間に何百回もファイルを書き換えないという利点があります。忙しくなりますが、最後のバックアップ以降に変更された変数の検出を実装しないと、同じデータの無用な書き換えが多数作成されます。
それに直接関係するのは、どのようなバックアップを行うべきかという問題です。
すべての変数の完全バックアップ (変数が変更されるたびにバックアップを実行している場合は無意味ですが、X 分ごとにバックアップを実行している場合は良いかもしれません)、または単一の完全バックアップを実行できます。変数 (変数が変更されるたびにバックアップする方が良いですが、複数のバックアップ機能または現在バックアップされている変数のスマートな検出のいずれかが必要です)、または何らかのデルタバックアップを試すことができますファイル(おそらく現在のファイルを読み取って変更を加えて書き換える必要があるため、私が知らないPythonでこれに関するトリックがない限り、おそらくかなりばかげています)。
異なるプログラミング言語間でデータを移植できるようにしたいので使用できませんshelves
(たとえば、java はおそらく python シェルフを開くことができません)。また、さまざまな理由で MySQL を使用できません。主に、サーバーを実行するマシンが MySQL をサポートしていないためです。インターネット接続が切断されたときにサーバーを実行し続けたいので、外部のMySQLサーバーを使用したくありません。
また、Python やその他のソフトウェア (sqlite
たとえば、) の事前実装された関数を使用してこれを行う方法がいくつかあることも認識しています。私は、車輪を再発明するのが好きだからではなく、自分が使っているものがどのように機能するかを知りたいからです。私はこのサーバーを部分的に Python を学習するためだけに構築しています。SQLite の使用方法を知っていると便利ですが、自分で「汚い仕事」をすることも楽しんでいます。
1 日におそらく数回のリクエストを使用するという私の使用シナリオでは、「変更時のバックアップ」のアイデアに傾倒していますが、何らかの理由でサーバーが非常にビジー状態になると、それはすぐに崩れてしまいます。
したがって、私の質問は基本的に次のようになります。このシナリオで最も役立つバックアップ方法はどれですか。別のバックアップ戦略を見逃している可能性がありますか? アプリケーションで使用する戦略をどのように決定しますか?
この質問は、主にバックアップ戦略とその背後にある考えに対する一般的な好奇心から提起したものであり、この特別なケースの問題のためではないことに注意してください.