KenyonY / flaxkv

🗲 A high-performance on-disk dictionary.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

在jupyter中使用时无法保存到数据库

PierXuY opened this issue · comments

在jupyter中使用时,再次连接同一个数据库,数据会丢失(貌似是没有写入到数据库文件)。

commented

确实如此,当写入的数据大小没有达到db.MAX_BUFFER_SIZE时,数据依旧在内存中的,因此如果期望jupyter 中(或在python进程没有结束之前) 即时写入磁盘,比较方便的方式是手动触发.write_immediately()方法:

db = dictdb('./test_db')
db[(1, 2, 3)] = [1, 2, 3]

db.write_immediately()

也可以通过设置db.MAX_BUFFER_SIZE=1 对每一次数据更新都进行磁盘写入(写入性能很高,不必过于担心);
或是通过设置自动保存的时间间隔db._COMMIT_TIME_INTERVAL(单位:秒)对内存中的缓存数据进行定期磁盘写入。

但是在.py文件中执行相同的程序时,就没有这个问题,写入的数据大小是一样的。 是不是还存在别的原因?

是会在py文件执行完毕,退出程序前执行写出操作吗? 而jupyter文件没有这一过程

commented

是会在py文件执行完毕,退出程序前执行写出操作吗? 而jupyter文件没有这一过程

没错

明白了,谢谢! 那在jupyter里手动执行下db.write_immediately()也是合理的,或许在README里可以说明下。

This issue is stale because it has been open for 30 days with no activity.

commented

在版本v0.2.3之后加入了写入监控,即在触发更新数据的相关操作后都会尽快写入,这意味着即使在jupyter中也不必再手动执行db.write_immediately()了。