当应用程序读取实体时,该实体自动缓存; 这为经常读取的实体提供了快速(且廉价)的读取。
...
写入数据的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
- 写: 45ms
从应用程序的角度来看,NDB对这些速度有多大影响?
编辑:特别好奇时间统计信息(以毫秒为单位)。
额外信用:我也听过尼克约翰逊提到每个 160ms 的查询(2009年)[link]
NDB是否提供任何速度优势疑问?
答案 0 :(得分:18)
您必须自己进行基准测试 - 时间取决于许多因素,例如实体大小和复杂性:重复属性中的更多属性或更多项目 - >更复杂。
你引用的数字真的很旧,可能不再反映现实;大多数用户的经验是,平均而言HRD并不慢于M / S(部分原因是M / S的可变性要高得多)。
这里有一些NDB基准测试:http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - 但它没有将数字与旧数据库进行比较。
您可以使用Appstats在真实应用中快速完成一些操作时间。
答案 1 :(得分:10)
从应用程序的角度来看,使用NDB可以显着缩短您的数据存储区调用速度。
READ:最佳案例场景,读取是从实例缓存或memcache进行的。在大多数情况下,这比从数据存储区读取要快得多。
WRITE:NDB put / write方法在缓存失效后立即返回。这比正常写入更快。所以从你的应用程序的角度来看,它的速度要快得多。但是,实际写入是异步执行的。
NDB与DB(高复制):从应用程序的角度来看,NDB应该是一个明确的胜利。