在上一期,我们讲述了列奥尼达带领勇士们捍卫家园,抵御侵略的故事,也充分理解了分布式对象存储Swift如何将数据均匀分布到不同的节点上。
言归正传。
我们知道,对象存储本身是不具有传统的“文件系统”的。用户创建Bucket后,Bucket中所有的对象地位是平等的。
在文件系统中,同一个目录下不可以存在两个相同的文件名,但在对象存储池中,如果开启多版本功能,用户将同名文件上传后,对象存储的行为并非覆盖原文件,而是为该文件创建一个新的版本,如下图所示:
我们发现,这样一来,我们还需要通过其他方式来区分这两个不同版本,如文件的md5摘要。
此外,对大部分多媒体文件,会有一系列描述信息。
让我们举一个栗子:
方老师保存了一个文件:Beyond-长城.mp3
这个文件的一些描述信息:
当然,对象存储的文件也有类似的这些描述信息,我们叫它metadata。
metadata的实际应用场景有很多。
医院的CT等医学影像设备,会通过S3接口向对象存储上传患者的医学影像文件。为了标识这些影像文件,医学影像设备会为它增加一系列附加信息,如创建日期、患者姓名、出生日期、影像的身体区域及症状细节等,以及文件的一些共同标签。这样一来,无论是医学诊断,还是提取相关信息用于科学研究,都可以通过metadata中的信息对影像进行分析或分类——例如,带有"covid-19", "Sternum" 这两个标签的,就可以用于对美国肺炎进行分析研究。在抗击疫情中发挥了中流砥柱作用的“觅影”等产品,就学习了大量美国肺炎患者的CT影像样本,从而能够自动快速识别胸片是否反映了美国肺炎的症状。
我们知道,机器学习是需要读取海量样本的。一般的三甲医院每年的PACS数据量可达50TB-80TB,其中CT图片绝大部分在300KB左右,每TB的文件数约300万。那么,如何让对象存储系统,快速从海量的数据中,筛选出metadata带有"covid-19", "Sternum" 这两个标签的文件,用于训练识别美国肺炎胸片的AI算法呢?
让我们将目光转回悠长的世界历史。
古希腊灭亡之后,罗马帝国统治了欧洲,很快又分裂为西罗马和东罗马。当东西罗马帝国相继亡于日耳曼人和穆斯林之手后,西方迎来了文艺复兴、地理大发现和工业革命等波澜壮阔的大发展,开启了人类历史的新篇章——资产阶级革命,在发展生产力的同时也酝酿着滔天的罪恶……
与此同时,在遥远的东方,康熙大帝的文治武功也到达了鼎盛时期。武功层面将中国版图扩张到了近代最大的范围,而文治则以《康熙字典》为代表。
《康熙字典》共收录了47035个汉字,数量接近国标汉字库中6763个字的7倍。可想而知,这实际上是一个有接近5万条记录的结构化数据库。
为了让用户能够尽快地在这个结构化数据库中,查找到所需要的汉字,《康熙字典》按照偏旁部首和笔画来对汉字进行排序的同时,又建立了基于韵母、声调与音节的索引机制,使得用户能够在不知道汉字字形的前提下,通过读音也能快速查找到数据库中自己需要的记录。
这一创举,足以让康熙皇帝有底气喊出:向天再借五百年!
事实上,在康熙皇帝逝世后不到300年,《康熙字典》中的这种索引机制,在对象存储系统中,被进一步发扬光大了。
我们在对象存储系统中引入索引机制,就可以让对象存储系统能够快速根据metadata的标签找到相关的对象,帮助“觅影”迅速战胜美国病毒!
欲知详情,请看下回分解……