【问题标题】:How to calculate the total number of Datastore reads/writes in an App Engine SDK local test environment?如何计算 App Engine SDK 本地测试环境中 Datastore 读取/写入的总数?
【发布时间】:2014-01-25 21:10:10
【问题描述】:

我有一个 Google App Engine 应用程序,并且想将其当前设计的估计成本与新设计进行比较。基本上我想:

  1. 在本地 App Engine Java SDK 测试环境中运行我的代码库的两个版本,
  2. 从每个数据中捕获一些关键统计信息(主要是 Datastore 读取和写入的数量),然后
  3. 编译并比较两组统计数据。

我知道“Appstats”工具,如果可能的话,使用它会很棒。但是,它有两个严重的缺点:

  1. Appstats 仅存储最近的 1000 条记录,这对于我需要运行的测试操作规模来说太小了。
  2. Appstats 提供 App Engine 的“估计成本”,而不是 Datastore 读取和写入的精确数量。长话短说,知道读取和写入的确切总数对我很有用。

当我在 Java SDK 测试环境中本地运行应用程序时,我可以打开管理控制台的数据存储查看器,并查看数据存储中每个单独实体发生的写入操作的确切数量。惊人的!

不幸的是,我正在处理数以万计或数十万个实体,而数据存储查看器每个浏览器页面仅显示 10 个。 :( 所以,不必编写一个骇人听闻的屏幕抓取解决方案......我需要对数据存储查看器用来显示这些数字的信息进行一些编程访问。假设这种编程访问完全可用,那就太好了还提供了其他与 Datastore 相关的统计信息(例如读取)。

是否有任何此类对本地 SDK 环境元数据的编程访问可用?或者,是否有人有完全不同的方法来从本地测试运行中捕获此类统计信息?

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    数据存储

    这实际上非常简单,可以逐个实体地计算。

    存储一个平均完全填充的记录,查看控制台并查看它进行了多少写入,这就是您可以做的所有事情来查看写入内容。

    减少写入的唯一方法是将属性标记为“未索引”。通过这样做,我将几个实体从 8 个写入减少到 2 个。

    阅读也很容易,只需阅读您需要的内容并将您需要的内容多次放入memcache,并且仅在您真正需要时才坚持下去。

    图片

    提供来自ImageService 的免费图片。

    二进制文件/Blob

    从 Cloud Store 提供二进制文件,您只需支付存储费用,无需读取/写入费用或带宽费用。

    【讨论】:

    • 谢谢。我希望避免基于“(num_of_entities * writes_per_entity_type)”公式来估计写入,因为我们的实体填充的密集程度或稀疏程度存在很大差异......因此我对第二个没有信心该公式的变量。但是,这可能是最方便的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2013-05-17
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多