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 对App Engine数据存储的并发写入的可扩展性_Google App Engine - Fatal编程技术网

Google app engine 对App Engine数据存储的并发写入的可扩展性

Google app engine 对App Engine数据存储的并发写入的可扩展性,google-app-engine,Google App Engine,我正在考虑将几十个并发作业写入同一个数据存储模型。数据存储的扩展是否与并发put的数量无关?数据存储每秒只能处理对任何给定实体的这么多写入操作。尝试过快写入特定实体会导致争用,如中所述。如果希望实体每秒更新一次或两次以上,本文建议对其进行分片 数据存储针对读取进行了优化,但是如果您的并发作业正在写入不同的实体(即使它们在同一模型中),那么您的应用程序可能会扩展—这将取决于您的请求处理程序执行所需的时间。对于实体类型没有争用—只针对实体组(具有相同父实体的实体)。既然您说您每次都在向新实体写入,那

我正在考虑将几十个并发作业写入同一个数据存储模型。数据存储的扩展是否与并发put的数量无关?

数据存储每秒只能处理对任何给定实体的这么多写入操作。尝试过快写入特定实体会导致争用,如中所述。如果希望实体每秒更新一次或两次以上,本文建议对其进行分片


数据存储针对读取进行了优化,但是如果您的并发作业正在写入不同的实体(即使它们在同一模型中),那么您的应用程序可能会扩展—这将取决于您的请求处理程序执行所需的时间。

对于实体类型没有争用—只针对实体组(具有相同父实体的实体)。既然您说您每次都在向新实体写入,那么您应该能够任意扩展


然而,还有一个微妙之处:如果插入实体的速率很高(每秒数百个),并且您使用默认的自动生成ID,您可以获得“热平板电脑”,这可能会导致争用。如果您希望插入率如此之高,您应该使用密钥名称,并选择一个不会像自动生成ID那样群集的密钥-例如电子邮件地址或随机生成的UUID。

在我的情况下,我实际上并没有碰它相同的实体。每个任务都在创建一个新实体。因此争用将处于更高的种类级别。我正在不断创建新实体和删除旧实体。不断创建新实体和删除旧实体不会导致实体级别争用,尽管索引更新争用可能会降低写入速度。以下两个部分es详细介绍了如何执行写操作:这个答案是正确的,只是争用是在实体组级别,而不是实体级别。我将试验密钥名称……现在,我将在批处理调用中执行多达450次put。批处理put不是问题,重要的是顺序id的put操作的速率。就这样我理解正确-您的意思是批量放置不会受到您在回答中描述的性能问题的影响吗?这与我迄今为止所做的性能分析是一致的。使用随机UUID并不能改善批量放置调用。正确。它们的开销比单个实体的放置略高,但远不如单个实体的放置您存储的每个实体都有一个单独的put。这是什么意思“选择一个不群集的密钥”?群集算法在任何地方都有描述吗?它是基于类似字母顺序的东西吗?也就是说,如果您必须高速放置一组实体,那么不要给它们的密钥ID所有相同的前缀?