gpt4 book ai didi

python - 创建基于磁盘的数据结构

转载 作者:行者123 更新时间:2023-12-01 04:36:45 27 4
gpt4 key购买 nike

我找不到有关此主题的任何资源。有几个问题有很好的答案,描述了需要存储在磁盘上的数据(一般来说是pickle、shelve、数据库)的问题的解决方案,但我想学习如何实现我自己的。

1) 如果我要在 Python 中创建基于磁盘的图形结构,我必须通过写入磁盘来实现必要的方法。但我该怎么做呢?

2) 基于磁盘的结构的好处之一是在处理可能不适合内存的数据时具有结构的效率。如果内存无法容纳数据,则一次只能访问其中的某些部分。如何一次只访问结构的一部分?

最佳答案

您需要解决很多问题,有些问题非常简单,有些则稍微复杂一些,但既然您想自己解决,我认为您不介意自己填写详细信息(所以我将跳过一些部分)。

第一个简单的步骤是序列化和反序列化节点(以便能够存储在磁盘上)。这可以通过让节点具有 serialize/deserialize 方法以临时方式完成 - 此外,您可能希望序列化数据具有类型指示器,以便您可以知道应该使用哪个类的deserialize来反序列化数据。请注意,节点在磁盘上的表示必须通过文件偏移量(直接或间接)引用其他节点。

数据的实际读取或写入是通过普通(二进制)文件操作完成的,但您必须首先在文件中查找到正确的位置。

第二步是可以在文件中分配空间。如果您只想进行一次写入行为,那么只需增长文件就可以了,但是如果您想修改文件中的数据(添加和删除节点,甚至替换它们),您将不得不应对以下情况:文件中不再使用的区域,可以重用这些区域,甚至打包文件的布局。

进一步的步骤可能涉及在某种意义上使更新原子化。一种解决方案是有一个区域,您可以在其中写入足够的信息,以便更新可以完成(或放弃),如果它以最简单的形式提前终止,它可能只是一系列不幂操作(如果发生则产生相同结果的操作)您重复它们,将特定数据写入文件中的特定位置)。

请注意,虽然(某些)内置解决方案确实可以处理将整个图形写入磁盘或从磁盘读取整个图形,但它们并不能真正处理您只想读取部分图形或非常有效地修改图形的情况(你必须阅读大部分整张图并一次性写出完整的图)。数据库是个异常(exception),您可以以随机方式读取/写入数据的较小部分。

关于python - 创建基于磁盘的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com