一、传统路径式文件系统与 Web 的局限

现代计算机文件系统和 Web 架构的根基都建立在“目录 + 文件名”的层级结构之上。这种设计在纸张时代有其合理性——一份文档需要一个文件夹放置,一本书放在某层书架。

在数字时代,这种“路径思维”带来了几个根本性问题:

  • 单一分类路径:在 HFS(层级文件系统,Hierarchical File Systems) 中,每个文件只能存在于一个目录路径下,限制了文件的多重分类和访问方式。例如,一张学校排球队的照片只能存放在“学校”、“排球”或“照片”三个文件夹其中之一,无法同时归类于多个文件夹。
  • 同一文件的多版本混淆:不同路径可能包含几乎相同内容的文件,难以判断是否冗余,需要手动去重。
  • 命名冲突与管理负担:为了确保路径唯一性,在同一个目录下,用户必须为每个文件命名并避免重名,两个用户不能拥有同名文件,这在文件数量庞大时会增加管理负担。
  • 强依赖存储位置/usr/local/share/... 是人为路径,重命名目录名称或改变目录层级结构就会导致访问失败。且重命名可能会破坏引用。
  • 跨设备访问困难:在多设备环境中,用户需要记住文件存储的位置,无法统一搜索和访问所有设备上的相关文件
  • Web 上 URL 的脆弱性:路径式 URL(如 https://example.com/docs/guide.html)在网页结构稍变哪怕目录或文件名改变时就失效,造成“404”泛滥。

随着数据量与分布式需求剧增,一个更基础、内容驱动的存储和访问模型呼之欲出。


二、基于内容寻址的文件系统:从“文件名”到“哈希 ID”

1. 核心理念:内容即地址(Content = Address)

不再通过路径查找文件,而是通过文件内容生成的哈希(如 SHA-256 或 IPFS CID)来唯一识别文件。这种方式称为内容寻址(Content Addressing)

  • 文件内容 → 生成哈希值(hash):3a7d9f8b2c...
  • 存储路径:C:/Users/vicent/filename.jpg.../3a7d9f8b2c...
  • 完全没有“文件名”或“路径”,内容本身即为身份。每个文件以哈希 ID 唯一标识。

这意味着:

  • 自动去重:同一内容存储一次即可。
  • 永不变地址:只要内容不变,哈希即永久不变。
  • 无需管理文件名:避免冲突与重命名成本。

2. 元数据层:实体-属性–键/值对系统替代路径式层级结构

我们可以为每个哈希文件记录一段独立的元数据文档(JSON/YAML),采用属性–键/值对描述资源:

//某张照片文件的元数据
{
	"id": "3a7d9f8b2c...",
	"attributes": {
		"类型": "照片",
		"时间": "2003年5月16日 12:34",
		"地点": {
			"id": "2c2e1f4a....",// 指向一个公共实体(网络上的共享文件) 
			"label": "非洲" //可选,便于离线阅读
			},
		"作者": {
			"id": "Rb8c9d0e1f2a3b...",//指向作者的账号实体文件
			},
		"内容": "大象","草原","夕阳", //利用AI大模型识别文件内容自动添加的元数据
	},
}

为什么使用键/值对而不是传统的标签(tag)?

语义更明确

  • 标签 非洲 容易被理解为任意与“非洲”有关的概念;
  • 属性 地点=非洲 则明确了“非洲”是地理位置,而不是主题、格式、作者等其它维度。

类型检查与范围约束

  • 属性可以定义值的类型(字符串、数字、布尔、枚举等),甚至加上范围或正则验证,而标签不具备此约束;
  • 例如 时间=2003 可以强制是整数,或者 GPS坐标=41.40338,2.17403 强制是浮点数。可以利用数值对属性进行计算汇总、平均值、最大/最小值等

支持层次嵌套与继承

当“值”可以指向另一个文件的 ID/URL(相当于公共标签),就能自然构建层级或本体(ontology)关系, 如:

  • 地点=非洲,而“非洲”本身是一个资源文件,里面又带有更丰富的元数据(所属大洲、人口、气候等)
{
	"id": "2c2e1f4a....",
	"attributes": {
		"类型": "地区",
		"名称": "非洲", "Africa"
		"人口": "13.73 亿|ee9f81caf017b...." // 拉取最新的人口数据
		"面积": "11,730,000 mi²"
		"气候": "3d50087846aa5...","G2u6e86typ5..."  //指向多个说明气候的文件
			},
}
  • 作者=vicent,作者也是一个文件,里面可以带该作者的性别、生日、出生地、籍贯、职业等元数据
{
	"id": "Rb8c9d0e1f2a3b...",
	"attributes": {
		"类型": "人物",
		"性别": "男"
		"姓名": "vicent" 
		"生日": "1988-3-26"
		"出生地": "3d50087846aa5..."
			},
}

 

后续可以通过爬取文件id获得更多的语义。对于公开的知识和数据,可以作为知识库共享出来做成一个小型本体(如wikipedia),就可以让属性值更通用、更可复用。

利用AI模型构建基于属性的自动分类

如果要为文件增加一些个性化的、非官方受控词汇表中的元数据,可以先将指定的文件训练成特定模型并手动标记键值对,然后再通过这些预训练的模型去识别相关的文件内容并批量自动增加元数据,方便后续组织和查询,作为私人数据资源进行管理。

在上面的例子中,假设照片中的内容是傍晚时分草原上的大象,可以利用AI识图模型来自动给照片添加相应的键值大象,草原,夕阳 等,甚至可以对内容细分,如大象=非洲象这样更清晰的语义

模版与继承

通过将指定的文件定义为类型模板,可以将该文件中定义的元数据属性自动传递给引用它的文件(实例),快速创建相同类型的文件实例。例如在一个“照片”类模板文件中定义了 作者拍摄设备拍摄地点时间等属性后,用户就可以通过新文件中添加类型=照片引用该文件来快速创建一个照片类的文件实例,自动继承“照片”类文件定义的元数据属性,而不必为每一个同类文件手动设定相同的元数据属性。

同时,当模板类文件被多个文件引用时,即可反向查询显示所有引用该模板的文件。如果模板类文件作为属性,利用这种方式可以变相实现属性枚举值的效果。同样是上面照片的例子,当通过“照片”类模板文件创建了一批照片后,使用照片::可以列出所有的照片文件实例。

查询与索引

由于基于位置寻址的传统目录层次型文件系统被基于纯内容寻址的面向对象-关系型文件系统取代,用户不再关心 /africa/animals/elephant.jpg 这种结构,既无需命名文件,也无需通过文件目录分类、路径来访问文件,而是通过属性查询:

1)单条件查询:

