База данных Python ZODB с Filestorage: почему временные файлы остаются на диске? - PullRequest
0 голосов
/ 18 мая 2018

Я экспериментирую с модулем базы данных ZODB в Python 3.6.В моем эксперименте я создаю TreeSet() и заполняю его данными.Затем я фиксирую транзакцию (которая сохраняет изменения на диске) и закрываю базу данных.

from ZODB.FileStorage import FileStorage
from ZODB import DB
from persistent import Persistent
from BTrees.OOBTree import TreeSet
import transaction

if __name__ == '__main__':
    # 1. Create ZODB database
    # ------------------------
    storage = FileStorage("C:/database_test/mydb.db")
    db = DB(storage)
    conn = db.open()
    root = conn.root()
    root.files = TreeSet()


    # 2. Fill the TreeSet
    # --------------------
    ...

    # 3. Save and close
    # ------------------
    transaction.commit()
    conn.close()
    db.close() # <- is this even necessary?

Я смотрю файлы, оставшиеся на моем жестком диске.Как видите, там осталось три временных файла - даже после того, как я закрыл базу данных.

enter image description here

Я что-то закрыл ( база данных , соединение , хранилище , транзакция , ...) не правильно?


Примечание:
Я не знаю, важно ли это, но моя система выглядит следующим образом:

  • Windows 10, 64-битная
  • Python 3.6.3
  • ZODB 5.4.0 (последняя версия от 18 мая 2018 года)

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Файл .index не является временным файлом, но это файл индекса, который сохраняется.Если он отсутствует, он всегда будет полностью восстановлен (что займет больше времени для большой базы данных).

Файл .temp предназначен для временных данных, которые сгенерированы до полной фиксации.

Файл .lock должен гарантировать, что никакие два процесса не откроют этот файл.Он содержит PID последнего процесса, который его открыл.Если он завершил работу, новый процесс запишет в него свой PID.

На самом деле существует больше файлов, чем это, и они задокументированы внутри строки документации .

0 голосов
/ 18 мая 2018

Нет, они не являются временными файлами.Это постоянные файлы с иногда временными данными.

В дополнение к файлу данных создаются некоторые вспомогательные файлы.Они могут быть потеряны без ущерба для целостности данных, однако потеря файла индекса может привести к очень медленному запуску.(http://www.zodb.org/en/latest/reference/storages.html#included-storages)

...