这是针对python3的,因此当我说“列表”时,我的意思是python3列表。
我想构建一个看起来像列表,像列表一样的数据类型,但是在功能上由磁盘上通常“一致”的数据存储支持。因此,如果生成文件的程序崩溃了,那么数据存储仍将是可读的,并且应该可以恢复列表对象。如果最后一条记录或少数记录是 无法恢复的,那应该不会影响其余数据。
因为我们也不能吃蛋糕,所以有一些使用特征会使它变得更容易一些:
- 应该针对编写进行优化,尤其是以流方式编写。因此,可以预期的是,下一点将放在列表的末尾,并且性能特征应集中在此。
- 随机访问应该是可能的,但尚未针对其进行优化。因此,如果需要提高性能以在中间插入某些内容,或修改已经存在的元素,则可以。理想情况下,性能影响与列表的长度不成比例。
- 插入的对象在很大程度上将具有相同的类型,但是,如果出现新类型的对象,则不应拒绝它们。
- 插入的对象通常是类似numpy的数组,但不一定是相同的形状。
我知道从头开始编写这样的内容可能是一项艰巨的任务,因此我正在寻找一些有关后端的帮助。此刻,我看到了一些想法:
- PyArrow:您可以将对象流式传输到磁盘上,它通常是内存中的存储,因此即使受到打击,也应该可以进行随机访问。
- FlatBuffers:一个protobuf样式的序列化库,可以将其塞进类似这样的容器中。
- 内存映射文件+魔术?:从功能上讲,我想要的有点像只是将列表放入内存映射位置。不利的一面是,事后阅读它,如果它损坏了,将非常困难。
其他?