【问题标题】:Storing data in filename vs inside file将数据存储在文件名与文件内部
【发布时间】:2019-01-16 17:23:05
【问题描述】:

当我将任何数据存储在文件名而不是文件内时,这有什么区别

【问题讨论】:

  • 在 Windows 上,冒号 (:) 是保留字符,不能在文件名中使用
  • 在 linux 中不是这样。您可以使用( : ) 字符创建名称。
  • 这里没有魔法。文件名需要存储,但在 FS 标头中,而不是用户友好的位置。 FS 已针对将数据保存在文件中而不是文件名中进行了优化,因此在选择此类设计之前了解和考虑技术细节至关重要
  • 如果你的数据中有一个/(或其他禁止的字符),你想存储为文件名,你会怎么做?而且,由于您对文件名没有先验知识,所以在查找文件时如何找到正确的文件名?

标签: database file operating-system filesize


【解决方案1】:

我想说的是,使用键值存储是您想要采取的方向,但没有更广泛的上下文并且假设您确实想要使用文件而不是消耗数据块,您可以将这些值存储为文件的扩展属性。如果属性的数量足够小,它们将适合 inode 并且不会用完数据块。即您的文件大小仍然为零字节。

【讨论】:

  • 是的,我的数据很小,即少于 250 个字符,所以,我很确定,我永远不会有问题,但我的问题是,我怎么知道消耗了多少磁盘空间到目前为止,我什么时候会有 1000 个或 10,000 个文件?
  • 如果所有文件都是零字节,那么上限是您的文件系统可以容纳的 inode 数量。例如在 XFS 中,这可以通过在文件系统创建期间传递的 maxpct 标志来更改。
【解决方案2】:

我建议您使用案例 B。也许您会失去一些相同的东西,但这是更好的选择。

在科学意义方面:在第一种情况下,您在内存的特殊部分中记住文件名,而在第二种情况下,您使用文件本身。在寡妇上,您不能记住大于 255 个字符的名称。

你为什么不创建一个 file.json 和一个 Json 格式?

【讨论】:

  • but it's the better thing - 怎么样?
  • 更好的是case B
  • 这就是我问的“为什么和如何”?
  • 将信息存储在内存的特殊部分(即文件名)中是不合逻辑的。以第二种方式阅读:unix.stackexchange.com/questions/117325/…
  • 1.文件名可以是任何东西,这对系统来说不是问题。如果它可以存储“abcdekajshdkasjdhkjahdkjahdkjsahdkjsahdkjhakjhsajd.txt”它也可以存储上面的字符 - 它或多或少相同。 2. 我读过,但就我而言,我觉得还是更好,因为根本没有创建数据块,我的数据仍然被存储。
猜你喜欢
  • 2011-10-19
  • 2017-11-06
  • 2015-12-31
  • 2016-03-24
  • 2012-10-21
  • 1970-01-01
  • 2012-08-24
  • 2010-11-07
相关资源
最近更新 更多