# 找出所有 地点=非洲 的文件
地点=非洲
# sql语法
SELECT id FROM files
WHERE json_extract(attributes, '$.地点.id') = 'africa';

 

2)多条件组合查询:

#找出2003年在非洲拍的照片
地点=非洲 AND 类型=照片 AND 时间=2003年

#sql语法
SELECT id FROM files
WHERE json_extract(attributes,'$.地点.id')='africa'
	AND json_extract(attributes,'$.时间.year')>=2003
  AND json_extract(attributes,'$.类型.id')>='照片';

3)递归反向查询:

# sql语法
SELECT f.id, FROM files f
JOIN file_attributes a ON f.id = a.file_id
WHERE a.value = 'abc123...';

由于照片文件中的地点属性指向了“非洲”文件,因此在“非洲”文件中,可以反向查询列出所有包含地点=非洲键/值对的文件(包括且不仅限于照片),并按指定的属性排序和分组,以列表或卡片视图展示出来。

同样的例子还有对某本书、某部电影、某张音乐专辑的评论、评分,将其作为独立的文件存储而不是嵌入到书籍、电影或音乐的元数据中,通过在评论中引用来源书籍、电影或音乐文件id,这样当查看书籍、电影或音乐文件时,就可以通过反向链接看到关于此书、该电影或音乐专辑的所有评论,甚至可以递归查询该评论的作者、评论时间、评论的评论(回复)等。

3. 元数据演进与多版本

  • 不可变文档:每次修改元数据都生成一个新 JSON,以及新的 JSON 哈希;但仍旧以文件哈希作为主 Key,并在内部存储版本号或时间戳。
  • 审计日志:额外维护一张 changes(file_hash, timestamp, old_meta_hash, new_meta_hash),可回滚或查看历史。

例如上面的人口属性,其数值是变动的,每年会做一次统计更新,而文档本身是不变的,这样需要拉取最新的数据,并保留之前的数值以便查看历史人口数据的变动情况。


三、下一代 Web 架构:去路径、去中心化、去文件名

1. 内容寻址型 Web:哈希即资源

若将网站中的页面、图片、脚本等资源全部转为基于内容寻址的哈希结构,我们将得到一种“不可变、去中心化、无需路径”的 Web:

ipfs://Qm123abc...          ← 由内容生成的 CID (Content ID)

即使内容被复制到世界任何一台节点,只要哈希一致,即可无缝访问。无需关心它存在哪台服务器、哪一台设备上。

这正是 IPFS(InterPlanetary File System)、Hypercore 等新一代协议的理念。

2. 无需路径,也无需“网址”?

传统Web的路径式URL网址:

https://example.com/docs/guide.html

反映了底层是“文件夹 + 文件名”式的服务器架构:

  • https://example.com = 域名,对应某台服务器的 IP。
  • /docs/guide.html = 那台服务器上的路径,访问实际磁盘上的 /var/www/docs/guide.html 文件。

这套方式诞生于“每个网站都维护自己的文件结构”的时代。

而在内容寻址(Content Addressing)架构下:

  • example.com 对应的只是一个命名入口(可选)
  • /docs/guide.html 可以被一个语义查询如 网站内容=guide 取代
  • 实际资源通过哈希(CID)加载

