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

时间:2015-03-14 13:26:10

标签: google-app-engine google-cloud-storage google-cloud-sql google-cloud-platform google-cloud-datastore

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

我需要处理:

  • 用户
  • 用户组
  • 图片集(在一组用户中创建,许多用户共享)
  • 实际的图像文件
  • 从小规模开始,但体系结构能够支持大规模升级(就用户和图像而言)

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

我非常感谢任何建议,我对数据库的经验很少:)

干杯!

1 个答案:

答案 0 :(得分:3)

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

如果您需要关于元数据的关系数据库的某些功能,例如JOIN s,那么Cloud SQL可能就是“更结构化的商店”所需要的;然而,由于你是从零开始设计的,因此使用像App Engine的数据存储区这样的NoSQL商店通常是非常可行的,具有可扩展性和与之相关的其他优势(并且提及“大规模升级”,将来,所以这可能与你非常相关! - )。

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

  

Google云端存储的行为与内容交付基本相似   网络(CDN)因为公开可读而无需您的工作   默认情况下,对象会缓存在Google云端存储网络中。

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