首页 > 解决方案 > 存储对象时需要元数据存储

问题描述

在检查pastebin等服务的设计时,我注意到使用了两种不同的存储系统:

  1. 用于存储实际“粘贴”数据的对象存储(例如 Amazon S3)
  2. 用于存储与“粘贴”数据有关的其他内容的元数据存储;例如 - URL Hash(访问该粘贴数据),对实际粘贴数据的引用等。

我试图了解对这个元数据存储的需求。

这通常是推荐的方式吗?我们从使用元数据存储中获得了哪些特定优势?

对象存储系统是否不允许将元数据与实际对象一起存储在同一存储服务器中?

标签: amazon-s3storagedistributed-computingdistributed-system

解决方案


对象存储系统通常确实允许将大量元数据附加到对象上。

但是,您的元数据受对象存储的支配。

  • 您的元数据搜索仅限于对象存储允许的范围。
  • 分析、通知(a-la inotify)等仅限于对象存储所允许的范围。
  • 如果您想从 S3 迁移到 Google Cloud Storage,或两者兼而有之,则必须标准化您的元数据。
  • 您的元数据大小限制仅限于对象存储。
  • 您不能执行跨对象存储元数据(例如,引用多个粘贴数据的链接)。
  • 您可能无法拥有二进制元数据。

通常,元数据既非常重要,又被业务大量使用,因此它与数据具有不同的使用特征,因此将其放在具有不同特征的存储上是有意义的。

我在任何地方都找不到 pastebin.com 是如何赚钱的,所以我不知道他们对元数据的使用量有多大,但仅仅查找、URL 和粘贴数据之间的转换,并不是你可以单独使用对象存储安全地完成的事情。


推荐阅读