用户可通过以下方式访问资源:

  • 输入语义关键词 → 查询属性索引 → 获取哈希 ID
ipfs://search?类型=docs & 主题=guide & 作者=Alice

这个请求查出满足条件的哈希 b5e1c2a4...,然后浏览器自动发起:

ipfs://b5e1c2a4...
  • 直接输入哈希 ID(如浏览器支持 ipfs:// 协议)
ipfs://Qm123abc...
  • 使用人类可读名称 → 映射到哈希(如 ENS, IPNS)

    如你所见哈希地址非常冗长难以记忆,你无法指望用户输入哈希地址来访问网站。所以可以引入 命名层(Name Layer),也就是人类可读的“名字映射系统”,但不是传统路径结构的必须部分。类似于DNS是IP地址的名字层,同样我们可以使用去中心化的 ENS/IPNS 作为哈希ID的名字层。

    维护一张独立的名称映射表作为公共目录服务(类似DNS→IP):
{
  "非洲大象图": "Qm123abc...",
  "企鹅纪录片": "Qm456xyz..."
}

当用户访问 https://alice.space/非洲大象图 时,前端即可查表转为 ipfs://Qm123abc...

这类似于 DNS,但可更去中心化(如 ENS)或私有化(局域知识库)。

用户不再输入路径,而是通过属性、语义、自然语言等方式索引资源。


四、构建基于属性索引+语义化的Web搜索引擎

构建基于属性的搜索引擎:

模块功能说明
数据存储存储文件 ID(如哈希)及其属性键值对
索引服务为属性构建倒排索引,加速搜索(如 B-tree / Inverted Index)
查询引擎解析用户查询(如“地点=非洲 AND 类型=图片”)并执行
API 接口提供 IPFS或 RPC 接口供前端调用
前端 UI可视化查询与结果呈现,支持组合查询与属性筛选

属性分类浏览:

  • 显示所有值
  • 点击某属性后自动搜索
  • 支持“类似内容”推荐(基于属性相似性)

前端展示做“搜索→哈希跳转”的中间层,浏览器和操作系统GUI本身要支持“基于标签/属性”的文件访问或网站导航,用键值对代替路径式层级。

图:自己设计的一个基于属性+语义化查询的资源管理器/浏览器UI

例如在浏览器或文件管理器里,提供类似 Gmail 筛选器或数据库条件构建器,下拉可选属性名(如 地点、作者、时间),输入时智能提示可用值(如非洲、vicent、2025年),用户可以按键、按值过滤,也可以用可视化的时间线/地图定制化检索,将组合条件保存为查询分类。

这样,传统路径式 URL 不再必要,用户与网站的交互从传统的“查路径”变成了“问内容”,查询结果会返回多个哈希,用户可选择查看或进一步筛选。最终访问的是纯粹由内容生成的 CID。

五、一个未来 Web 架构的蓝图

层级传统 Web去路径 Web / 内容寻址式 Web
资源地址路径式 URL (/docs/a.html)哈希值(如 Qm123abc...)
名称层DNS + 文件路径可读名称 → 哈希映射(如 ENS/IPNS)
访问协议HTTP(位置寻址)IPFS / Dat / Hypercore(内容寻址)
存储模型路径+文件哈希+属性+去中心化副本
查询方式路径匹配属性筛选 / 标签系统 / 自然语言搜索

六、应用前景与挑战

优势

  • 永久地址(哈希),无404问题
  • 历史数据得以永久回溯,构建全网大数据"合订本",对抗伪造虚假内容
  • 完美去重、支持分布式存储
  • 更好的语义搜索与知识管理,可以天然拓展到知识网络、去中心化系统与 AIOS
  • 无路径依赖,适合未来的 AI/ML 系统

挑战

  • 哈希id对人类不可读,需额外命名层
  • 浏览器原生支持有限,主流浏览器默认不支持 ipfs://,需要走 HTTP 网关(绕回中心化),网关如 https://ipfs.io/ipfs/... 实际上是中心化入口。
  • 本地缓存和性能优化仍需方案,去中心化场景下内容需要从多个 P2P 节点中检索,比传统 CDN 慢。
  • 考虑查询性能和效率,整个操作系统、查询接口和 UI 需重新设计
  • 权限与可见性控制:需要针对属性-键值而不是目录对来重新设计用户权限

六、结语:重新想象文件、网页与知识的存储方式

在 AI、元宇宙、知识图谱、Web3 等趋势推动下,我们亟需打破“路径 = 分类”的思维定式。文件和网页的身份不应由它们存在哪决定,而应由它们是什么决定

基于内容寻址与属性索引的新一代架构,为人类与机器共同参与的未来网络奠定了更稳固的基础:

  • 更易于自动化处理
  • 更适合语义搜索与知识组织
  • 更不易丢失与腐朽
  • 更去中心化与防篡改

正如计算机不再依赖纸张,Web 也终将超越路径。


参考文章

0
0