Из-за нескольких правок этот вопрос мог стать немного непоследовательным.Я прошу прощения.
В настоящее время я пишу сервер Python.Он никогда не увидит более 4 активных пользователей, но я студент информатики, так что я все равно планирую это.
В настоящее время я собираюсь реализовать функцию для сохранения резервной копиитекущее состояние всех соответствующих переменных в файлах CSV.Из тех, кого у меня сейчас 10, и они никогда не будут большими, но ... ну, студент-информатик и т. Д.
Итак, я сейчас думаю о двух вещах:
- Когда выполнять резервное копирование?
- Что за резервное копирование?
Когда запускать:
Я могу запуститьрезервное копирование каждый раз, когда изменяется переменная, что имеет преимущество, заключающееся в том, что текущее состояние всегда находится в резервной копии, или, например, раз в минуту, что дает преимущество, заключающееся в том, что файл не перезаписывается сотни раз в минуту, если сервер загружен, но будетсоздайте много бесполезных переписываний одних и тех же данных, если я не реализую обнаружение, какие переменные изменились с момента последнего резервного копирования.
Непосредственно с этим связан вопрос , какое резервное копирование мне следует сделать.
Я могу сделать полное резервное копирование всех переменных (Это бессмысленно, если я запускаю резервное копирование каждый раз, когда переменная изменяется, но может быть хорошо, если я запускаю резервное копирование каждый Xминут) или полное резервное копирование одной переменной (что было бы лучше, если бы я выполнял резервное копирование при каждом изменении переменных, но это потребовало бы либо нескольких функций резервного копирования, либо интеллектуального определения переменной, для которой в данный момент выполняется резервное копирование), илиЯ могу попробовать какое-то дельта-резервное копирование файлов (что, вероятно, потребует чтения текущего файла и перезаписи его с изменениями, так что это, вероятно, довольно глупо, если в Python не существует хитрости для этого, о которой я не знаю).
Я не могу использовать shelves
, потому что я хочу, чтобы данные переносились между различными языками программирования (например, java, вероятно, не может открывать полки python), и я не могу использовать MySQL по разным причинам, главным образом из-за того, чтокомпьютер, на котором будет работать сервер, не поддерживает MySQL, и я не хочу использовать внешний MySQL-сервер, поскольку я хочу, чтобы сервер продолжал работать, когда обрывается интернет-соединение.
Я также осведомлен о фактечто есть несколько способов сделать это с помощью предварительно реализованных функций pYthon и / или другое программное обеспечение (например, sqlite
).Я просто большой поклонник создания этого материала не потому, что мне нравится изобретать велосипед, а потому, что мне нравится знать, как работают вещи, которые я использую.Я создаю этот сервер частично только для изучения Python, и хотя знание того, как использовать SQLite, является чем-то полезным, мне также нравится выполнять «грязную работу» самостоятельно.
В моем сценарии использования возможно несколько запросов вдень я склоняюсь к идее «резервного копирования при изменениях», но она быстро развалится, если по какой-то причине сервер станет действительно действительно занятым.
Итак, мой вопрос в основномсводится к следующему: какой метод резервного копирования будет наиболее полезным в этом сценарии, и я, возможно, пропустил другую стратегию резервного копирования?Как вы решаете, какую стратегию использовать в своих приложениях?
Обратите внимание, что я поднимаю этот вопрос в основном из общего интереса к стратегиям резервного копирования и размышлениям о них, а не из-за проблем в этом особом случае..