【问题标题】:How big is AppEngine BlobStore meta-data per entry?每个条目的 App Engine Blob Storage 元数据有多大?
【发布时间】:2012-09-27 01:43:46
【问题描述】:

我正在尝试处理在 AppEngine 的 BlobStore 中存储 blob 所需的数据开销。

假设我保存了一个 1KB 的 blob,这将在 BlobStore 和 DataStore 中分别花费我多少字节?

换句话说:实体需要多大,才值得将其移至 BlobStore?

【问题讨论】:

  • 这里有一些关于数据存储元数据的信息:developers.google.com/appengine/articles/…
  • 您要存储什么样的数据?选择 blobstore 或数据存储是一项功能性考虑。我更喜欢将数据存储用于相当小的属性。但是,当您使用 blobstore 存储小图像(图标)时,您可以使用通过 blobstore 提供的高性能图像。
  • @Adam:谢谢你的链接,但不幸的是它似乎没有谈论 BlobStore。
  • @voscausa:由于我只需要存储二进制数据并且不会以任何方式处理它,因此在这种情况下对我来说确实没有功能差异。所以,我在这里纯粹是优化成本。
  • 在 blobstore 中存储 blob 时,始终需要将 blob_key 保存在数据存储中。您还可以在数据存储实体中存储其他属性。因此访问/查询数据存储中的实体更容易,并且在大多数情况下成本更低。

标签: google-app-engine size metadata blob blobstore


【解决方案1】:

此问题的答案未记录在案,但您可以进行一些猜测以获得每个 blob 的最小开销。

创建的每个 blob 都需要一个 blob 信息和一个 blob 键。我相信,blob 密钥是 500 字节。 blob-info 具有 content_type(字符串)、创建时间(日期时间)、文件名(字符串)和大小(整数)。我们可以假设each string uses 1 more byte than their length。此外,假设您不使用可选的文件名或内容类型字段。那么 blob-info 项将分别约为 1 个字节、8 个字节、1 个字节和 8 个字节,总共 18 个字节。

因此,一个 blob 项的最小开销可能是每个 blob 至少 518 字节,存储在数据存储区中。但我们还没有完成,我们仍然需要找出最优定价.

blob 商店每月的定价为:

= $0.13/G * blob_file_size + 518 bytes * $0.24 / gig 
= blob_file_size/1024/1024*.13 + 0.00011856079

而完全在数据存储中存储的定价是:

= blob_file_size/1024/1024*.24

两者成本相同的盈亏平衡点是 1130.2 字节。 再多一点,blobstore 会更便宜,少一点,数据存储区就会更便宜。当然,这是基于 518 字节的最小开销,我敢打赌开销通常会更高,所以经验法则可能是 2kb。

【讨论】:

  • 我喜欢这种方法。它可能更大一些,因为我认为 blobinfo 也存储了某种数据哈希,并且可能还存储了谷歌内部的东西,以便他们更有效地检索 blob。所以,我认为您对 2KB 的估计听起来非常合理,这可能是我们在没有实际文档的情况下所能做的最好的事情。谢谢!
猜你喜欢
  • 2016-01-11
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 2015-09-06
相关资源
最近更新 更多