为图像选择正确的谷歌云数据存储策略



我正在为图像共享移动应用程序编写我的第一个谷歌云后端,但我很难理解要选择哪个数据存储选项。客户端将是移动应用程序,也可能是Web前端。从我目前所读到的内容来看,AppEngine 似乎是一个很好的基础设施。

我需要处理:

  • 用户
  • 用户组
  • 图像集合(在一组用户中创建,许多与所有用户共享)
  • 实际图像文件
  • 从小处着手,但架构能够支持大规模升级(就用户和图像而言)

将实际图像存储在云存储中以及有关用户、用户组图像集合的元数据存储在数据存储或 MySql 中是否有意义?特别是我在选择数据存储和 MySql 时遇到问题。

任何建议将不胜感激,我对数据库的经验很少:)

干杯!

云存储上的图像(或其他大型"不透明"数据,如视频)以及更结构化存储中有关它们的元数据,是所有类似用例的经典架构模式。

如果你在元数据上需要关系数据库的一些功能,比如JOIN,那么Cloud SQL可能是你所需要的"更结构化的存储";但是,由于你是从头开始设计的,所以使用像App Engine的Datastore这样的NoSQL存储通常是非常可行的,具有可扩展性和其他与之相关的优势(并且你确实提到了未来的"大规模升级", 所以这可能与你很相关!

这种经典架构的优点之一是,像云存储这样的对象存储可以为您提供特定对象(图像)的"服务 URL",您可以将这些对象(图像)传递给客户端,以便由 Cloud Storage 自己的服务器完成如此海量数据的服务,而不会给您的应用程序服务器带来负担。 此外,正如 https://cloud.google.com/storage/docs/website-configuration 所说,

谷歌云存储的行为本质上类似于内容交付 网络 (CDN),您无需执行任何工作,因为可公开读取 默认情况下,对象缓存在 Google Cloud Storage 网络中。

因此

,至少对于"与所有人共享"的图像(因此您可以标记为公开可读),您将获得CDN的低延迟优势,"无需您工作"。

最新更新