Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 使用appengine提高数据库记录检索吞吐量_Google App Engine - Fatal编程技术网

Google app engine 使用appengine提高数据库记录检索吞吐量

Google app engine 使用appengine提高数据库记录检索吞吐量,google-app-engine,Google App Engine,使用AppEngine和Python以及HRD顺序检索记录(通过一个索引字段,即递增的整数时间戳),我们在30-45秒内返回15000条记录。(使用了批处理和限制)我在两个实例上进行了并行查询的实验,但仍然获得了相同的总吞吐量 有没有一种方法可以在不更改任何代码的情况下提高这个总数?我希望我们可以多花点钱,获得更好的数据库吞吐量。(您可以为更大的前端支付更多,但这不会影响数据库吞吐量。) 我们将修改代码,将多个底层数据项存储在一个数据库记录中,但希望有一个短期的解决方法 编辑:这些是正在下载到另

使用AppEngine和Python以及HRD顺序检索记录(通过一个索引字段,即递增的整数时间戳),我们在30-45秒内返回15000条记录。(使用了批处理和限制)我在两个实例上进行了并行查询的实验,但仍然获得了相同的总吞吐量

有没有一种方法可以在不更改任何代码的情况下提高这个总数?我希望我们可以多花点钱,获得更好的数据库吞吐量。(您可以为更大的前端支付更多,但这不会影响数据库吞吐量。)

我们将修改代码,将多个底层数据项存储在一个数据库记录中,但希望有一个短期的解决方法


编辑:这些是正在下载到另一个系统的日志记录。我们将在将来修复它,并知道如何修复,但我宁愿先处理更重要的事情。

也许您可以缓存您的记录,如使用Memcache:

这肯定会加快您的应用程序访问速度。我认为AppEngine数据存储不是为速度而设计的,而是为可伸缩性而设计的。然而,Memcache是

顺便说一句,如果您意识到GAE根据您的付费提供的性能,那么您可以尝试使用以下工具设置您自己的应用程序引擎云:


两者都有积极的社区支持。我在本地环境中使用Capedawer,它仍处于测试阶段,但可以正常工作

尝试拆分不同实体组上的记录。这可能会迫使他们转到不同的物理服务器。从多个线程或实例并行读取实体组。
使用缓存mght对大型表不起作用。

移动到内存中的任何数据库。如果您有Oracle数据库,使用将使吞吐量提高数倍。

出于好奇,为什么要一次检索这么多的实体?如果你有这样的要求,那么可能是你的设计问题,而不是人力资源开发性能问题。我会支持@illia frenkel上面所说的。也许考虑设计你的应用程序包括使用<代码> MyCase< /Cord>和可缓存?既然你没有提供更多的信息,我建议你在封面下观看AppEngine数据存储,并使用GoogleIO2008中的AppEngine构建可伸缩的Web应用。还可以阅读杰夫·迪恩的《我添加了一个清晰的编辑》。我看过其他类似的报告。谷歌让你为更多的前端性能买单,所以我希望他们也能让你为更多的数据库吞吐量买单。我似乎记得过去(关于组)的讨论,增加整数时间戳可能会对检索产生负面影响,因为底层数据位于同一个“平板电脑”上这意味着获取在数据存储的不同部分之间失去了某种程度的并发性(好吧,也许我没有正确地描述它;-)注意,随着即将到来的更新,自动生成的密钥id将被分发。从发行说明“dev_appserver现在默认使用‘分散’id分配策略分配自动id。”,请注意,我可能完全错了;-)由于数据和查询的性质,Memcache在这种情况下没有帮助。我将数据下载到本地工作站并使用MongoDB,在那里我可以每秒检索30k条记录,其中包括一个复杂的查询和跨记录执行上下文处理的单线程Python代码。最终我们计划使用AWS或类似的东西。我仍然有点惊讶,无论你支付谷歌0美元并拥有一个低端前端,还是支付数百美元并拥有多个前端,数据存储每30-45秒提供15k条记录。好吧,我明白了,无论如何,为什么不使用纯MongoDB解决方案,这可能会更快。他们说MongoDB是最快的…我们知道中长期应该做什么。这个问题纯粹是短期内要做什么——我真的希望答案是多付谷歌一点钱来提高性能。我们的计划是在AppEngine看到的每一张唱片中塞进更多我们的唱片,这将有很大帮助。使用不同的实体组是类似的开发工作,这是更新代码时要考虑的问题。遗憾的是,这不是一个短期的解决方案。问题是关于appengine在谷歌的数据库。它既不是oracle,也不适用timesten。