14

取自Python NDB 概述

当应用程序读取一个实体时,该实体会被自动缓存;这为经常读取的实体提供了快速(且廉价)的读取。

...

写入数据的 NDB 函数(例如 put())在缓存失效后返回;Apply 阶段是异步发生的。

在 Youtube 上观看,Google I/O 2011: More 9s Please: Under the Covers of the High Replication Datastore,在 13:11-ish,平均延迟为:

主从:

  • 读取:15ms
  • 写入:20ms

高复制:

  • 读取:15ms
  • 写入:45 毫秒

从应用程序的角度来看,NDB 对这些速度的影响有多大?

编辑:特别好奇时间统计(以毫秒为单位)。

额外的信用:我还听说尼克约翰逊提到每个查询大约需要160 毫秒(在 2009 年)[link]NDB 是否为查询提供任何速度优势?

4

2 回答 2

18

您必须自己进行基准测试-时间取决于许多因素,例如实体大小和复杂性:更多属性或重复属性中的更多项目-> 更复杂。

您引用的数字确实很旧,可能不再反映现实;大多数用户的经验是,平均而言,HRD 并不比 M/S 慢(部分原因是 M/S 具有更高的可变性)。

这里有一些 NDB 基准测试:http ://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - 但它没有将数字与旧数据库进行比较。

您可以使用 Appstats 在真实应用程序中快速进行一些操作计时。

于 2012-03-31T15:22:29.890 回答
10

从应用程序的角度来看,使用 NDB 可以显着加快数据存储调用。

READ:最好的情况,从实例缓存或内存缓存中读取。在大多数情况下,这将比从数据存储中读取要快得多。

WRITE:NDB put/write 方法在缓存失效后立即返回。这比普通写入要快得多。因此,从您的应用程序的角度来看,它要快得多。然而,实际的写入是异步执行的。

NDB vs DB(高复制):从应用程序的角度来看,就速度而言,NDB 应该是一个明显的胜利。

于 2012-03-31T08:06:11.717 回答