ZODB를 사용하여 지속성을 위해 메모리에 존재하는 일부 데이터를 저장하고 있습니다. 메모리에있는 데이터가 모두 충돌하는 서비스가 다시 시작되면 MySQL 데이터베이스에서 수천 개의 행을 쿼리하는 것이 아니라 ZODB에서 데이터를로드합니다.Python : ZODB 파일 크기가 커짐 - 업데이트하지 않습니까?
데이터베이스 파일에 500K의 데이터를 저장할 때마다 내 .fs 파일이 500K가 아닌 500K로 증가하는 것으로 보입니다. 예를 들면 다음과 같습니다.
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()
root [ 'data_db']의 데이터를 mydictionary의 현재 값으로 계속 덮어 쓰고 싶습니다. len (root [ 'data_db'])을 인쇄하면 mydictionary에서 올바른 수의 항목이 항상 인쇄되지만이 코드가 실행될 때마다 (동일한 정확한 데이터로) 파일 크기가 데이터 크기 (이 경우 500K)만큼 증가합니다.
여기 뭔가 잘못 되었나요?
매번 저장 한 데이터를 덮어 쓰고 싶기 때문에 추천 할만한 다른 저장 시스템 (파이썬에 기본이있을 수 있음)이 있습니까? Pickly는 나를 위해 일할 것이지만 트랜잭션이 거대한 데이터 세트 (사전에 1M + 항목)가있을 때 느린 것처럼 보입니다 – sberry
Mark와 마찬가지로 sqlite를 고려할 것입니다. –