Я использую ZODB для хранения некоторых данных, которые существуют в памяти ради постоянства. Если каждый раз происходит сбой службы с данными в памяти, перезапуск будет загружать данные из ZODB, а не запрашивать сотни тысяч строк в базе данных MySQL.
Кажется, что каждый раз, когда я сохраняю, скажем, 500 КБ данных в файл базы данных, мой файл .fs увеличивается на 500 КБ, а не остается на 500 КБ. Как пример:
storage = FileStorage.FileStorage(MY_PATH)
db = DB(storage)
connection = db.open()
root = connection.root()
if not root.has_key('data_db'):
root['data_db'] = OOBTree()
mydictionary = {'some dictionary with 500K of data'}
root['data_db'] = mydictionary
root._p_changed = 1
transaction.commit()
transaction.abort()
connection.close()
db.close()
storage.close()
Я хочу непрерывно перезаписывать данные в корне ['data_db'] текущим значением mydictionary. Когда я печатаю len (root ['data_db']), он всегда печатает правильное количество элементов из mydictionary, но каждый раз, когда этот код запускается (с такими же точными данными), размер файла увеличивается на размер данных, в данном случае 500K.
Я что-то здесь не так делаю?