Python 高效查找实体计数Google应用程序引擎
我正在寻找一种获取数据库大小的方法。现在,我在我的数据存储模型中有一个名为Python 高效查找实体计数Google应用程序引擎,python,python-2.7,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Python 2.7,Google App Engine,Google Cloud Datastore,App Engine Ndb,我正在寻找一种获取数据库大小的方法。现在,我在我的数据存储模型中有一个名为query\u all的类方法,它正是这样做的:它查询该模型的所有实体并返回它们 在我的代码中,我这样称呼它: query = MyModel.query_all(ndb.Key('MyModel', '*defaultMyModel')) count = query.count() return 'Database size: {}'.format(count) 现在这是可行的,但因为我的数据库相当大(它有大约1000
query\u all
的类方法,它正是这样做的:它查询该模型的所有实体并返回它们
在我的代码中,我这样称呼它:
query = MyModel.query_all(ndb.Key('MyModel', '*defaultMyModel'))
count = query.count()
return 'Database size: {}'.format(count)
现在这是可行的,但因为我的数据库相当大(它有大约10000个实体),每次我调用它时,它会占用我的数据存储小操作配额的20%(我每天可以执行05万次操作)
有什么方法可以让我更有效地做到这一点吗?我认为是.count()
导致了问题,而不是查询所有(…)
,但我不确定
有什么想法吗
谢谢。不要使用数据存储进行报告:
实时汇总数据并使用
当我想跟踪一些可消耗资源时:
我过去所做的是创建一个QuotaManagementService
,在创建或销毁某些资源时调用它
在每次插入/删除操作中,您都会增加/减少该资源的计数
使用GAE的一个简单方法是使用,它甚至有inc()/dec()
方法供您操作计数。您还可以异步执行此操作,这样就不会影响延迟
因为Memcache是内存中的缓存,所以只有您希望。您可能希望定期将值存储在数据存储中,可能来自后台任务。或者,您可以在应用程序更新时重新创建它
谷歌分析
您还可以将创建/删除事件输入到Google Analytics中,这样您就可以直接进入仪表板,查看有多少调用了其他详细信息,而无需为此编写太多代码
无论哪种方式,Python都可以非常透明
您可能只需要创建一个Decorator
来自动inc/dec
计数,甚至不用代码来管理它
Memcache写操作是免费的,因此我认为如果频繁的话,我不会将每个事件都写入数据存储
计数器
下面是一些直接使用数据存储
而不是Memcache
的示例代码。不要使用数据存储进行报告:
实时汇总数据并使用
当我想跟踪一些可消耗资源时:
我过去所做的是创建一个QuotaManagementService
,在创建或销毁某些资源时调用它
在每次插入/删除操作中,您都会增加/减少该资源的计数
使用GAE的一个简单方法是使用,它甚至有inc()/dec()
方法供您操作计数。您还可以异步执行此操作,这样就不会影响延迟
因为Memcache是内存中的缓存,所以只有您希望。您可能希望定期将值存储在数据存储中,可能来自后台任务。或者,您可以在应用程序更新时重新创建它
谷歌分析
您还可以将创建/删除事件输入到Google Analytics中,这样您就可以直接进入仪表板,查看有多少调用了其他详细信息,而无需为此编写太多代码
无论哪种方式,Python都可以非常透明
您可能只需要创建一个Decorator
来自动inc/dec
计数,甚至不用代码来管理它
Memcache写操作是免费的,因此我认为如果频繁的话,我不会将每个事件都写入数据存储
计数器
下面是一些直接使用
数据存储
而不是Memcache
的示例代码。Ah,好的,明白了。我真的只是想让我的删除功能正常工作,这就是我使用数据存储的原因,但我将来会尝试使用MemcacheService。谢谢。啊,好的,明白了。我真的只是想让我的删除功能正常工作,这就是我使用数据存储的原因,但我将来会尝试使用MemcacheService。谢谢