amazon-s3 - 存储对象时需要元数据存储
问题描述
在检查pastebin等服务的设计时,我注意到使用了两种不同的存储系统:
- 用于存储实际“粘贴”数据的对象存储(例如 Amazon S3)
- 用于存储与“粘贴”数据有关的其他内容的元数据存储;例如 - URL Hash(访问该粘贴数据),对实际粘贴数据的引用等。
我试图了解对这个元数据存储的需求。
这通常是推荐的方式吗?我们从使用元数据存储中获得了哪些特定优势?
对象存储系统是否不允许将元数据与实际对象一起存储在同一存储服务器中?
解决方案
对象存储系统通常确实允许将大量元数据附加到对象上。
但是,您的元数据受对象存储的支配。
- 您的元数据搜索仅限于对象存储允许的范围。
- 分析、通知(a-la inotify)等仅限于对象存储所允许的范围。
- 如果您想从 S3 迁移到 Google Cloud Storage,或两者兼而有之,则必须标准化您的元数据。
- 您的元数据大小限制仅限于对象存储。
- 您不能执行跨对象存储元数据(例如,引用多个粘贴数据的链接)。
- 您可能无法拥有二进制元数据。
通常,元数据既非常重要,又被业务大量使用,因此它与数据具有不同的使用特征,因此将其放在具有不同特征的存储上是有意义的。
我在任何地方都找不到 pastebin.com 是如何赚钱的,所以我不知道他们对元数据的使用量有多大,但仅仅查找、URL 和粘贴数据之间的转换,并不是你可以单独使用对象存储安全地完成的事情。
推荐阅读
- angular - *ngIf Angular 中的 DOM 更新时间问题
- java - 使用 @Before 建议向 RestTemplate 添加标题
- birt - 使用 Gemfire 缓存中的数据制作 BIRT 报告
- react-native - “react-native start”命令给出错误
- raspberry-pi3 - 树莓派上的 USB 摄像头与谷歌助手流视频集成
- javascript - 确定在网络选项卡中下载的图像大小
- javascript - 使用 Enter 按键事件和鼠标单击触发提交按钮
- node.js - 是否可以在 React App 的路由下托管 Wordpress 博客
- sql - 我可以在另一个 listagg 查询的 where 子句中使用一个 listagg 查询的输出吗
- python - 无法将零参数传递给在 Windows 命令行上运行的 Python 程序