gpt4 book ai didi

python - python中的数据结构 : maintaining filesystem structure within a database

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:52 24 4
gpt4 key购买 nike

我有一个数据组织问题。我正在处理一个客户端/服务器项目,其中服务器必须在驻留在服务器上的数据库中维护客户端文件系统结构的副本。这个想法是在 AJAX 化的 Web 界面中在服务器端显示文件系统内容。现在我只是将文件列表上传到数据库中,文件按顺序转储到数据库中。问题是一旦它们进入数据库,如何在服务器端重新捕获文件系统结构。通过遍历巨大的文件列表来在服务器端重建父->子结构似乎不可行。然而,当文件对象彼此没有引用时,这似乎是唯一的选择。

我不太确定如何处理这个问题。据我所知,我需要在服务器端(也许在 Btree 中?)复制某种类型的文件系统数据结构,其中对象维护指向其父项和/​​或子项的指针。我想知道是否有人有任何类似的过去经验可以分享,或者一些有用的资源可以为我指明正确的方向。

最佳答案

我建议遵循 Unix 方式。每个文件都被认为是一个字节流,仅此而已。每个文件在技术上都由一个名为 i-node( inode )的结构表示,该结构保存与数据的物理流相关的所有信息(包括属性、所有权等)。

inode 不包含任何关于可读名称的信息。每个 i-node 都被赋予一个唯一的编号(永远),作为文件的技术名称。您可以使用类似的数字来为数据库中的字节流提供唯一标识。 i 节点存储在磁盘上单独的连续部分中——想想 i 节点结构数组(抽象意义上),或者数据库中的单独表。

回到文件。这样它就由唯一的数字表示。对于您的数据库表示,数字将是唯一键。如果您需要其他 i-node 信息(文件属性),您可以将其他列添加到表中。一列将是 blob 类型,它将代表文件的内容(字节流)。对于 AJAX,我猜文件会相当小;因此,您应该不会对 blob 的大小限制有任何问题。

到目前为止,文件以平面结构的形式存储(就像物理磁盘和关系数据库一样)。

文件的目录名和文件名的结构分别保存在另一个文件中(保存在相同的结构中,与其他文件一起,也由它们的 i-node 表示)。基本上,目录文件捕获元组 (bare_name, i-node number)。 (这种方式在 Unix 中实现了硬链接(hard link)——两个名称与相同的 i-none 编号配对。)根目录文件必须具有固定的技术标识——即保留的 i-node 编号。

关于python - python中的数据结构 : maintaining filesystem structure within a database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554676/

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