高效查找实体计数Google App Engin

2024-10-01 17:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找一种方法来获取我数据库的大小。现在,我在我的数据存储模型中有一个名为query_all的类方法,它可以查询该模型的所有实体并返回它们。在

在我的代码里,我这样称呼它:

query = MyModel.query_all(ndb.Key('MyModel', '*defaultMyModel'))
count = query.count()
return 'Database size: {}'.format(count)

现在这个方法可行,但是因为我的数据库非常大(它有大约10000个实体),每次我调用它都会占用我的数据存储小操作配额的20%(我每天可以执行0.5万个操作)。在

有没有办法让我更有效地完成这项工作?我认为是.count()引起了问题,而不是{},但我不确定。在

有什么想法吗?在

谢谢。在


Tags: 数据方法key代码模型实体数据库return
1条回答
网友
1楼 · 发布于 2024-10-01 17:25:30

不要使用数据存储进行报告:

实时汇总数据并使用Memcache。在

当我想跟踪一些消耗资源时:

我过去所做的是创建一个QuotaManagementService,当我创建或销毁某个资源时我会调用它。在

在每次插入/删除操作中,都要增加/减少该资源的计数。在

使用GAE的一个简单方法是使用MemcacheService,它甚至有inc()/dec()方法来操作计数。您也可以执行此异步操作,这样它就不会影响延迟。在

因为Memcache是内存中的缓存,所以只有您想persist the information some how。您可能希望定期将值存储在数据存储中,可能来自后台任务。或者,您可以在应用程序更新时重新创建它。在

谷歌分析

你也可以将create/delete事件注入到googleanalytics中,这样你就可以直接进入仪表板,看看已经打了多少个电话,而其他细节你也不必为此编写太多代码。在

不管怎样,使用Python

您可能只需创建一个Decorator来自动inc/dec计数,甚至不用代码来管理它。在

Memcache写入是免费的,所以我不认为我会将每个事件都写入DataStore计数器,如果它们是频繁的。在

下面是一些示例代码,用于直接使用DataStore,而不是high volume writes to a counter的{}。在

相关问题 更多 >

    热门问题