Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GAE:跟踪NDB类型实体数量的最佳方法?_Python_Google App Engine_Google Cloud Datastore_App Engine Ndb - Fatal编程技术网

Python GAE:跟踪NDB类型实体数量的最佳方法?

Python GAE:跟踪NDB类型实体数量的最佳方法?,python,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Google App Engine,Google Cloud Datastore,App Engine Ndb,我正试图找出跟踪云数据存储中某种NDB类型实体数量的最佳方法 一种方法是,当我想知道我有多少时,获取一个查询的.count(),我知道该查询将返回所有查询,但这需要大量的数据存储小操作(看起来它与我拥有的此类实体的数量成正比)。所以这并不理想 另一种选择是在数据存储中有一个计数器,每次创建或删除实体时都会更新该计数器,但这也不理想,因为它会向我创建或销毁的每个实体添加额外的读写操作 现在看来,第二种选择是我最好的选择,所以我的问题是——你同意吗?还有其他更具成本效益的选择吗 非常感谢 PS:如果

我正试图找出跟踪云数据存储中某种NDB类型实体数量的最佳方法

一种方法是,当我想知道我有多少时,获取一个查询的
.count()
,我知道该查询将返回所有查询,但这需要大量的数据存储小操作(看起来它与我拥有的此类实体的数量成正比)。所以这并不理想

另一种选择是在数据存储中有一个计数器,每次创建或删除实体时都会更新该计数器,但这也不理想,因为它会向我创建或销毁的每个实体添加额外的读写操作

现在看来,第二种选择是我最好的选择,所以我的问题是——你同意吗?还有其他更具成本效益的选择吗

非常感谢


PS:如果用Python工作会有所不同的话。

第二种选择是可行的

其他考虑:

    如果你每秒有很多写,你可能想考虑使用
  • 为了减少数据存储写入,您可以使用cron作业以定时间隔更新数据存储(即计算自上次运行以来已创建的实体数)
  • 也可以考虑使用CRON作业来保存数据。这样做的缺点是您的memcache密钥可能会丢失,因此只有在计数不一定准确的情况下,才有可能删除
事实上,有一种更好/更便宜/更快的方式来查看您正在查找的信息,但如果您需要知道在任何给定时刻字段的确切数量,它可能无法工作,因为它一天只更新几次(即,您可以随时访问它,但它可能会过时几个小时)


GAE仪表板中的“Datastore Statistics”页面显示有关种类/实体的一些详细数据,包括“计数”数字,并且有一种通过编程方式访问这些数据的方法。请参阅此处的更多信息:

为什么需要计数?计数比抓取和计数效率更高,因此看起来他们可能已经基于这个原因构建了快速的计数(如果启用了计费,小型数据存储操作是免费的)谢谢!这正是我想要的。