NDB与DB(在High Replication数据存储区上)的速度比较是什么?

时间:2012-03-31 07:00:08

标签: google-app-engine google-cloud-datastore app-engine-ndb

取自Python NDB Overview

  

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

     

...

     

写入数据的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是否提供任何速度优势疑问?

2 个答案:

答案 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应该是一个明确的胜利。