Как сделать базу данных устойчивой для обработки убийств с помощью sqlite postgress и sqlalchemy? - PullRequest
0 голосов
/ 02 ноября 2018

Я использую python и sqlalchemy для управления базой данных sqlite (в будущем я планирую заменить sqlite на postgres).

Я выполняю следующие операции: INSERT, SELECT и DELETE, и все эти операции являются частью скрипта Python, который выполняется каждый час.

Каждая из этих операций может занимать значительное количество времени из-за большого объема данных.

Теперь при определенных обстоятельствах скрипт python может быть уничтожен внешним процессом. Как я могу убедиться, что моя база данных не повреждена, если сценарий убит во время чтения / записи из БД?

1 Ответ

0 голосов
/ 02 ноября 2018

Ну, вы используете базу данных.

Базы данных реализуют свойства ACID (см. здесь ). Насколько это возможно, они гарантируют целостность данных, даже если транзакции не завершены.

Проблема, на которой вы сосредотачиваетесь, - это потеря соединений. Я думаю, что потерянные соединения обычно приводят к откату транзакции (я не уверен, что есть исключения). То есть база данных игнорирует все, начиная с последнего коммита.

Таким образом, база данных защищает вас от внутреннего повреждения. Ваша модель данных может стать недействительной, если последовательность операций остановлена ​​в произвольном месте. Решение этой проблемы состоит в том, чтобы обернуть такие операции в транзакцию, чтобы откат транзакции.

Существует (небольшая) опасность повреждения баз данных, когда аппаратное или программное обеспечение, на котором они работают, внезапно "исчезает". Это редко и есть гарантии. И это не та проблема, которая вас волнует (если только ваш экземпляр SQLite не является частью вашего процесса python).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...