我有一个 Google App Engine 应用程序,并且想将其当前设计与新设计的估计成本进行比较。基本上我想:
- 在本地 App Engine Java SDK 测试环境中运行我的代码库的两个版本,
- 从每个数据存储中捕获一些关键统计信息(主要是数据存储区读取和写入的数量),然后
- 编译并比较两组统计数据。
我知道“Appstats”工具,如果可能的话,使用它会很棒。然而,它有两个严重的缺点:
- Appstats 仅存储最近的 1,000 条记录,这对于我需要运行的测试操作的规模来说太小了。
- Appstats 提供 App Engine 的“估计成本”,而不是数据存储区读取和写入的精确数量。长话短说,了解读取和写入的确切总数对我很有用。
当我在 Java SDK 测试环境中本地运行应用程序时,我可以调出管理控制台的数据存储查看器,并查看数据存储中每个单独实体发生的写入操作的确切数量。惊人的!
不幸的是,我正在处理数万或数十万个实体,而数据存储查看器每个浏览器页面仅显示 10 个实体。 :( 因此,不需要编写一个黑客的屏幕抓取解决方案...我需要对数据存储查看器用来显示这些数字的信息进行一些编程访问。假设这种编程访问完全可用,那么它还提供其他与数据存储相关的统计信息(例如读取)就太好了。
是否有任何此类对本地 SDK 环境元数据的编程访问可用?或者,是否有人有完全不同的方法来从本地测试运行中捕获此类统计数据?
最佳答案
数据存储
这实际上在逐个实体的基础上计算起来非常简单。
存储一条平均完全填充的记录,查看控制台并查看它执行了多少写入操作,这就是您可以做的所有操作来查看写入内容。
减少写入的唯一方法是将属性标记为“未索引”。通过这样做,我将几个实体的写入次数从 8 次减少到 2 次。
读取也很容易,只读取您需要的内容,并将您需要的内容多次放入 memcache
中,并且仅在您真正需要时才保留它。
图片
从 ImageService
提供图像,这些图像是免费的。
二进制文件/Blob
从云存储提供二进制文件,您只需支付存储费用,无需支付读/写费用或带宽费用。
关于java - 如何计算App Engine SDK本地测试环境中Datastore读/写的总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984275/